Compare commits
2 Commits
master
...
query-map-
Author | SHA1 | Date |
---|---|---|
Joshua Ashton | d08e24b131 | |
Joshua Ashton | 83404e8e57 |
|
@ -3123,6 +3123,7 @@ static bool d3d12_command_list_gather_pending_queries(struct d3d12_command_list
|
||||||
struct d3d12_query_heap *heap;
|
struct d3d12_query_heap *heap;
|
||||||
uint32_t virtual_query_count;
|
uint32_t virtual_query_count;
|
||||||
uint32_t unique_query_count;
|
uint32_t unique_query_count;
|
||||||
|
uint32_t map_size;
|
||||||
VkDeviceSize resolve_buffer_offset;
|
VkDeviceSize resolve_buffer_offset;
|
||||||
VkDeviceSize resolve_buffer_size;
|
VkDeviceSize resolve_buffer_size;
|
||||||
};
|
};
|
||||||
|
@ -3194,6 +3195,7 @@ static bool d3d12_command_list_gather_pending_queries(struct d3d12_command_list
|
||||||
d->heap = q->heap;
|
d->heap = q->heap;
|
||||||
d->virtual_query_count = 1;
|
d->virtual_query_count = 1;
|
||||||
d->unique_query_count = 0;
|
d->unique_query_count = 0;
|
||||||
|
d->map_size = 0;
|
||||||
d->resolve_buffer_offset = resolve_buffer_size;
|
d->resolve_buffer_offset = resolve_buffer_size;
|
||||||
|
|
||||||
r = NULL;
|
r = NULL;
|
||||||
|
@ -3221,6 +3223,7 @@ static bool d3d12_command_list_gather_pending_queries(struct d3d12_command_list
|
||||||
r->query_count++;
|
r->query_count++;
|
||||||
|
|
||||||
query_map_size = max(query_map_size, q->index + 1);
|
query_map_size = max(query_map_size, q->index + 1);
|
||||||
|
d->map_size = max(d->map_size, q->index + 1);
|
||||||
resolve_buffer_size += resolve_buffer_stride;
|
resolve_buffer_size += resolve_buffer_stride;
|
||||||
|
|
||||||
d->resolve_buffer_size = resolve_buffer_size - d->resolve_buffer_offset;
|
d->resolve_buffer_size = resolve_buffer_size - d->resolve_buffer_offset;
|
||||||
|
@ -3249,7 +3252,7 @@ static bool d3d12_command_list_gather_pending_queries(struct d3d12_command_list
|
||||||
entry_buffer_size, ssbo_alignment, &entry_buffer))
|
entry_buffer_size, ssbo_alignment, &entry_buffer))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(query_map = vkd3d_malloc(sizeof(*query_map) * query_map_size)) ||
|
if (!(query_map = vkd3d_calloc(query_map_size, sizeof(*query_map))) ||
|
||||||
!(query_list = vkd3d_malloc(sizeof(*query_list) * list->pending_queries_count)))
|
!(query_list = vkd3d_malloc(sizeof(*query_list) * list->pending_queries_count)))
|
||||||
{
|
{
|
||||||
ERR("Failed to allocate query map.\n");
|
ERR("Failed to allocate query map.\n");
|
||||||
|
@ -3263,7 +3266,8 @@ static bool d3d12_command_list_gather_pending_queries(struct d3d12_command_list
|
||||||
for (i = 0; i < dispatch_count; i++)
|
for (i = 0; i < dispatch_count; i++)
|
||||||
{
|
{
|
||||||
struct dispatch_entry *d = &dispatches[i];
|
struct dispatch_entry *d = &dispatches[i];
|
||||||
memset(query_map, 0, sizeof(*query_map) * query_map_size);
|
if (i != 0)
|
||||||
|
memset(query_map, 0, sizeof(*query_map) * d->map_size);
|
||||||
|
|
||||||
/* First pass that counts unique queries since the compute
|
/* First pass that counts unique queries since the compute
|
||||||
* shader expects list heads to be packed first in the array */
|
* shader expects list heads to be packed first in the array */
|
||||||
|
|
Loading…
Reference in New Issue