llvmpipe: wait for queries being finished when asked for it or before deletion
[mesa.git] / src / gallium / drivers / svga / svga_tgsi_insn.c
index 9b1b5507cb8509295f8ef8923fd12a20bc171908..67e1f22a70138c618ef3b751ac88c5634fe0c4de 100644 (file)
@@ -49,9 +49,7 @@ translate_opcode(
    case TGSI_OPCODE_DP2A:       return SVGA3DOP_DP2ADD;
    case TGSI_OPCODE_DP3:        return SVGA3DOP_DP3;
    case TGSI_OPCODE_DP4:        return SVGA3DOP_DP4;
-   case TGSI_OPCODE_ENDFOR:     return SVGA3DOP_ENDLOOP;
    case TGSI_OPCODE_FRC:        return SVGA3DOP_FRC;
-   case TGSI_OPCODE_BGNFOR:     return SVGA3DOP_LOOP;
    case TGSI_OPCODE_MAD:        return SVGA3DOP_MAD;
    case TGSI_OPCODE_MAX:        return SVGA3DOP_MAX;
    case TGSI_OPCODE_MIN:        return SVGA3DOP_MIN;
@@ -1417,21 +1415,21 @@ static boolean emit_tex(struct svga_shader_emitter *emit,
 
          /* Divide texcoord R by Q */
          if (!submit_op1( emit, inst_token( SVGA3DOP_RCP ),
-                          src0_zdivw,
+                          writemask(src0_zdivw, TGSI_WRITEMASK_X),
                           scalar(src0, TGSI_SWIZZLE_W) ))
             return FALSE;
 
          if (!submit_op2( emit, inst_token( SVGA3DOP_MUL ),
-                          src0_zdivw,
+                          writemask(src0_zdivw, TGSI_WRITEMASK_X),
                           scalar(src0, TGSI_SWIZZLE_Z),
-                          src(src0_zdivw) ))
+                          scalar(src(src0_zdivw), TGSI_SWIZZLE_X) ))
             return FALSE;
 
          if (!emit_select(
                 emit,
                 emit->key.fkey.tex[src1.base.num].compare_func,
                 writemask( dst, TGSI_WRITEMASK_XYZ ),
-                src(src0_zdivw),
+                scalar(src(src0_zdivw), TGSI_SWIZZLE_X),
                 tex_src_x))
             return FALSE;
       }
@@ -2590,10 +2588,10 @@ static boolean emit_light_twoside( struct svga_shader_emitter *emit )
    
    if_token = inst_token( SVGA3DOP_IFC );
 
-   if (emit->key.fkey.front_cw)
-      if_token.control = SVGA3DOPCOMP_GT;
-   else
+   if (emit->key.fkey.front_ccw)
       if_token.control = SVGA3DOPCOMP_LT;
+   else
+      if_token.control = SVGA3DOPCOMP_GT;
 
    zero = scalar(zero, TGSI_SWIZZLE_X);
 
@@ -2641,12 +2639,12 @@ static boolean emit_frontface( struct svga_shader_emitter *emit )
    temp = dst_register( SVGA3DREG_TEMP,
                         emit->nr_hw_temp++ );
 
-   if (emit->key.fkey.front_cw) {
-      pass = scalar( zero, TGSI_SWIZZLE_W );
-      fail = scalar( zero, TGSI_SWIZZLE_X );
-   } else {
+   if (emit->key.fkey.front_ccw) {
       pass = scalar( zero, TGSI_SWIZZLE_X );
       fail = scalar( zero, TGSI_SWIZZLE_W );
+   } else {
+      pass = scalar( zero, TGSI_SWIZZLE_W );
+      fail = scalar( zero, TGSI_SWIZZLE_X );
    }
 
    if (!emit_conditional(emit, PIPE_FUNC_GREATER,
@@ -2686,7 +2684,6 @@ needs_to_create_zero( struct svga_shader_emitter *emit )
 
    if (emit->info.opcode_count[TGSI_OPCODE_IF] >= 1 ||
        emit->info.opcode_count[TGSI_OPCODE_BGNLOOP] >= 1 ||
-       emit->info.opcode_count[TGSI_OPCODE_BGNFOR] >= 1 ||
        emit->info.opcode_count[TGSI_OPCODE_DDX] >= 1 ||
        emit->info.opcode_count[TGSI_OPCODE_DDY] >= 1 ||
        emit->info.opcode_count[TGSI_OPCODE_SGE] >= 1 ||