summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r300
diff options
context:
space:
mode:
authorCorbin Simpson <[email protected]>2009-11-20 14:55:22 -0800
committerCorbin Simpson <[email protected]>2009-11-20 14:56:13 -0800
commit6a95996abb33a040f957ffedf3824afcc98a9e71 (patch)
treed7b0cf8d496af54b2c30b9484ad29876ec471ac9 /src/gallium/drivers/r300
parentf4041b37e2d305cff0a97eb836250e9f8b1840a8 (diff)
r300g: Texrect factor cleanup.
(0, 0, 0, 1) is a much saner default value, and texrect factors only need to be (1/s, 1/t, 0, 1).
Diffstat (limited to 'src/gallium/drivers/r300')
-rw-r--r--src/gallium/drivers/r300/r300_emit.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index 0bdf58202f0..37e75ba0616 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -129,7 +129,7 @@ static const float * get_shader_constant(
struct rc_constant * constant,
struct r300_constant_buffer * externals)
{
- static float vec[4] = { 0.0, 0.0, 0.0, 0.0 };
+ static float vec[4] = { 0.0, 0.0, 0.0, 1.0 };
struct pipe_texture *tex;
switch(constant->Type) {
@@ -140,26 +140,30 @@ static const float * get_shader_constant(
return constant->u.Immediate;
case RC_CONSTANT_STATE:
- switch (constant->u.State[0])
- {
- /* R3xx-specific */
+ switch (constant->u.State[0]) {
+ /* Factor for converting rectangle coords to
+ * normalized coords. Should only show up on non-r500. */
case RC_STATE_R300_TEXRECT_FACTOR:
tex = &r300->textures[constant->u.State[1]]->tex;
vec[0] = 1.0 / tex->width[0];
vec[1] = 1.0 / tex->height[0];
- vec[2] = vec[3] = 1;
break;
default:
- assert(0);
+ debug_printf("r300: Implementation error: "
+ "Unknown RC_CONSTANT type %d\n", constant->u.State[0]);
}
- return vec;
+ break;
default:
- debug_printf("r300: Implementation error: Unhandled constant type %i\n",
- constant->Type);
- return vec;
+ debug_printf("r300: Implementation error: "
+ "Unhandled constant type %d\n", constant->Type);
}
+
+ /* This should either be (0, 0, 0, 1), which should be a relatively safe
+ * RGBA or STRQ value, or it could be one of the RC_CONSTANT_STATE
+ * state factors. */
+ return vec;
}
/* Convert a normal single-precision float into the 7.16 format