svga: s/unsigned/VGPU10_OPCODE_TYPE/
[mesa.git] / src / gallium / drivers / svga / svga_swtnl_state.c
index 79dc0bf580c087847417fc7bdaeeba67a3067045..06a9be8b9d65a21b493227d9de8049da3d842686 100644 (file)
@@ -48,7 +48,8 @@
 #define SVGA_TRIANGLE_ADJ_Y -0.5f
 
 
-static void set_draw_viewport( struct svga_context *svga )
+static void
+set_draw_viewport(struct svga_context *svga)
 {
    struct pipe_viewport_state vp = svga->curr.viewport;
    float adjx = 0.0f;
@@ -84,6 +85,9 @@ static void set_draw_viewport( struct svga_context *svga )
          adjx += SVGA_TRIANGLE_ADJ_X;
          adjy += SVGA_TRIANGLE_ADJ_Y;
          break;
+      default:
+         /* nothing */
+         break;
       }
    }
 
@@ -94,37 +98,38 @@ static void set_draw_viewport( struct svga_context *svga )
 }
 
 static enum pipe_error
-update_swtnl_draw( struct svga_context *svga,
-                   unsigned dirty )
+update_swtnl_draw(struct svga_context *svga, unsigned dirty)
 {
-   draw_flush( svga->swtnl.draw );
+   SVGA_STATS_TIME_PUSH(svga_sws(svga), SVGA_STATS_TIME_SWTNLUPDATEDRAW);
+
+   draw_flush(svga->swtnl.draw);
 
-   if (dirty & SVGA_NEW_VS) 
+   if (dirty & SVGA_NEW_VS)
       draw_bind_vertex_shader(svga->swtnl.draw,
                               svga->curr.vs->draw_shader);
 
-   if (dirty & SVGA_NEW_FS) 
+   if (dirty & SVGA_NEW_FS)
       draw_bind_fragment_shader(svga->swtnl.draw,
                                 svga->curr.fs->draw_shader);
 
    if (dirty & SVGA_NEW_VBUFFER)
       draw_set_vertex_buffers(svga->swtnl.draw, 0,
-                              svga->curr.num_vertex_buffers, 
+                              svga->curr.num_vertex_buffers,
                               svga->curr.vb);
 
    if (dirty & SVGA_NEW_VELEMENT)
-      draw_set_vertex_elements(svga->swtnl.draw, 
-                               svga->curr.velems->count, 
-                               svga->curr.velems->velem );
+      draw_set_vertex_elements(svga->swtnl.draw,
+                               svga->curr.velems->count,
+                               svga->curr.velems->velem);
 
    if (dirty & SVGA_NEW_CLIP)
-      draw_set_clip_state(svga->swtnl.draw, 
+      draw_set_clip_state(svga->swtnl.draw,
                           &svga->curr.clip);
 
    if (dirty & (SVGA_NEW_VIEWPORT |
-                SVGA_NEW_REDUCED_PRIMITIVE | 
+                SVGA_NEW_REDUCED_PRIMITIVE |
                 SVGA_NEW_RAST))
-      set_draw_viewport( svga );
+      set_draw_viewport(svga);
 
    if (dirty & SVGA_NEW_RAST)
       draw_set_rasterizer_state(svga->swtnl.draw,
@@ -137,10 +142,11 @@ update_swtnl_draw( struct svga_context *svga,
     * format for no bound depth (PIPE_FORMAT_NONE).
     */
    if (dirty & SVGA_NEW_FRAME_BUFFER)
-      draw_set_zs_format(svga->swtnl.draw, 
+      draw_set_zs_format(svga->swtnl.draw,
          (svga->curr.framebuffer.zsbuf) ?
              svga->curr.framebuffer.zsbuf->format : PIPE_FORMAT_NONE);
 
+   SVGA_STATS_TIME_POP(svga_sws(svga));
    return PIPE_OK;
 }
 
@@ -205,7 +211,8 @@ svga_vdecl_to_input_element(struct svga_context *svga,
    ret = SVGA3D_vgpu10_DefineElementLayout(svga->swc, num_decls, id, elements);
    if (ret != PIPE_OK) {
       svga_context_flush(svga, NULL);
-      ret = SVGA3D_vgpu10_DefineElementLayout(svga->swc, num_decls, id, elements);
+      ret = SVGA3D_vgpu10_DefineElementLayout(svga->swc, num_decls,
+                                              id, elements);
       assert(ret == PIPE_OK);
    }
 
@@ -214,14 +221,12 @@ svga_vdecl_to_input_element(struct svga_context *svga,
 
 
 enum pipe_error
-svga_swtnl_update_vdecl( struct svga_context *svga )
+svga_swtnl_update_vdecl(struct svga_context *svga)
 {
    struct svga_vbuf_render *svga_render = svga_vbuf_render(svga->swtnl.backend);
    struct draw_context *draw = svga->swtnl.draw;
    struct vertex_info *vinfo = &svga_render->vertex_info;
    SVGA3dVertexDecl vdecl[PIPE_MAX_ATTRIBS];
-   const enum interp_mode colorInterp =
-      svga->curr.rast->templ.flatshade ? INTERP_CONSTANT : INTERP_LINEAR;
    struct svga_fragment_shader *fs = svga->curr.fs;
    int offset = 0;
    int nr_decls = 0;
@@ -229,6 +234,8 @@ svga_swtnl_update_vdecl( struct svga_context *svga )
    unsigned i;
    int any_change;
 
+   SVGA_STATS_TIME_PUSH(svga_sws(svga), SVGA_STATS_TIME_SWTNLUPDATEVDECL);
+
    memset(vinfo, 0, sizeof(*vinfo));
    memset(vdecl, 0, sizeof(vdecl));
 
@@ -236,7 +243,7 @@ svga_swtnl_update_vdecl( struct svga_context *svga )
 
    /* always add position */
    src = draw_find_shader_output(draw, TGSI_SEMANTIC_POSITION, 0);
-   draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_LINEAR, src);
+   draw_emit_vertex_attr(vinfo, EMIT_4F, src);
    vinfo->attrib[0].emit = EMIT_4F;
    vdecl[0].array.offset = offset;
    vdecl[0].identity.method = SVGA3D_DECLMETHOD_DEFAULT;
@@ -247,7 +254,7 @@ svga_swtnl_update_vdecl( struct svga_context *svga )
    nr_decls++;
 
    for (i = 0; i < fs->base.info.num_inputs; i++) {
-      const unsigned sem_name = fs->base.info.input_semantic_name[i];
+      const enum tgsi_semantic sem_name = fs->base.info.input_semantic_name[i];
       const unsigned sem_index = fs->base.info.input_semantic_index[i];
 
       src = draw_find_shader_output(draw, sem_name, sem_index);
@@ -257,14 +264,14 @@ svga_swtnl_update_vdecl( struct svga_context *svga )
 
       switch (sem_name) {
       case TGSI_SEMANTIC_COLOR:
-         draw_emit_vertex_attr(vinfo, EMIT_4F, colorInterp, src);
+         draw_emit_vertex_attr(vinfo, EMIT_4F, src);
          vdecl[nr_decls].identity.usage = SVGA3D_DECLUSAGE_COLOR;
          vdecl[nr_decls].identity.type = SVGA3D_DECLTYPE_FLOAT4;
          offset += 16;
          nr_decls++;
          break;
       case TGSI_SEMANTIC_GENERIC:
-         draw_emit_vertex_attr(vinfo, EMIT_4F, INTERP_PERSPECTIVE, src);
+         draw_emit_vertex_attr(vinfo, EMIT_4F, src);
          vdecl[nr_decls].identity.usage = SVGA3D_DECLUSAGE_TEXCOORD;
          vdecl[nr_decls].identity.type = SVGA3D_DECLTYPE_FLOAT4;
          vdecl[nr_decls].identity.usageIndex =
@@ -273,7 +280,7 @@ svga_swtnl_update_vdecl( struct svga_context *svga )
          nr_decls++;
          break;
       case TGSI_SEMANTIC_FOG:
-         draw_emit_vertex_attr(vinfo, EMIT_1F, INTERP_PERSPECTIVE, src);
+         draw_emit_vertex_attr(vinfo, EMIT_1F, src);
          vdecl[nr_decls].identity.usage = SVGA3D_DECLUSAGE_TEXCOORD;
          vdecl[nr_decls].identity.type = SVGA3D_DECLTYPE_FLOAT1;
          assert(vdecl[nr_decls].identity.usageIndex == 0);
@@ -301,7 +308,7 @@ svga_swtnl_update_vdecl( struct svga_context *svga )
       enum pipe_error ret;
 
       if (!any_change && svga_render->layout_id != SVGA3D_INVALID_ID) {
-         return PIPE_OK;
+         goto done;
       }
 
       if (svga_render->layout_id != SVGA3D_INVALID_ID) {
@@ -345,21 +352,22 @@ svga_swtnl_update_vdecl( struct svga_context *svga )
    }
    else {
       if (!any_change)
-         return PIPE_OK;
+         goto done;
    }
 
    memcpy(svga_render->vdecl, vdecl, sizeof(vdecl));
    svga->swtnl.new_vdecl = TRUE;
 
-   return 0;
+done:
+   SVGA_STATS_TIME_POP(svga_sws(svga));
+   return PIPE_OK;
 }
 
 
 static enum pipe_error
-update_swtnl_vdecl( struct svga_context *svga,
-                    unsigned dirty )
+update_swtnl_vdecl(struct svga_context *svga, unsigned dirty)
 {
-   return svga_swtnl_update_vdecl( svga );
+   return svga_swtnl_update_vdecl(svga);
 }