svga: Fix vPos usage
authorJakob Bornecrantz <jakob@vmware.com>
Wed, 6 Apr 2011 11:13:33 +0000 (12:13 +0100)
committerBrian Paul <brianp@vmware.com>
Fri, 23 Sep 2011 13:58:45 +0000 (07:58 -0600)
src/gallium/drivers/svga/svga_tgsi_decl_sm30.c

index 6d6c7c27a441f2d4869d177cb0c4b5e80b190bb3..1c385cc7e81b526193f7c9719232b9f4ca3f7f31 100644 (file)
@@ -123,6 +123,12 @@ static boolean ps30_input( struct svga_shader_emitter *emit,
    if (semantic.Name == TGSI_SEMANTIC_POSITION) {
       emit->ps_true_pos = src_register( SVGA3DREG_MISCTYPE,
                                         SVGA3DMISCREG_POSITION );
+
+      emit->ps_true_pos.base.swizzle = TRANSLATE_SWIZZLE( TGSI_SWIZZLE_X,
+                                                          TGSI_SWIZZLE_Y,
+                                                          TGSI_SWIZZLE_Y,
+                                                          TGSI_SWIZZLE_Y );
+
       emit->ps_temp_pos = dst_register( SVGA3DREG_TEMP,
                                         emit->nr_hw_temp );
       emit->ps_depth_pos = src_register( SVGA3DREG_INPUT, emit->ps30_input_count++ );
@@ -132,7 +138,7 @@ static boolean ps30_input( struct svga_shader_emitter *emit,
       emit->nr_hw_temp++;
 
       reg = writemask( dst(emit->ps_true_pos),
-                       TGSI_WRITEMASK_XYZW );
+                       TGSI_WRITEMASK_XY );
 
       emit->ps_reads_pos = TRUE;
       if (!emit_decl( emit, dst(emit->ps_depth_pos),