vkd3d: Support CreateSRV with RTAS.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
parent
9ff7b82235
commit
9ffa3bf351
|
@ -3502,6 +3502,25 @@ static void vkd3d_create_buffer_srv(struct d3d12_desc *descriptor,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (desc->ViewDimension == D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE)
|
||||||
|
{
|
||||||
|
if (d3d12_device_supports_ray_tracing_tier_1_0(device))
|
||||||
|
{
|
||||||
|
/* We implement this as a raw VA in the aux buffer. */
|
||||||
|
VkDeviceAddress *raw_addresses = descriptor->heap->raw_va_aux_buffer.host_ptr;
|
||||||
|
uint32_t descriptor_index = d3d12_desc_heap_offset(descriptor);
|
||||||
|
raw_addresses[descriptor_index] = desc->RaytracingAccelerationStructure.Location;
|
||||||
|
descriptor->metadata.flags = VKD3D_DESCRIPTOR_FLAG_RAW_VA_AUX_BUFFER;
|
||||||
|
descriptor->metadata.set_info_mask = 0;
|
||||||
|
/* There is no resource tied to this descriptor, just a naked pointer. */
|
||||||
|
descriptor->metadata.cookie = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
WARN("Using CreateSRV for RTAS without RT support?\n");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (desc->ViewDimension != D3D12_SRV_DIMENSION_BUFFER)
|
if (desc->ViewDimension != D3D12_SRV_DIMENSION_BUFFER)
|
||||||
{
|
{
|
||||||
WARN("Unexpected view dimension %#x.\n", desc->ViewDimension);
|
WARN("Unexpected view dimension %#x.\n", desc->ViewDimension);
|
||||||
|
@ -3776,7 +3795,8 @@ void d3d12_desc_create_srv(struct d3d12_desc *descriptor,
|
||||||
}
|
}
|
||||||
else if (desc)
|
else if (desc)
|
||||||
{
|
{
|
||||||
is_buffer = desc->ViewDimension == D3D12_SRV_DIMENSION_BUFFER;
|
is_buffer = desc->ViewDimension == D3D12_SRV_DIMENSION_BUFFER ||
|
||||||
|
desc->ViewDimension == D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue