From b3367f56d880550befb31a0100c448e1d607915f Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 27 Jul 2012 15:57:07 -0700 Subject: [PATCH] i965/vs: Convert EdgeFlagPointer values appropriately for the VS on gen4. Fixes piglit gl-2.0/edgeflag. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_draw_upload.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index 82dd81d03c0..b606de226b1 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -721,6 +721,16 @@ static void brw_emit_vertices(struct brw_context *brw) uint32_t comp2 = BRW_VE1_COMPONENT_STORE_SRC; uint32_t comp3 = BRW_VE1_COMPONENT_STORE_SRC; + /* The gen4 driver expects edgeflag to come in as a float, and passes + * that float on to the tests in the clipper. Mesa's current vertex + * attribute value for EdgeFlag is stored as a float, which works out. + * glEdgeFlagPointer, on the other hand, gives us an unnormalized + * integer ubyte. Just rewrite that to convert to a float. + */ + if (input->attrib == VERT_ATTRIB_EDGEFLAG && + format == BRW_SURFACEFORMAT_R8_UINT) + format = BRW_SURFACEFORMAT_R8_SSCALED; + switch (input->glarray->Size) { case 0: comp0 = BRW_VE1_COMPONENT_STORE_0; case 1: comp1 = BRW_VE1_COMPONENT_STORE_0; -- 2.30.2