mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 09:10:11 +01:00
svga: add new surface-write-flushes HUD query
To know when we're flushing the command buffer because we need to write to surface in the command buffer. Reviewed-by: Charmaine Lee <charmainel@vmware.com>
This commit is contained in:
parent
7e8cf34546
commit
3af78b426e
4 changed files with 23 additions and 8 deletions
|
|
@ -54,16 +54,17 @@
|
||||||
#define SVGA_QUERY_NUM_BYTES_UPLOADED (PIPE_QUERY_DRIVER_SPECIFIC + 6)
|
#define SVGA_QUERY_NUM_BYTES_UPLOADED (PIPE_QUERY_DRIVER_SPECIFIC + 6)
|
||||||
#define SVGA_QUERY_COMMAND_BUFFER_SIZE (PIPE_QUERY_DRIVER_SPECIFIC + 7)
|
#define SVGA_QUERY_COMMAND_BUFFER_SIZE (PIPE_QUERY_DRIVER_SPECIFIC + 7)
|
||||||
#define SVGA_QUERY_FLUSH_TIME (PIPE_QUERY_DRIVER_SPECIFIC + 8)
|
#define SVGA_QUERY_FLUSH_TIME (PIPE_QUERY_DRIVER_SPECIFIC + 8)
|
||||||
|
#define SVGA_QUERY_SURFACE_WRITE_FLUSHES (PIPE_QUERY_DRIVER_SPECIFIC + 9)
|
||||||
|
|
||||||
/* running total counters */
|
/* running total counters */
|
||||||
#define SVGA_QUERY_MEMORY_USED (PIPE_QUERY_DRIVER_SPECIFIC + 9)
|
#define SVGA_QUERY_MEMORY_USED (PIPE_QUERY_DRIVER_SPECIFIC + 10)
|
||||||
#define SVGA_QUERY_NUM_SHADERS (PIPE_QUERY_DRIVER_SPECIFIC + 10)
|
#define SVGA_QUERY_NUM_SHADERS (PIPE_QUERY_DRIVER_SPECIFIC + 11)
|
||||||
#define SVGA_QUERY_NUM_RESOURCES (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 + 12)
|
#define SVGA_QUERY_NUM_STATE_OBJECTS (PIPE_QUERY_DRIVER_SPECIFIC + 13)
|
||||||
#define SVGA_QUERY_NUM_SURFACE_VIEWS (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 + 14)
|
#define SVGA_QUERY_NUM_GENERATE_MIPMAP (PIPE_QUERY_DRIVER_SPECIFIC + 15)
|
||||||
/*SVGA_QUERY_MAX has to be last because it is size of an array*/
|
/*SVGA_QUERY_MAX has to be last because it is size of an array*/
|
||||||
#define SVGA_QUERY_MAX (PIPE_QUERY_DRIVER_SPECIFIC + 15)
|
#define SVGA_QUERY_MAX (PIPE_QUERY_DRIVER_SPECIFIC + 16)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maximum supported number of constant buffers per shader
|
* Maximum supported number of constant buffers per shader
|
||||||
|
|
@ -506,6 +507,7 @@ struct svga_context
|
||||||
uint64_t num_resources_mapped; /**< SVGA_QUERY_NUM_RESOURCES_MAPPED */
|
uint64_t num_resources_mapped; /**< SVGA_QUERY_NUM_RESOURCES_MAPPED */
|
||||||
uint64_t command_buffer_size; /**< SVGA_QUERY_COMMAND_BUFFER_SIZE */
|
uint64_t command_buffer_size; /**< SVGA_QUERY_COMMAND_BUFFER_SIZE */
|
||||||
uint64_t flush_time; /**< SVGA_QUERY_FLUSH_TIME */
|
uint64_t flush_time; /**< SVGA_QUERY_FLUSH_TIME */
|
||||||
|
uint64_t surface_write_flushes; /**< SVGA_QUERY_SURFACE_WRITE_FLUSHES */
|
||||||
uint64_t num_shaders; /**< SVGA_QUERY_NUM_SHADERS */
|
uint64_t num_shaders; /**< SVGA_QUERY_NUM_SHADERS */
|
||||||
uint64_t num_state_objects; /**< SVGA_QUERY_NUM_STATE_OBJECTS */
|
uint64_t num_state_objects; /**< SVGA_QUERY_NUM_STATE_OBJECTS */
|
||||||
uint64_t num_surface_views; /**< SVGA_QUERY_NUM_SURFACE_VIEWS */
|
uint64_t num_surface_views; /**< SVGA_QUERY_NUM_SURFACE_VIEWS */
|
||||||
|
|
|
||||||
|
|
@ -729,6 +729,7 @@ svga_create_query(struct pipe_context *pipe,
|
||||||
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
||||||
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
|
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
|
||||||
case SVGA_QUERY_FLUSH_TIME:
|
case SVGA_QUERY_FLUSH_TIME:
|
||||||
|
case SVGA_QUERY_SURFACE_WRITE_FLUSHES:
|
||||||
case SVGA_QUERY_MEMORY_USED:
|
case SVGA_QUERY_MEMORY_USED:
|
||||||
case SVGA_QUERY_NUM_SHADERS:
|
case SVGA_QUERY_NUM_SHADERS:
|
||||||
case SVGA_QUERY_NUM_RESOURCES:
|
case SVGA_QUERY_NUM_RESOURCES:
|
||||||
|
|
@ -800,6 +801,7 @@ svga_destroy_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
||||||
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
|
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
|
||||||
case SVGA_QUERY_FLUSH_TIME:
|
case SVGA_QUERY_FLUSH_TIME:
|
||||||
|
case SVGA_QUERY_SURFACE_WRITE_FLUSHES:
|
||||||
case SVGA_QUERY_MEMORY_USED:
|
case SVGA_QUERY_MEMORY_USED:
|
||||||
case SVGA_QUERY_NUM_SHADERS:
|
case SVGA_QUERY_NUM_SHADERS:
|
||||||
case SVGA_QUERY_NUM_RESOURCES:
|
case SVGA_QUERY_NUM_RESOURCES:
|
||||||
|
|
@ -894,6 +896,9 @@ svga_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
case SVGA_QUERY_FLUSH_TIME:
|
case SVGA_QUERY_FLUSH_TIME:
|
||||||
sq->begin_count = svga->hud.flush_time;
|
sq->begin_count = svga->hud.flush_time;
|
||||||
break;
|
break;
|
||||||
|
case SVGA_QUERY_SURFACE_WRITE_FLUSHES:
|
||||||
|
sq->begin_count = svga->hud.surface_write_flushes;
|
||||||
|
break;
|
||||||
case SVGA_QUERY_MEMORY_USED:
|
case SVGA_QUERY_MEMORY_USED:
|
||||||
case SVGA_QUERY_NUM_SHADERS:
|
case SVGA_QUERY_NUM_SHADERS:
|
||||||
case SVGA_QUERY_NUM_RESOURCES:
|
case SVGA_QUERY_NUM_RESOURCES:
|
||||||
|
|
@ -994,6 +999,9 @@ svga_end_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
case SVGA_QUERY_FLUSH_TIME:
|
case SVGA_QUERY_FLUSH_TIME:
|
||||||
sq->end_count = svga->hud.flush_time;
|
sq->end_count = svga->hud.flush_time;
|
||||||
break;
|
break;
|
||||||
|
case SVGA_QUERY_SURFACE_WRITE_FLUSHES:
|
||||||
|
sq->end_count = svga->hud.surface_write_flushes;
|
||||||
|
break;
|
||||||
case SVGA_QUERY_MEMORY_USED:
|
case SVGA_QUERY_MEMORY_USED:
|
||||||
case SVGA_QUERY_NUM_SHADERS:
|
case SVGA_QUERY_NUM_SHADERS:
|
||||||
case SVGA_QUERY_NUM_RESOURCES:
|
case SVGA_QUERY_NUM_RESOURCES:
|
||||||
|
|
@ -1094,6 +1102,7 @@ svga_get_query_result(struct pipe_context *pipe,
|
||||||
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
||||||
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
|
case SVGA_QUERY_COMMAND_BUFFER_SIZE:
|
||||||
case SVGA_QUERY_FLUSH_TIME:
|
case SVGA_QUERY_FLUSH_TIME:
|
||||||
|
case SVGA_QUERY_SURFACE_WRITE_FLUSHES:
|
||||||
vresult->u64 = sq->end_count - sq->begin_count;
|
vresult->u64 = sq->end_count - sq->begin_count;
|
||||||
break;
|
break;
|
||||||
/* These are running total counters */
|
/* These are running total counters */
|
||||||
|
|
|
||||||
|
|
@ -463,8 +463,10 @@ svga_texture_transfer_map(struct pipe_context *pipe,
|
||||||
assert(transfer->usage & PIPE_TRANSFER_WRITE);
|
assert(transfer->usage & PIPE_TRANSFER_WRITE);
|
||||||
if ((transfer->usage & PIPE_TRANSFER_UNSYNCHRONIZED) == 0) {
|
if ((transfer->usage & PIPE_TRANSFER_UNSYNCHRONIZED) == 0) {
|
||||||
svga_surfaces_flush(svga);
|
svga_surfaces_flush(svga);
|
||||||
if (!sws->surface_is_flushed(sws, surf))
|
if (!sws->surface_is_flushed(sws, surf)) {
|
||||||
|
svga->hud.surface_write_flushes++;
|
||||||
svga_context_flush(svga, NULL);
|
svga_context_flush(svga, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -831,6 +831,8 @@ svga_get_driver_query_info(struct pipe_screen *screen,
|
||||||
PIPE_DRIVER_QUERY_TYPE_BYTES),
|
PIPE_DRIVER_QUERY_TYPE_BYTES),
|
||||||
QUERY("flush-time", SVGA_QUERY_FLUSH_TIME,
|
QUERY("flush-time", SVGA_QUERY_FLUSH_TIME,
|
||||||
PIPE_DRIVER_QUERY_TYPE_MICROSECONDS),
|
PIPE_DRIVER_QUERY_TYPE_MICROSECONDS),
|
||||||
|
QUERY("surface-write-flushes", SVGA_QUERY_SURFACE_WRITE_FLUSHES,
|
||||||
|
PIPE_DRIVER_QUERY_TYPE_UINT64),
|
||||||
|
|
||||||
/* running total counters */
|
/* running total counters */
|
||||||
QUERY("memory-used", SVGA_QUERY_MEMORY_USED,
|
QUERY("memory-used", SVGA_QUERY_MEMORY_USED,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue