mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 17:20:10 +01:00
svga: add num-bytes-uploaded HUD query
To graph the number of bytes uploaded to GPU per frame (vertex buffer data, constant buffer data, texture data, etc). Reviewed-by: José Fonseca <jfonseca@vmware.com> Reviewed-by: Charmaine Lee <charmainel@vmware.com>
This commit is contained in:
parent
e96d7a1489
commit
527466d9a1
5 changed files with 30 additions and 6 deletions
|
|
@ -51,14 +51,16 @@
|
|||
#define SVGA_QUERY_NUM_VALIDATIONS (PIPE_QUERY_DRIVER_SPECIFIC + 3)
|
||||
#define SVGA_QUERY_MAP_BUFFER_TIME (PIPE_QUERY_DRIVER_SPECIFIC + 4)
|
||||
#define SVGA_QUERY_NUM_RESOURCES_MAPPED (PIPE_QUERY_DRIVER_SPECIFIC + 5)
|
||||
#define SVGA_QUERY_NUM_BYTES_UPLOADED (PIPE_QUERY_DRIVER_SPECIFIC + 6)
|
||||
|
||||
/* running total counters */
|
||||
#define SVGA_QUERY_MEMORY_USED (PIPE_QUERY_DRIVER_SPECIFIC + 6)
|
||||
#define SVGA_QUERY_NUM_SHADERS (PIPE_QUERY_DRIVER_SPECIFIC + 7)
|
||||
#define SVGA_QUERY_NUM_RESOURCES (PIPE_QUERY_DRIVER_SPECIFIC + 8)
|
||||
#define SVGA_QUERY_NUM_STATE_OBJECTS (PIPE_QUERY_DRIVER_SPECIFIC + 9)
|
||||
#define SVGA_QUERY_NUM_SURFACE_VIEWS (PIPE_QUERY_DRIVER_SPECIFIC + 10)
|
||||
#define SVGA_QUERY_MEMORY_USED (PIPE_QUERY_DRIVER_SPECIFIC + 7)
|
||||
#define SVGA_QUERY_NUM_SHADERS (PIPE_QUERY_DRIVER_SPECIFIC + 8)
|
||||
#define SVGA_QUERY_NUM_RESOURCES (PIPE_QUERY_DRIVER_SPECIFIC + 9)
|
||||
#define SVGA_QUERY_NUM_STATE_OBJECTS (PIPE_QUERY_DRIVER_SPECIFIC + 10)
|
||||
#define SVGA_QUERY_NUM_SURFACE_VIEWS (PIPE_QUERY_DRIVER_SPECIFIC + 11)
|
||||
/*SVGA_QUERY_MAX has to be last because it is size of an array*/
|
||||
#define SVGA_QUERY_MAX (PIPE_QUERY_DRIVER_SPECIFIC + 11)
|
||||
#define SVGA_QUERY_MAX (PIPE_QUERY_DRIVER_SPECIFIC + 12)
|
||||
|
||||
/**
|
||||
* Maximum supported number of constant buffers per shader
|
||||
|
|
@ -485,6 +487,7 @@ struct svga_context
|
|||
uint64_t num_shaders; /**< SVGA_QUERY_NUM_SHADERS */
|
||||
uint64_t num_state_objects; /**< SVGA_QUERY_NUM_STATE_OBJECTS */
|
||||
uint64_t num_surface_views; /**< SVGA_QUERY_NUM_SURFACE_VIEWS */
|
||||
uint64_t num_bytes_uploaded; /**< SVGA_QUERY_NUM_BYTES_UPLOADED */
|
||||
} hud;
|
||||
|
||||
/** The currently bound stream output targets */
|
||||
|
|
|
|||
|
|
@ -731,6 +731,7 @@ svga_create_query(struct pipe_context *pipe,
|
|||
case SVGA_QUERY_MAP_BUFFER_TIME:
|
||||
case SVGA_QUERY_NUM_SURFACE_VIEWS:
|
||||
case SVGA_QUERY_NUM_RESOURCES_MAPPED:
|
||||
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
||||
break;
|
||||
default:
|
||||
assert(!"unexpected query type in svga_create_query()");
|
||||
|
|
@ -797,6 +798,7 @@ svga_destroy_query(struct pipe_context *pipe, struct pipe_query *q)
|
|||
case SVGA_QUERY_MAP_BUFFER_TIME:
|
||||
case SVGA_QUERY_NUM_SURFACE_VIEWS:
|
||||
case SVGA_QUERY_NUM_RESOURCES_MAPPED:
|
||||
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
||||
/* nothing */
|
||||
break;
|
||||
default:
|
||||
|
|
@ -876,6 +878,9 @@ svga_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
|||
case SVGA_QUERY_NUM_RESOURCES_MAPPED:
|
||||
sq->begin_count = svga->hud.num_resources_mapped;
|
||||
break;
|
||||
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
||||
sq->begin_count = svga->hud.num_bytes_uploaded;
|
||||
break;
|
||||
case SVGA_QUERY_MEMORY_USED:
|
||||
case SVGA_QUERY_NUM_SHADERS:
|
||||
case SVGA_QUERY_NUM_RESOURCES:
|
||||
|
|
@ -966,6 +971,9 @@ svga_end_query(struct pipe_context *pipe, struct pipe_query *q)
|
|||
case SVGA_QUERY_NUM_RESOURCES_MAPPED:
|
||||
sq->end_count = svga->hud.num_resources_mapped;
|
||||
break;
|
||||
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
||||
sq->end_count = svga->hud.num_bytes_uploaded;
|
||||
break;
|
||||
case SVGA_QUERY_MEMORY_USED:
|
||||
case SVGA_QUERY_NUM_SHADERS:
|
||||
case SVGA_QUERY_NUM_RESOURCES:
|
||||
|
|
@ -1061,6 +1069,7 @@ svga_get_query_result(struct pipe_context *pipe,
|
|||
case SVGA_QUERY_NUM_FLUSHES:
|
||||
case SVGA_QUERY_NUM_VALIDATIONS:
|
||||
case SVGA_QUERY_NUM_RESOURCES_MAPPED:
|
||||
case SVGA_QUERY_NUM_BYTES_UPLOADED:
|
||||
case SVGA_QUERY_MAP_BUFFER_TIME:
|
||||
vresult->u64 = sq->end_count - sq->begin_count;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -429,6 +429,8 @@ svga_buffer_upload_flush(struct svga_context *svga,
|
|||
|
||||
assert(box->x <= sbuf->b.b.width0);
|
||||
assert(box->x + box->w <= sbuf->b.b.width0);
|
||||
|
||||
svga->hud.num_bytes_uploaded += box->w;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
@ -454,6 +456,8 @@ svga_buffer_upload_flush(struct svga_context *svga,
|
|||
|
||||
assert(box->x <= sbuf->b.b.width0);
|
||||
assert(box->x + box->w <= sbuf->b.b.width0);
|
||||
|
||||
svga->hud.num_bytes_uploaded += box->w;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -380,6 +380,12 @@ svga_texture_transfer_map(struct pipe_context *pipe,
|
|||
break;
|
||||
}
|
||||
|
||||
if (usage & PIPE_TRANSFER_WRITE) {
|
||||
/* record texture upload for HUD */
|
||||
svga->hud.num_bytes_uploaded +=
|
||||
nblocksx * nblocksy * d * util_format_get_blocksize(texture->format);
|
||||
}
|
||||
|
||||
if (!use_direct_map) {
|
||||
/* Use a DMA buffer */
|
||||
st->hw_nblocksy = nblocksy;
|
||||
|
|
|
|||
|
|
@ -789,6 +789,8 @@ svga_get_driver_query_info(struct pipe_screen *screen,
|
|||
{"map-buffer-time", SVGA_QUERY_MAP_BUFFER_TIME, {0},
|
||||
PIPE_DRIVER_QUERY_TYPE_MICROSECONDS},
|
||||
{"num-resources-mapped", SVGA_QUERY_NUM_RESOURCES_MAPPED, {0}},
|
||||
{"num-bytes-uploaded", SVGA_QUERY_NUM_BYTES_UPLOADED, {0},
|
||||
PIPE_DRIVER_QUERY_TYPE_BYTES, PIPE_DRIVER_QUERY_RESULT_TYPE_AVERAGE},
|
||||
|
||||
/* running total counters */
|
||||
{"memory-used", SVGA_QUERY_MEMORY_USED, {0},
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue