[Mesa-dev] [PATCH 10/10] i965/vs: Fix point size handling on gen4.

Eric Anholt eric at anholt.net
Fri Sep 2 18:37:20 PDT 2011


Fixes glsl-vs-point-size.
---
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index 22f8763..f33442b 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -1742,14 +1742,15 @@ vec4_visitor::emit_vue_header_gen4(int header_mrf)
       emit(MOV(header1, 0u));
 
       if (c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_PSIZ)) {
-	 assert(!"finishme: psiz");
-	 src_reg psiz;
+	 src_reg psiz = src_reg(output_reg[VERT_RESULT_PSIZ]);
 
+	 current_annotation = "Point size";
 	 header1.writemask = WRITEMASK_W;
-	 emit(MUL(header1, psiz, 1u << 11));
+	 emit(MUL(header1, psiz, src_reg((float)(1 << 11))));
 	 emit(AND(header1, src_reg(header1), 0x7ff << 8));
       }
 
+      current_annotation = "Clipping flags";
       for (i = 0; i < c->key.nr_userclip; i++) {
 	 vec4_instruction *inst;
 
@@ -1785,7 +1786,8 @@ vec4_visitor::emit_vue_header_gen4(int header_mrf)
       }
 
       header1.writemask = WRITEMASK_XYZW;
-      emit(MOV(brw_message_reg(header_mrf++), src_reg(header1)));
+      emit(MOV(retype(brw_message_reg(header_mrf++),
+		      BRW_REGISTER_TYPE_UD), src_reg(header1)));
    } else {
       emit(MOV(retype(brw_message_reg(header_mrf++),
 		      BRW_REGISTER_TYPE_UD), 0u));
-- 
1.7.5.4



More information about the mesa-dev mailing list