* any empty memory block around that can be freed up.
*/
index = -1;
- for (i = 0; i < SVGA_QUERY_MAX && index == -1; i++) {
+ for (i = 0; i < SVGA3D_QUERYTYPE_MAX && index == -1; i++) {
struct svga_qmem_alloc_entry *alloc_entry;
struct svga_qmem_alloc_entry *prev_alloc_entry = NULL;
int slot_index = -1;
unsigned offset;
- assert(type < SVGA_QUERY_MAX);
+ assert(type < SVGA3D_QUERYTYPE_MAX);
alloc_entry = svga->gb_query_map[type];
struct svga_winsys_screen *sws = svga_screen(svga->pipe.screen)->sws;
unsigned i;
- for (i = 0; i < SVGA_QUERY_MAX; i++) {
+ for (i = 0; i < SVGA3D_QUERYTYPE_MAX; i++) {
struct svga_qmem_alloc_entry *alloc_entry, *next;
alloc_entry = svga->gb_query_map[i];
while (alloc_entry) {
sws->query_get_result(sws, sq->gb_query, sq->offset, &queryState, result, resultLen);
- if (queryState == SVGA3D_QUERYSTATE_NEW && !sq->fence) {
- /* The query hasn't been submitted yet. We need to submit it now
- * since the GL spec says "Querying the state for a given occlusion
- * query forces that occlusion query to complete within a finite amount
- * of time."
+ if (queryState != SVGA3D_QUERYSTATE_SUCCEEDED && !sq->fence) {
+ /* We don't have the query result yet, and the query hasn't been
+ * submitted. We need to submit it now since the GL spec says
+ * "Querying the state for a given occlusion query forces that
+ * occlusion query to complete within a finite amount of time."
*/
svga_context_flush(svga, &sq->fence);
}
case SVGA_QUERY_NUM_FALLBACKS:
case SVGA_QUERY_NUM_FLUSHES:
case SVGA_QUERY_NUM_VALIDATIONS:
- case SVGA_QUERY_NUM_RESOURCES_MAPPED:
+ case SVGA_QUERY_NUM_BUFFERS_MAPPED:
+ case SVGA_QUERY_NUM_TEXTURES_MAPPED:
case SVGA_QUERY_NUM_BYTES_UPLOADED:
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
case SVGA_QUERY_SURFACE_WRITE_FLUSHES:
case SVGA_QUERY_NUM_FLUSHES:
case SVGA_QUERY_NUM_VALIDATIONS:
case SVGA_QUERY_MAP_BUFFER_TIME:
- case SVGA_QUERY_NUM_RESOURCES_MAPPED:
+ case SVGA_QUERY_NUM_BUFFERS_MAPPED:
+ case SVGA_QUERY_NUM_TEXTURES_MAPPED:
case SVGA_QUERY_NUM_BYTES_UPLOADED:
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
case SVGA_QUERY_FLUSH_TIME:
case SVGA_QUERY_MAP_BUFFER_TIME:
sq->begin_count = svga->hud.map_buffer_time;
break;
- case SVGA_QUERY_NUM_RESOURCES_MAPPED:
- sq->begin_count = svga->hud.num_resources_mapped;
+ case SVGA_QUERY_NUM_BUFFERS_MAPPED:
+ sq->begin_count = svga->hud.num_buffers_mapped;
+ break;
+ case SVGA_QUERY_NUM_TEXTURES_MAPPED:
+ sq->begin_count = svga->hud.num_textures_mapped;
break;
case SVGA_QUERY_NUM_BYTES_UPLOADED:
sq->begin_count = svga->hud.num_bytes_uploaded;
}
assert(ret == PIPE_OK);
(void) ret;
- /* TODO: Delay flushing. We don't really need to flush here, just ensure
- * that there is one flush before svga_get_query_result attempts to get
- * the result.
- */
- svga_context_flush(svga, NULL);
break;
case PIPE_QUERY_PRIMITIVES_GENERATED:
case PIPE_QUERY_PRIMITIVES_EMITTED:
case SVGA_QUERY_MAP_BUFFER_TIME:
sq->end_count = svga->hud.map_buffer_time;
break;
- case SVGA_QUERY_NUM_RESOURCES_MAPPED:
- sq->end_count = svga->hud.num_resources_mapped;
+ case SVGA_QUERY_NUM_BUFFERS_MAPPED:
+ sq->end_count = svga->hud.num_buffers_mapped;
+ break;
+ case SVGA_QUERY_NUM_TEXTURES_MAPPED:
+ sq->end_count = svga->hud.num_textures_mapped;
break;
case SVGA_QUERY_NUM_BYTES_UPLOADED:
sq->end_count = svga->hud.num_bytes_uploaded;
case SVGA_QUERY_NUM_FLUSHES:
case SVGA_QUERY_NUM_VALIDATIONS:
case SVGA_QUERY_MAP_BUFFER_TIME:
- case SVGA_QUERY_NUM_RESOURCES_MAPPED:
+ case SVGA_QUERY_NUM_BUFFERS_MAPPED:
+ case SVGA_QUERY_NUM_TEXTURES_MAPPED:
case SVGA_QUERY_NUM_BYTES_UPLOADED:
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
case SVGA_QUERY_FLUSH_TIME:
static void
svga_render_condition(struct pipe_context *pipe, struct pipe_query *q,
- boolean condition, uint mode)
+ boolean condition, enum pipe_render_cond_flag mode)
{
struct svga_context *svga = svga_context(pipe);
struct svga_winsys_screen *sws = svga_screen(svga->pipe.screen)->sws;
ret = SVGA3D_vgpu10_SetPredication(svga->swc, queryId,
(uint32) condition);
}
+ svga->pred.query_id = queryId;
+ svga->pred.cond = condition;
}
+
+ svga->render_condition = (sq != NULL);
}