uint64_t num_const_buf_updates; /**< SVGA_QUERY_NUM_CONST_BUF_UPDATES */
uint64_t num_const_updates; /**< SVGA_QUERY_NUM_CONST_UPDATES */
uint64_t num_shaders; /**< SVGA_QUERY_NUM_SHADERS */
- uint64_t num_state_objects; /**< SVGA_QUERY_NUM_STATE_OBJECTS */
+
+ /** The following are summed for SVGA_QUERY_NUM_STATE_OBJECTS */
+ uint64_t num_blend_objects;
+ uint64_t num_depthstencil_objects;
+ uint64_t num_rasterizer_objects;
+ uint64_t num_sampler_objects;
+ uint64_t num_samplerview_objects;
+ uint64_t num_vertexelement_objects;
+
uint64_t num_surface_views; /**< SVGA_QUERY_NUM_SURFACE_VIEWS */
uint64_t num_bytes_uploaded; /**< SVGA_QUERY_NUM_BYTES_UPLOADED */
uint64_t num_generate_mipmap; /**< SVGA_QUERY_NUM_GENERATE_MIPMAP */
define_blend_state_object(svga, blend);
}
- svga->hud.num_state_objects++;
+ svga->hud.num_blend_objects++;
return blend;
}
}
FREE(blend);
- svga->hud.num_state_objects--;
+ svga->hud.num_blend_objects--;
}
static void svga_set_blend_color( struct pipe_context *pipe,
define_depth_stencil_state_object(svga, ds);
}
- svga->hud.num_state_objects++;
+ svga->hud.num_depthstencil_objects++;
return ds;
}
}
FREE(depth_stencil);
- svga->hud.num_state_objects--;
+ svga->hud.num_depthstencil_objects--;
}
vresult->u64 = svgascreen->hud.num_resources;
break;
case SVGA_QUERY_NUM_STATE_OBJECTS:
- vresult->u64 = svga->hud.num_state_objects;
+ vresult->u64 = (svga->hud.num_blend_objects +
+ svga->hud.num_depthstencil_objects +
+ svga->hud.num_rasterizer_objects +
+ svga->hud.num_sampler_objects +
+ svga->hud.num_samplerview_objects +
+ svga->hud.num_vertexelement_objects);
break;
case SVGA_QUERY_NUM_SURFACE_VIEWS:
vresult->u64 = svga->hud.num_surface_views;
"GL_POLYGON_SMOOTH not supported");
}
- svga->hud.num_state_objects++;
+ svga->hud.num_rasterizer_objects++;
return rast;
}
}
FREE(state);
- svga->hud.num_state_objects--;
+ svga->hud.num_rasterizer_objects--;
}
cso->min_lod, cso->view_min_lod, cso->view_max_lod,
cso->mipfilter == SVGA3D_TEX_FILTER_NONE ? "SVGA3D_TEX_FILTER_NONE" : "SOMETHING");
- svga->hud.num_state_objects++;
+ svga->hud.num_sampler_objects++;
return cso;
}
}
FREE(sampler);
- svga->hud.num_state_objects--;
+ svga->hud.num_sampler_objects--;
}
struct pipe_resource *texture,
const struct pipe_sampler_view *templ)
{
+ struct svga_context *svga = svga_context(pipe);
struct svga_pipe_sampler_view *sv = CALLOC_STRUCT(svga_pipe_sampler_view);
if (!sv) {
sv->base.context = pipe;
sv->id = SVGA3D_INVALID_ID;
+ svga->hud.num_samplerview_objects++;
+
return &sv->base;
}
pipe_resource_reference(&sv->base.texture, NULL);
FREE(sv);
+ svga->hud.num_samplerview_objects--;
}
static void
}
}
- svga->hud.num_state_objects++;
+ svga->hud.num_vertexelement_objects++;
return velems;
}
}
FREE(velems);
- svga->hud.num_state_objects--;
+ svga->hud.num_vertexelement_objects--;
}
void svga_cleanup_vertex_state( struct svga_context *svga )