perf_query_info->counterIndexCount);
vk_multialloc_add(&ma, &pass_query, struct intel_perf_query_info *,
n_passes);
- uint64s_per_slot = 4 /* availability + small batch */;
+ uint64s_per_slot = 1 /* availability */;
/* Align to the requirement of the layout */
uint64s_per_slot = align(uint64s_per_slot,
DIV_ROUND_UP(layout->alignment, sizeof(uint64_t)));
}
uint64_t size = pool->slots * (uint64_t)pool->stride;
+
+ /* For KHR_performance_query we need some space in the buffer for a small
+ * batch updating ANV_PERF_QUERY_OFFSET_REG.
+ */
+ if (pool->type == VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR) {
+ pool->khr_perf_preamble_stride = 32;
+ pool->khr_perf_preambles_offset = size;
+ size += pool->n_passes * pool->khr_perf_preamble_stride;
+ }
+
result = anv_device_alloc_bo(device, "query-pool", size,
ANV_BO_ALLOC_MAPPED |
ANV_BO_ALLOC_SNOOPED,
* --------------------------------------------
* | availability (8b) | | |
* |-------------------------------| | |
- * | Small batch loading | | |
- * | ANV_PERF_QUERY_OFFSET_REG | | |
- * | (24b) | | Pass 0 |
- * |-------------------------------| | |
* | some padding (see | | |
- * | query_field_layout:alignment) | | |
+ * | query_field_layout:alignment) | | Pass 0 |
* |-------------------------------| | |
* | query data | | |
* | (2 * query_field_layout:size) | | |
* |-------------------------------|-- | Query 0
* | availability (8b) | | |
* |-------------------------------| | |
- * | Small batch loading | | |
- * | ANV_PERF_QUERY_OFFSET_REG | | |
- * | (24b) | | Pass 1 |
- * |-------------------------------| | |
* | some padding (see | | |
- * | query_field_layout:alignment) | | |
+ * | query_field_layout:alignment) | | Pass 1 |
* |-------------------------------| | |
* | query data | | |
* | (2 * query_field_layout:size) | | |
* |-------------------------------|-----------
* | availability (8b) | | |
* |-------------------------------| | |
- * | Small batch loading | | |
- * | ANV_PERF_QUERY_OFFSET_REG | | |
- * | (24b) | | Pass 0 |
- * |-------------------------------| | |
* | some padding (see | | |
- * | query_field_layout:alignment) | | |
+ * | query_field_layout:alignment) | | Pass 0 |
* |-------------------------------| | |
* | query data | | |
* | (2 * query_field_layout:size) | | |
/* Temporarily disable on MTL until we understand why some tests hang.
*/
if (queryCount >= pdevice->instance->query_clear_with_blorp_threshold &&
- !intel_device_info_is_mtl(cmd_buffer->device->info) &&
- pool->type != VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR) {
+ !intel_device_info_is_mtl(cmd_buffer->device->info)) {
anv_cmd_buffer_fill_area(cmd_buffer,
anv_query_address(pool, firstQuery),
queryCount * pool->stride,