diff --git a/src/intel/vulkan/anv_cmd_buffer.c b/src/intel/vulkan/anv_cmd_buffer.c index 5346f82176f..472bb566463 100644 --- a/src/intel/vulkan/anv_cmd_buffer.c +++ b/src/intel/vulkan/anv_cmd_buffer.c @@ -485,12 +485,8 @@ anv_cmd_buffer_set_ray_query_buffer(struct anv_cmd_buffer *cmd_buffer, device->ray_query_bo); /* Fill the push constants & mark them dirty. */ - struct anv_state ray_query_global_state = - anv_genX(device->info, cmd_buffer_ray_query_globals)(cmd_buffer); - struct anv_address ray_query_globals_addr = - anv_state_pool_state_address(&device->dynamic_state_pool, - ray_query_global_state); + anv_genX(device->info, cmd_buffer_ray_query_globals)(cmd_buffer); pipeline_state->push_constants.ray_query_globals = anv_address_physical(ray_query_globals_addr); cmd_buffer->state.push_constants_dirty |= stages; @@ -1085,9 +1081,9 @@ anv_cmd_buffer_gfx_push_constants(struct anv_cmd_buffer *cmd_buffer) &cmd_buffer->state.gfx.base.push_constants; struct anv_state state = - anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, - sizeof(struct anv_push_constants), - 32 /* bottom 5 bits MBZ */); + anv_cmd_buffer_alloc_temporary_state(cmd_buffer, + sizeof(struct anv_push_constants), + 32 /* bottom 5 bits MBZ */); memcpy(state.map, data, sizeof(struct anv_push_constants)); return state; diff --git a/src/intel/vulkan/anv_genX.h b/src/intel/vulkan/anv_genX.h index 0427700fbfb..a601d9969e0 100644 --- a/src/intel/vulkan/anv_genX.h +++ b/src/intel/vulkan/anv_genX.h @@ -171,7 +171,7 @@ void genX(cmd_buffer_mark_image_written)(struct anv_cmd_buffer *cmd_buffer, void genX(cmd_emit_conditional_render_predicate)(struct anv_cmd_buffer *cmd_buffer); -struct anv_state genX(cmd_buffer_ray_query_globals)(struct anv_cmd_buffer *cmd_buffer); +struct anv_address genX(cmd_buffer_ray_query_globals)(struct anv_cmd_buffer *cmd_buffer); void genX(cmd_buffer_ensure_cfe_state)(struct anv_cmd_buffer *cmd_buffer, uint32_t total_scratch); diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index d7f0aa272cb..db7fa0d5d77 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -3929,6 +3929,20 @@ anv_cmd_buffer_alloc_dynamic_state(struct anv_cmd_buffer *cmd_buffer, struct anv_state anv_cmd_buffer_alloc_general_state(struct anv_cmd_buffer *cmd_buffer, uint32_t size, uint32_t alignment); +static inline struct anv_state +anv_cmd_buffer_alloc_temporary_state(struct anv_cmd_buffer *cmd_buffer, + uint32_t size, uint32_t alignment) +{ + return anv_state_stream_alloc(&cmd_buffer->dynamic_state_stream, + size, alignment); +} +static inline struct anv_address +anv_cmd_buffer_temporary_state_address(struct anv_cmd_buffer *cmd_buffer, + struct anv_state state) +{ + return anv_state_pool_state_address( + &cmd_buffer->device->dynamic_state_pool, state); +} void anv_cmd_buffer_chain_command_buffers(struct anv_cmd_buffer **cmd_buffers, diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c index e0d20448e4c..ff4b6c5ae16 100644 --- a/src/intel/vulkan/genX_blorp_exec.c +++ b/src/intel/vulkan/genX_blorp_exec.c @@ -193,10 +193,9 @@ blorp_alloc_vertex_buffer(struct blorp_batch *batch, uint32_t size, { struct anv_cmd_buffer *cmd_buffer = batch->driver_batch; struct anv_state vb_state = - anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, size, 64); + anv_cmd_buffer_alloc_temporary_state(cmd_buffer, size, 64); struct anv_address vb_addr = - anv_state_pool_state_address(&cmd_buffer->device->dynamic_state_pool, - vb_state); + anv_cmd_buffer_temporary_state_address(cmd_buffer, vb_state); *addr = (struct blorp_address) { .buffer = vb_addr.bo, diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index b194d1d640c..2a88ffba431 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -5572,10 +5572,9 @@ genX(cmd_buffer_begin_companion_rcs_syncpoint)( #if GFX_VERx10 >= 125 const struct intel_device_info *info = cmd_buffer->device->info; struct anv_state syncpoint = - anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, 2 * sizeof(uint32_t), 4); + anv_cmd_buffer_alloc_temporary_state(cmd_buffer, 2 * sizeof(uint32_t), 4); struct anv_address xcs_wait_addr = - anv_state_pool_state_address(&cmd_buffer->device->dynamic_state_pool, - syncpoint); + anv_cmd_buffer_temporary_state_address(cmd_buffer, syncpoint); struct anv_address rcs_wait_addr = anv_address_add(xcs_wait_addr, 4); /* Reset the sync point */ @@ -5654,8 +5653,7 @@ genX(cmd_buffer_end_companion_rcs_syncpoint)(struct anv_cmd_buffer *cmd_buffer, { #if GFX_VERx10 >= 125 struct anv_address xcs_wait_addr = - anv_state_pool_state_address(&cmd_buffer->device->dynamic_state_pool, - syncpoint); + anv_cmd_buffer_temporary_state_address(cmd_buffer, syncpoint); struct mi_builder b; diff --git a/src/intel/vulkan/genX_cmd_compute.c b/src/intel/vulkan/genX_cmd_compute.c index 22d9e7ecdc5..fe979fd828c 100644 --- a/src/intel/vulkan/genX_cmd_compute.c +++ b/src/intel/vulkan/genX_cmd_compute.c @@ -468,14 +468,13 @@ void genX(CmdDispatchBase)( if (prog_data->uses_num_work_groups) { struct anv_state state = - anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, 12, 4); + anv_cmd_buffer_alloc_temporary_state(cmd_buffer, 12, 4); uint32_t *sizes = state.map; sizes[0] = groupCountX; sizes[1] = groupCountY; sizes[2] = groupCountZ; cmd_buffer->state.compute.num_workgroups = - anv_state_pool_state_address(&cmd_buffer->device->dynamic_state_pool, - state); + anv_cmd_buffer_temporary_state_address(cmd_buffer, state); /* The num_workgroups buffer goes in the binding table */ cmd_buffer->state.descriptors_dirty |= VK_SHADER_STAGE_COMPUTE_BIT; @@ -532,16 +531,15 @@ void genX(CmdDispatchIndirect)( trace_intel_end_compute(&cmd_buffer->trace, 0, 0, 0); } -struct anv_state +struct anv_address genX(cmd_buffer_ray_query_globals)(struct anv_cmd_buffer *cmd_buffer) { #if GFX_VERx10 >= 125 struct anv_device *device = cmd_buffer->device; struct anv_state state = - anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, - BRW_RT_DISPATCH_GLOBALS_SIZE, - 64); + anv_cmd_buffer_alloc_temporary_state(cmd_buffer, + BRW_RT_DISPATCH_GLOBALS_SIZE, 64); struct brw_rt_scratch_layout layout; uint32_t stack_ids_per_dss = 2048; /* TODO: can we use a lower value in * some cases? @@ -567,7 +565,7 @@ genX(cmd_buffer_ray_query_globals)(struct anv_cmd_buffer *cmd_buffer) }; GENX(RT_DISPATCH_GLOBALS_pack)(NULL, state.map, &rtdg); - return state; + return anv_cmd_buffer_temporary_state_address(cmd_buffer, state); #else unreachable("Not supported"); #endif @@ -734,10 +732,10 @@ cmd_buffer_emit_rt_dispatch_globals(struct anv_cmd_buffer *cmd_buffer, struct anv_cmd_ray_tracing_state *rt = &cmd_buffer->state.rt; struct anv_state rtdg_state = - anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, - BRW_RT_PUSH_CONST_OFFSET + - sizeof(struct anv_push_constants), - 64); + anv_cmd_buffer_alloc_temporary_state(cmd_buffer, + BRW_RT_PUSH_CONST_OFFSET + + sizeof(struct anv_push_constants), + 64); struct GENX(RT_DISPATCH_GLOBALS) rtdg = { .MemBaseAddress = (struct anv_address) { @@ -782,10 +780,10 @@ cmd_buffer_emit_rt_dispatch_globals_indirect(struct anv_cmd_buffer *cmd_buffer, struct anv_cmd_ray_tracing_state *rt = &cmd_buffer->state.rt; struct anv_state rtdg_state = - anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, - BRW_RT_PUSH_CONST_OFFSET + - sizeof(struct anv_push_constants), - 64); + anv_cmd_buffer_alloc_temporary_state(cmd_buffer, + BRW_RT_PUSH_CONST_OFFSET + + sizeof(struct anv_push_constants), + 64); struct GENX(RT_DISPATCH_GLOBALS) rtdg = { .MemBaseAddress = (struct anv_address) { @@ -803,9 +801,7 @@ cmd_buffer_emit_rt_dispatch_globals_indirect(struct anv_cmd_buffer *cmd_buffer, GENX(RT_DISPATCH_GLOBALS_pack)(NULL, rtdg_state.map, &rtdg); struct anv_address rtdg_addr = - anv_state_pool_state_address( - &cmd_buffer->device->dynamic_state_pool, - rtdg_state); + anv_cmd_buffer_temporary_state_address(cmd_buffer, rtdg_state); struct mi_builder b; mi_builder_init(&b, cmd_buffer->device->info, &cmd_buffer->batch); @@ -912,8 +908,7 @@ cmd_buffer_trace_rays(struct anv_cmd_buffer *cmd_buffer, sizeof(struct anv_push_constants)); struct anv_address rtdg_addr = - anv_state_pool_state_address(&cmd_buffer->device->dynamic_state_pool, - rtdg_state); + anv_cmd_buffer_temporary_state_address(cmd_buffer, rtdg_state); uint8_t local_size_log2[3]; uint32_t global_size[3] = {}; diff --git a/src/intel/vulkan/genX_cmd_draw.c b/src/intel/vulkan/genX_cmd_draw.c index b2181bb7ac7..94e17fa3e1b 100644 --- a/src/intel/vulkan/genX_cmd_draw.c +++ b/src/intel/vulkan/genX_cmd_draw.c @@ -195,9 +195,8 @@ get_push_range_address(struct anv_cmd_buffer *cmd_buffer, gfx_state->base.push_constants_state = anv_cmd_buffer_gfx_push_constants(cmd_buffer); } - return anv_state_pool_state_address( - &cmd_buffer->device->dynamic_state_pool, - gfx_state->base.push_constants_state); + return anv_cmd_buffer_temporary_state_address( + cmd_buffer, gfx_state->base.push_constants_state); } default: { diff --git a/src/intel/vulkan/genX_cmd_draw_helpers.h b/src/intel/vulkan/genX_cmd_draw_helpers.h index 75956f1b9a7..2c370909ef1 100644 --- a/src/intel/vulkan/genX_cmd_draw_helpers.h +++ b/src/intel/vulkan/genX_cmd_draw_helpers.h @@ -73,14 +73,13 @@ emit_base_vertex_instance(struct anv_cmd_buffer *cmd_buffer, } struct anv_state id_state = - anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, 8, 4); + anv_cmd_buffer_alloc_temporary_state(cmd_buffer, 8, 4); ((uint32_t *)id_state.map)[0] = base_vertex; ((uint32_t *)id_state.map)[1] = base_instance; struct anv_address addr = - anv_state_pool_state_address(&cmd_buffer->device->dynamic_state_pool, - id_state); + anv_cmd_buffer_temporary_state_address(cmd_buffer, id_state); emit_base_vertex_instance_bo(cmd_buffer, addr); } @@ -89,13 +88,12 @@ static void emit_draw_index(struct anv_cmd_buffer *cmd_buffer, uint32_t draw_index) { struct anv_state state = - anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, 4, 4); + anv_cmd_buffer_alloc_temporary_state(cmd_buffer, 4, 4); ((uint32_t *)state.map)[0] = draw_index; struct anv_address addr = - anv_state_pool_state_address(&cmd_buffer->device->dynamic_state_pool, - state); + anv_cmd_buffer_temporary_state_address(cmd_buffer, state); emit_vertex_bo(cmd_buffer, addr, 4, ANV_DRAWID_VB_INDEX); }