vkd3d: Track dynamic pipeline stack size
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
parent
600a296ca7
commit
031ad9e139
|
@ -4072,6 +4072,7 @@ static bool d3d12_command_list_update_compute_pipeline(struct d3d12_command_list
|
|||
static bool d3d12_command_list_update_raygen_pipeline(struct d3d12_command_list *list)
|
||||
{
|
||||
const struct vkd3d_vk_device_procs *vk_procs = &list->device->vk_procs;
|
||||
bool stack_size_dirty = false;
|
||||
|
||||
if (list->current_pipeline != VK_NULL_HANDLE)
|
||||
return true;
|
||||
|
@ -4088,12 +4089,20 @@ static bool d3d12_command_list_update_raygen_pipeline(struct d3d12_command_list
|
|||
VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR,
|
||||
list->rt_state->pipeline));
|
||||
list->command_buffer_pipeline = list->rt_state->pipeline;
|
||||
stack_size_dirty = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
stack_size_dirty = list->dynamic_state.pipeline_stack_size != list->rt_state->pipeline_stack_size;
|
||||
}
|
||||
|
||||
/* Pipeline stack size is part of the PSO, not any command buffer state
|
||||
* for some reason ... */
|
||||
VK_CALL(vkCmdSetRayTracingPipelineStackSizeKHR(list->vk_command_buffer,
|
||||
list->rt_state->pipeline_stack_size));
|
||||
if (stack_size_dirty)
|
||||
{
|
||||
/* Pipeline stack size is part of the PSO, not any command buffer state for some reason ... */
|
||||
VK_CALL(vkCmdSetRayTracingPipelineStackSizeKHR(list->vk_command_buffer,
|
||||
list->rt_state->pipeline_stack_size));
|
||||
list->dynamic_state.pipeline_stack_size = list->rt_state->pipeline_stack_size;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1590,6 +1590,8 @@ struct vkd3d_dynamic_state
|
|||
VkExtent2D fragment_size;
|
||||
VkFragmentShadingRateCombinerOpKHR combiner_ops[D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT];
|
||||
} fragment_shading_rate;
|
||||
|
||||
uint32_t pipeline_stack_size;
|
||||
};
|
||||
|
||||
/* ID3D12CommandList */
|
||||
|
|
Loading…
Reference in New Issue