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