vkd3d: Add debug ring support to raytracing shaders.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
parent
089d2c6cb7
commit
7410f53912
|
@ -420,6 +420,8 @@ struct d3d12_state_object_pipeline_data
|
|||
VkPipeline *vk_libraries;
|
||||
size_t vk_libraries_size;
|
||||
size_t vk_libraries_count;
|
||||
|
||||
struct vkd3d_shader_debug_ring_spec_info *spec_info_buffer;
|
||||
};
|
||||
|
||||
static void d3d12_state_object_pipeline_data_cleanup(struct d3d12_state_object_pipeline_data *data,
|
||||
|
@ -452,6 +454,7 @@ static void d3d12_state_object_pipeline_data_cleanup(struct d3d12_state_object_p
|
|||
vkd3d_free(data->associations);
|
||||
vkd3d_free(data->collections);
|
||||
vkd3d_free(data->vk_libraries);
|
||||
vkd3d_free(data->spec_info_buffer);
|
||||
}
|
||||
|
||||
#define VKD3D_ASSOCIATION_PRIORITY_INHERITED_COLLECTION 0
|
||||
|
@ -1644,6 +1647,9 @@ static HRESULT d3d12_state_object_compile_pipeline(struct d3d12_state_object *ob
|
|||
local_static_sampler_bindings_size = 0;
|
||||
object->local_static_sampler.set_index = global_signature ? global_signature->num_set_layouts : 0;
|
||||
|
||||
if (object->device->debug_ring.active)
|
||||
data->spec_info_buffer = vkd3d_calloc(data->entry_points_count, sizeof(*data->spec_info_buffer));
|
||||
|
||||
for (i = 0; i < data->entry_points_count; i++)
|
||||
{
|
||||
entry = &data->entry_points[i];
|
||||
|
@ -1755,6 +1761,12 @@ static HRESULT d3d12_state_object_compile_pipeline(struct d3d12_state_object *ob
|
|||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
if ((spirv.meta.flags & VKD3D_SHADER_META_FLAG_REPLACED) && data->spec_info_buffer)
|
||||
{
|
||||
vkd3d_shader_debug_ring_init_spec_constant(object->device, &data->spec_info_buffer[i], spirv.meta.hash);
|
||||
stage->pSpecializationInfo = &data->spec_info_buffer[i].spec_info;
|
||||
}
|
||||
|
||||
RT_TRACE(" DXIL hash: %016"PRIx64".\n", spirv.meta.hash);
|
||||
|
||||
#ifdef VKD3D_ENABLE_BREADCRUMBS
|
||||
|
|
Loading…
Reference in New Issue