diff options
author | Marek Olšák <[email protected]> | 2009-11-14 22:14:42 +0100 |
---|---|---|
committer | Corbin Simpson <[email protected]> | 2009-11-20 14:47:31 -0800 |
commit | f4041b37e2d305cff0a97eb836250e9f8b1840a8 (patch) | |
tree | 7531327dfeca472f5a32b728eee665b1ae783a03 /src/gallium/drivers/r300/r300_state.c | |
parent | 06ec216d191e160494dd0a922ab0395418a78402 (diff) |
r300g: fix rectangle textures on r3xx
Adapted from Maciej Cencora's patch.
Diffstat (limited to 'src/gallium/drivers/r300/r300_state.c')
-rw-r--r-- | src/gallium/drivers/r300/r300_state.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index d1eced61db1..00f10ffd73c 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -571,6 +571,7 @@ static void r300_set_sampler_textures(struct pipe_context* pipe, struct pipe_texture** texture) { struct r300_context* r300 = r300_context(pipe); + boolean is_r500 = r300_screen(r300->context.screen)->caps->is_r500; int i; /* XXX magic num */ @@ -585,6 +586,13 @@ static void r300_set_sampler_textures(struct pipe_context* pipe, pipe_texture_reference((struct pipe_texture**)&r300->textures[i], texture[i]); r300->dirty_state |= (R300_NEW_TEXTURE << i); + + /* R300-specific - set the texrect factor in a fragment shader */ + if (!is_r500 && r300->textures[i]->is_npot) { + /* XXX It would be nice to re-emit just 1 constant, + * XXX not all of them */ + r300->dirty_state |= R300_NEW_FRAGMENT_SHADER_CONSTANTS; + } } } |