mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
svga: add new num-readbacks HUD query
To find out how many image readback command is issued. Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
This commit is contained in:
parent
dc9ecf58c0
commit
79e343b36a
5 changed files with 24 additions and 7 deletions
|
|
@ -55,16 +55,17 @@
|
|||
#define SVGA_QUERY_COMMAND_BUFFER_SIZE (PIPE_QUERY_DRIVER_SPECIFIC + 7)
|
||||
#define SVGA_QUERY_FLUSH_TIME (PIPE_QUERY_DRIVER_SPECIFIC + 8)
|
||||
#define SVGA_QUERY_SURFACE_WRITE_FLUSHES (PIPE_QUERY_DRIVER_SPECIFIC + 9)
|
||||
#define SVGA_QUERY_NUM_READBACKS (PIPE_QUERY_DRIVER_SPECIFIC + 10)
|
||||
|
||||
/* running total counters */
|
||||
#define SVGA_QUERY_MEMORY_USED (PIPE_QUERY_DRIVER_SPECIFIC + 10)
|
||||
#define SVGA_QUERY_NUM_SHADERS (PIPE_QUERY_DRIVER_SPECIFIC + 11)
|
||||
#define SVGA_QUERY_NUM_RESOURCES (PIPE_QUERY_DRIVER_SPECIFIC + 12)
|
||||
#define SVGA_QUERY_NUM_STATE_OBJECTS (PIPE_QUERY_DRIVER_SPECIFIC + 13)
|
||||
#define SVGA_QUERY_NUM_SURFACE_VIEWS (PIPE_QUERY_DRIVER_SPECIFIC + 14)
|
||||
#define SVGA_QUERY_NUM_GENERATE_MIPMAP (PIPE_QUERY_DRIVER_SPECIFIC + 15)
|
||||
#define SVGA_QUERY_MEMORY_USED (PIPE_QUERY_DRIVER_SPECIFIC + 11)
|
||||
#define SVGA_QUERY_NUM_SHADERS (PIPE_QUERY_DRIVER_SPECIFIC + 12)
|
||||
#define SVGA_QUERY_NUM_RESOURCES (PIPE_QUERY_DRIVER_SPECIFIC + 13)
|
||||
#define SVGA_QUERY_NUM_STATE_OBJECTS (PIPE_QUERY_DRIVER_SPECIFIC + 14)
|
||||
#define SVGA_QUERY_NUM_SURFACE_VIEWS (PIPE_QUERY_DRIVER_SPECIFIC + 15)
|
||||
#define SVGA_QUERY_NUM_GENERATE_MIPMAP (PIPE_QUERY_DRIVER_SPECIFIC + 16)
|
||||
/*SVGA_QUERY_MAX has to be last because it is size of an array*/
|
||||
#define SVGA_QUERY_MAX (PIPE_QUERY_DRIVER_SPECIFIC + 16)
|
||||
#define SVGA_QUERY_MAX (PIPE_QUERY_DRIVER_SPECIFIC + 17)
|
||||
|
||||
/**
|
||||
* Maximum supported number of constant buffers per shader
|
||||
|
|
@ -513,6 +514,7 @@ struct svga_context
|
|||
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 */
|
||||
uint64_t num_readbacks; /**< SVGA_QUERY_NUM_READBACK */
|
||||
} hud;
|
||||
|
||||
/** The currently bound stream output targets */
|
||||
|
|
|
|||
|
|
@ -736,6 +736,7 @@ svga_create_query(struct pipe_context *pipe,
|
|||
case SVGA_QUERY_NUM_STATE_OBJECTS:
|
||||
case SVGA_QUERY_NUM_SURFACE_VIEWS:
|
||||
case SVGA_QUERY_NUM_GENERATE_MIPMAP:
|
||||
case SVGA_QUERY_NUM_READBACKS:
|
||||
break;
|
||||
default:
|
||||
assert(!"unexpected query type in svga_create_query()");
|
||||
|
|
@ -808,6 +809,7 @@ svga_destroy_query(struct pipe_context *pipe, struct pipe_query *q)
|
|||
case SVGA_QUERY_NUM_STATE_OBJECTS:
|
||||
case SVGA_QUERY_NUM_SURFACE_VIEWS:
|
||||
case SVGA_QUERY_NUM_GENERATE_MIPMAP:
|
||||
case SVGA_QUERY_NUM_READBACKS:
|
||||
/* nothing */
|
||||
break;
|
||||
default:
|
||||
|
|
@ -899,6 +901,9 @@ svga_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
|||
case SVGA_QUERY_SURFACE_WRITE_FLUSHES:
|
||||
sq->begin_count = svga->hud.surface_write_flushes;
|
||||
break;
|
||||
case SVGA_QUERY_NUM_READBACKS:
|
||||
sq->begin_count = svga->hud.num_readbacks;
|
||||
break;
|
||||
case SVGA_QUERY_MEMORY_USED:
|
||||
case SVGA_QUERY_NUM_SHADERS:
|
||||
case SVGA_QUERY_NUM_RESOURCES:
|
||||
|
|
@ -1002,6 +1007,9 @@ svga_end_query(struct pipe_context *pipe, struct pipe_query *q)
|
|||
case SVGA_QUERY_SURFACE_WRITE_FLUSHES:
|
||||
sq->end_count = svga->hud.surface_write_flushes;
|
||||
break;
|
||||
case SVGA_QUERY_NUM_READBACKS:
|
||||
sq->end_count = svga->hud.num_readbacks;
|
||||
break;
|
||||
case SVGA_QUERY_MEMORY_USED:
|
||||
case SVGA_QUERY_NUM_SHADERS:
|
||||
case SVGA_QUERY_NUM_RESOURCES:
|
||||
|
|
@ -1103,6 +1111,7 @@ svga_get_query_result(struct pipe_context *pipe,
|
|||
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
|
||||
case SVGA_QUERY_FLUSH_TIME:
|
||||
case SVGA_QUERY_SURFACE_WRITE_FLUSHES:
|
||||
case SVGA_QUERY_NUM_READBACKS:
|
||||
vresult->u64 = sq->end_count - sq->begin_count;
|
||||
break;
|
||||
/* These are running total counters */
|
||||
|
|
|
|||
|
|
@ -109,6 +109,8 @@ svga_buffer_transfer_map(struct pipe_context *pipe,
|
|||
assert(ret == PIPE_OK);
|
||||
}
|
||||
|
||||
svga->hud.num_readbacks++;
|
||||
|
||||
svga_context_finish(svga);
|
||||
|
||||
sbuf->dirty = FALSE;
|
||||
|
|
|
|||
|
|
@ -448,6 +448,8 @@ svga_texture_transfer_map(struct pipe_context *pipe,
|
|||
ret = readback_image_vgpu9(svga, surf, st->slice, transfer->level);
|
||||
}
|
||||
|
||||
svga->hud.num_readbacks++;
|
||||
|
||||
assert(ret == PIPE_OK);
|
||||
(void) ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -837,6 +837,8 @@ svga_get_driver_query_info(struct pipe_screen *screen,
|
|||
PIPE_DRIVER_QUERY_TYPE_MICROSECONDS),
|
||||
QUERY("surface-write-flushes", SVGA_QUERY_SURFACE_WRITE_FLUSHES,
|
||||
PIPE_DRIVER_QUERY_TYPE_UINT64),
|
||||
QUERY("num-readbacks", SVGA_QUERY_NUM_READBACKS,
|
||||
PIPE_DRIVER_QUERY_TYPE_UINT64),
|
||||
|
||||
/* running total counters */
|
||||
QUERY("memory-used", SVGA_QUERY_MEMORY_USED,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue