sp_state_blend.c revision a6c0c5532f7bfa50ae54c36cf4d74ad4b9f926f8
17658a0208aa31f1443be6eaa720a383b34e2bbb3Brian/**************************************************************************
27658a0208aa31f1443be6eaa720a383b34e2bbb3Brian *
37658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
47658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * All Rights Reserved.
57658a0208aa31f1443be6eaa720a383b34e2bbb3Brian *
67658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * Permission is hereby granted, free of charge, to any person obtaining a
77658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * copy of this software and associated documentation files (the
87658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * "Software"), to deal in the Software without restriction, including
97658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * without limitation the rights to use, copy, modify, merge, publish,
107658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * distribute, sub license, and/or sell copies of the Software, and to
117658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * permit persons to whom the Software is furnished to do so, subject to
127658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * the following conditions:
137658a0208aa31f1443be6eaa720a383b34e2bbb3Brian *
147658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * The above copyright notice and this permission notice (including the
157658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * next paragraph) shall be included in all copies or substantial portions
167658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * of the Software.
177658a0208aa31f1443be6eaa720a383b34e2bbb3Brian *
187658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
197658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
207658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
217658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
227658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
237658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
247658a0208aa31f1443be6eaa720a383b34e2bbb3Brian * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
257658a0208aa31f1443be6eaa720a383b34e2bbb3Brian *
267658a0208aa31f1443be6eaa720a383b34e2bbb3Brian **************************************************************************/
277658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
287658a0208aa31f1443be6eaa720a383b34e2bbb3Brian/* Authors:  Keith Whitwell <keith@tungstengraphics.com>
297658a0208aa31f1443be6eaa720a383b34e2bbb3Brian */
307658a0208aa31f1443be6eaa720a383b34e2bbb3Brian#include "sp_context.h"
317658a0208aa31f1443be6eaa720a383b34e2bbb3Brian#include "sp_state.h"
327658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
33c0bf7322088715bb411068c3d631b0c4be8cdff5Zack Rusinvoid *
349780327c5d95586a88fce94d7b47342355ead118Zack Rusinsoftpipe_create_blend_state(struct pipe_context *pipe,
359780327c5d95586a88fce94d7b47342355ead118Zack Rusin                            const struct pipe_blend_state *blend)
369780327c5d95586a88fce94d7b47342355ead118Zack Rusin{
37c8650b087440c7ba5ad0d8652dc916852e55bc1dZack Rusin   /* means that we just want pipe_blend_state and don't have
38c8650b087440c7ba5ad0d8652dc916852e55bc1dZack Rusin    * anything specific */
39c8650b087440c7ba5ad0d8652dc916852e55bc1dZack Rusin   return 0;
409780327c5d95586a88fce94d7b47342355ead118Zack Rusin}
417658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
429780327c5d95586a88fce94d7b47342355ead118Zack Rusinvoid softpipe_bind_blend_state( struct pipe_context *pipe,
43c0bf7322088715bb411068c3d631b0c4be8cdff5Zack Rusin                                void *blend )
447658a0208aa31f1443be6eaa720a383b34e2bbb3Brian{
457658a0208aa31f1443be6eaa720a383b34e2bbb3Brian   struct softpipe_context *softpipe = softpipe_context(pipe);
467658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
47c0bf7322088715bb411068c3d631b0c4be8cdff5Zack Rusin   softpipe->blend = (const struct pipe_blend_state *)blend;
487658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
49a380f98b6cc1da78d0845746ab86c3490a800126Brian   softpipe->dirty |= SP_NEW_BLEND;
507658a0208aa31f1443be6eaa720a383b34e2bbb3Brian}
517658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
529780327c5d95586a88fce94d7b47342355ead118Zack Rusinvoid softpipe_delete_blend_state(struct pipe_context *pipe,
53c0bf7322088715bb411068c3d631b0c4be8cdff5Zack Rusin                                 void *blend )
549780327c5d95586a88fce94d7b47342355ead118Zack Rusin{
55c8650b087440c7ba5ad0d8652dc916852e55bc1dZack Rusin   /* do nothing */
569780327c5d95586a88fce94d7b47342355ead118Zack Rusin}
579780327c5d95586a88fce94d7b47342355ead118Zack Rusin
58ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
59284efcfc27aaeb447e0898ae3342e9fee20c584aBrianvoid softpipe_set_blend_color( struct pipe_context *pipe,
60284efcfc27aaeb447e0898ae3342e9fee20c584aBrian			     const struct pipe_blend_color *blend_color )
61284efcfc27aaeb447e0898ae3342e9fee20c584aBrian{
62284efcfc27aaeb447e0898ae3342e9fee20c584aBrian   struct softpipe_context *softpipe = softpipe_context(pipe);
63284efcfc27aaeb447e0898ae3342e9fee20c584aBrian
64284efcfc27aaeb447e0898ae3342e9fee20c584aBrian   softpipe->blend_color = *blend_color;
65284efcfc27aaeb447e0898ae3342e9fee20c584aBrian
66a380f98b6cc1da78d0845746ab86c3490a800126Brian   softpipe->dirty |= SP_NEW_BLEND;
67284efcfc27aaeb447e0898ae3342e9fee20c584aBrian}
68284efcfc27aaeb447e0898ae3342e9fee20c584aBrian
69284efcfc27aaeb447e0898ae3342e9fee20c584aBrian
70ecfa794037e8be351ecfec0229d1e3b1677ae369Brian/** XXX move someday?  Or consolidate all these simple state setters
71ecfa794037e8be351ecfec0229d1e3b1677ae369Brian * into one file.
72ecfa794037e8be351ecfec0229d1e3b1677ae369Brian */
73ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
74ecfa794037e8be351ecfec0229d1e3b1677ae369Brianvoid
75ecfa794037e8be351ecfec0229d1e3b1677ae369Briansoftpipe_set_alpha_test_state(struct pipe_context *pipe,
76ecfa794037e8be351ecfec0229d1e3b1677ae369Brian                              const struct pipe_alpha_test_state *alpha)
77ecfa794037e8be351ecfec0229d1e3b1677ae369Brian{
78ecfa794037e8be351ecfec0229d1e3b1677ae369Brian   struct softpipe_context *softpipe = softpipe_context(pipe);
79ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
80ecfa794037e8be351ecfec0229d1e3b1677ae369Brian   softpipe->alpha_test = *alpha;
81ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
82a380f98b6cc1da78d0845746ab86c3490a800126Brian   softpipe->dirty |= SP_NEW_ALPHA_TEST;
83ecfa794037e8be351ecfec0229d1e3b1677ae369Brian}
84ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
85a6c0c5532f7bfa50ae54c36cf4d74ad4b9f926f8Zack Rusinvoid *
86d6ac959833a8e40a27907940969c622692f749b1Zack Rusinsoftpipe_create_depth_stencil_state(struct pipe_context *pipe,
87d6ac959833a8e40a27907940969c622692f749b1Zack Rusin                              const struct pipe_depth_stencil_state *depth_stencil)
88d6ac959833a8e40a27907940969c622692f749b1Zack Rusin{
89a6c0c5532f7bfa50ae54c36cf4d74ad4b9f926f8Zack Rusin   return 0;
90d6ac959833a8e40a27907940969c622692f749b1Zack Rusin}
91d6ac959833a8e40a27907940969c622692f749b1Zack Rusin
92e6eca5c37e13fd0f9100de127075b1bbed0821c0Brianvoid
93d6ac959833a8e40a27907940969c622692f749b1Zack Rusinsoftpipe_bind_depth_stencil_state(struct pipe_context *pipe,
94a6c0c5532f7bfa50ae54c36cf4d74ad4b9f926f8Zack Rusin                                  void *depth_stencil)
95e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian{
96e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian   struct softpipe_context *softpipe = softpipe_context(pipe);
97e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian
98a6c0c5532f7bfa50ae54c36cf4d74ad4b9f926f8Zack Rusin   softpipe->depth_stencil = (const struct pipe_depth_stencil_state *)depth_stencil;
99e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian
100d6ac959833a8e40a27907940969c622692f749b1Zack Rusin   softpipe->dirty |= SP_NEW_DEPTH_STENCIL;
101e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian}
102e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian
103d6ac959833a8e40a27907940969c622692f749b1Zack Rusinvoid
104a6c0c5532f7bfa50ae54c36cf4d74ad4b9f926f8Zack Rusinsoftpipe_delete_depth_stencil_state(struct pipe_context *pipe, void *depth)
105d6ac959833a8e40a27907940969c622692f749b1Zack Rusin{
106a6c0c5532f7bfa50ae54c36cf4d74ad4b9f926f8Zack Rusin   /* do nothing */
107d6ac959833a8e40a27907940969c622692f749b1Zack Rusin}
108