sp_state_blend.c revision e6eca5c37e13fd0f9100de127075b1bbed0821c0
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 "imports.h"
317658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
327658a0208aa31f1443be6eaa720a383b34e2bbb3Brian#include "sp_context.h"
337658a0208aa31f1443be6eaa720a383b34e2bbb3Brian#include "sp_state.h"
347658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
357658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
367658a0208aa31f1443be6eaa720a383b34e2bbb3Brianvoid softpipe_set_blend_state( struct pipe_context *pipe,
377658a0208aa31f1443be6eaa720a383b34e2bbb3Brian			     const struct pipe_blend_state *blend )
387658a0208aa31f1443be6eaa720a383b34e2bbb3Brian{
397658a0208aa31f1443be6eaa720a383b34e2bbb3Brian   struct softpipe_context *softpipe = softpipe_context(pipe);
407658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
417658a0208aa31f1443be6eaa720a383b34e2bbb3Brian   softpipe->blend = *blend;
427658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
43a380f98b6cc1da78d0845746ab86c3490a800126Brian   softpipe->dirty |= SP_NEW_BLEND;
447658a0208aa31f1443be6eaa720a383b34e2bbb3Brian}
457658a0208aa31f1443be6eaa720a383b34e2bbb3Brian
46ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
47284efcfc27aaeb447e0898ae3342e9fee20c584aBrianvoid softpipe_set_blend_color( struct pipe_context *pipe,
48284efcfc27aaeb447e0898ae3342e9fee20c584aBrian			     const struct pipe_blend_color *blend_color )
49284efcfc27aaeb447e0898ae3342e9fee20c584aBrian{
50284efcfc27aaeb447e0898ae3342e9fee20c584aBrian   struct softpipe_context *softpipe = softpipe_context(pipe);
51284efcfc27aaeb447e0898ae3342e9fee20c584aBrian
52284efcfc27aaeb447e0898ae3342e9fee20c584aBrian   softpipe->blend_color = *blend_color;
53284efcfc27aaeb447e0898ae3342e9fee20c584aBrian
54a380f98b6cc1da78d0845746ab86c3490a800126Brian   softpipe->dirty |= SP_NEW_BLEND;
55284efcfc27aaeb447e0898ae3342e9fee20c584aBrian}
56284efcfc27aaeb447e0898ae3342e9fee20c584aBrian
57284efcfc27aaeb447e0898ae3342e9fee20c584aBrian
58ecfa794037e8be351ecfec0229d1e3b1677ae369Brian/** XXX move someday?  Or consolidate all these simple state setters
59ecfa794037e8be351ecfec0229d1e3b1677ae369Brian * into one file.
60ecfa794037e8be351ecfec0229d1e3b1677ae369Brian */
61ecfa794037e8be351ecfec0229d1e3b1677ae369Brianvoid
62ecfa794037e8be351ecfec0229d1e3b1677ae369Briansoftpipe_set_depth_test_state(struct pipe_context *pipe,
63ecfa794037e8be351ecfec0229d1e3b1677ae369Brian                              const struct pipe_depth_state *depth)
64ecfa794037e8be351ecfec0229d1e3b1677ae369Brian{
65ecfa794037e8be351ecfec0229d1e3b1677ae369Brian   struct softpipe_context *softpipe = softpipe_context(pipe);
66ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
67ecfa794037e8be351ecfec0229d1e3b1677ae369Brian   softpipe->depth_test = *depth;
68ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
69a380f98b6cc1da78d0845746ab86c3490a800126Brian   softpipe->dirty |= SP_NEW_DEPTH_TEST;
70ecfa794037e8be351ecfec0229d1e3b1677ae369Brian}
71ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
72ecfa794037e8be351ecfec0229d1e3b1677ae369Brianvoid
73ecfa794037e8be351ecfec0229d1e3b1677ae369Briansoftpipe_set_alpha_test_state(struct pipe_context *pipe,
74ecfa794037e8be351ecfec0229d1e3b1677ae369Brian                              const struct pipe_alpha_test_state *alpha)
75ecfa794037e8be351ecfec0229d1e3b1677ae369Brian{
76ecfa794037e8be351ecfec0229d1e3b1677ae369Brian   struct softpipe_context *softpipe = softpipe_context(pipe);
77ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
78ecfa794037e8be351ecfec0229d1e3b1677ae369Brian   softpipe->alpha_test = *alpha;
79ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
80a380f98b6cc1da78d0845746ab86c3490a800126Brian   softpipe->dirty |= SP_NEW_ALPHA_TEST;
81ecfa794037e8be351ecfec0229d1e3b1677ae369Brian}
82ecfa794037e8be351ecfec0229d1e3b1677ae369Brian
83e6eca5c37e13fd0f9100de127075b1bbed0821c0Brianvoid
84e6eca5c37e13fd0f9100de127075b1bbed0821c0Briansoftpipe_set_stencil_state(struct pipe_context *pipe,
85e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian                           const struct pipe_stencil_state *stencil)
86e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian{
87e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian   struct softpipe_context *softpipe = softpipe_context(pipe);
88e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian
89e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian   softpipe->stencil = *stencil;
90e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian
91e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian   softpipe->dirty |= SP_NEW_STENCIL;
92e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian}
93e6eca5c37e13fd0f9100de127075b1bbed0821c0Brian
94