From 3262554bb375230a39e155ad712740bdcd657d4c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 28 May 2010 01:39:27 +0200 Subject: [PATCH] r300g/swtcl: fix WPOS There you are! r300->viewport_state is undefined when using SW TCL. Piglit score (r300g.tests): HW TCL: 231/275 SW TCL: 233/275 --- src/gallium/drivers/r300/r300_emit.c | 13 ++++++------- src/gallium/drivers/r300/r300_vs_draw.c | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index 123b084b2b4..a55a545e1c9 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -134,7 +134,6 @@ static const float * get_rc_constant_state( struct r300_context * r300, struct rc_constant * constant) { - struct r300_viewport_state* viewport = r300->viewport_state.state; struct r300_textures_state* texstate = r300->textures_state.state; static float vec[4] = { 0.0, 0.0, 0.0, 1.0 }; struct pipe_resource *tex; @@ -151,15 +150,15 @@ static const float * get_rc_constant_state( break; case RC_STATE_R300_VIEWPORT_SCALE: - vec[0] = viewport->xscale; - vec[1] = viewport->yscale; - vec[2] = viewport->zscale; + vec[0] = r300->viewport.scale[0]; + vec[1] = r300->viewport.scale[1]; + vec[2] = r300->viewport.scale[2]; break; case RC_STATE_R300_VIEWPORT_OFFSET: - vec[0] = viewport->xoffset; - vec[1] = viewport->yoffset; - vec[2] = viewport->zoffset; + vec[0] = r300->viewport.translate[0]; + vec[1] = r300->viewport.translate[1]; + vec[2] = r300->viewport.translate[2]; break; default: diff --git a/src/gallium/drivers/r300/r300_vs_draw.c b/src/gallium/drivers/r300/r300_vs_draw.c index 5858492a0a8..d64040b8911 100644 --- a/src/gallium/drivers/r300/r300_vs_draw.c +++ b/src/gallium/drivers/r300/r300_vs_draw.c @@ -352,7 +352,7 @@ void r300_draw_init_vertex_shader(struct draw_context *draw, /* Init the VS output table for the rasterizer. */ r300_init_vs_outputs(vs); - /**/ + /* Make the last generic be WPOS. */ + vs->outputs.wpos = vs->outputs.generic[transform.last_generic + 1]; vs->outputs.generic[transform.last_generic + 1] = ATTR_UNUSED; - vs->outputs.wpos -= 1; } -- 2.30.2