summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r300/r300_state.c
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2011-03-12 06:11:18 +0100
committerMarek Olšák <maraeo@gmail.com>2011-03-12 07:56:33 +0100
commit4b92c688a45480027390764b06077105298666c3 (patch)
treecc3f8a13d2082ec9f145bdfc422cd43fc272cc21 /src/gallium/drivers/r300/r300_state.c
parente4707604ab46252d2e010906124775d3300f0be1 (diff)
downloadexternal_mesa3d-4b92c688a45480027390764b06077105298666c3.zip
external_mesa3d-4b92c688a45480027390764b06077105298666c3.tar.gz
external_mesa3d-4b92c688a45480027390764b06077105298666c3.tar.bz2
r300g: implement fragment color clamping in the shader
This finishes the implementation of the fragment color clamp control for ARB_color_buffer_float. I don't wanna keep this stuff in a branch...
Diffstat (limited to 'src/gallium/drivers/r300/r300_state.c')
-rw-r--r--src/gallium/drivers/r300/r300_state.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 49c2b88..f0830e1 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -195,6 +195,8 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
boolean clamp = TRUE;
CB_LOCALS;
+ blend->state = *state;
+
if (state->rt[0].blend_enable)
{
unsigned eqRGB = state->rt[0].rgb_func;
@@ -377,6 +379,10 @@ static void r300_bind_blend_state(struct pipe_context* pipe,
struct r300_context* r300 = r300_context(pipe);
UPDATE_STATE(state, r300->blend_state);
+
+ if (r300->fs.state && r300_pick_fragment_shader(r300)) {
+ r300_mark_fs_code_dirty(r300);
+ }
}
/* Free blend state. */