vkd3d: Track dynamic pipeline stack size

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
Hans-Kristian Arntzen 2021-03-03 17:57:32 +01:00
parent 600a296ca7
commit 031ad9e139
2 changed files with 15 additions and 4 deletions

View File

@ -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;
}

View File

@ -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 */