vkd3d: Emit resource declarations for raw SSBOs.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
parent
3eac9f9c7d
commit
993cdd254e
|
@ -340,11 +340,17 @@ static HRESULT d3d12_root_signature_info_count_descriptors(struct d3d12_root_sig
|
||||||
case D3D12_DESCRIPTOR_RANGE_TYPE_SRV:
|
case D3D12_DESCRIPTOR_RANGE_TYPE_SRV:
|
||||||
/* separate image + buffer descriptors */
|
/* separate image + buffer descriptors */
|
||||||
info->binding_count += 2;
|
info->binding_count += 2;
|
||||||
|
|
||||||
|
if (device->bindless_state.flags & VKD3D_BINDLESS_RAW_SSBO)
|
||||||
|
info->binding_count += 1;
|
||||||
break;
|
break;
|
||||||
case D3D12_DESCRIPTOR_RANGE_TYPE_UAV:
|
case D3D12_DESCRIPTOR_RANGE_TYPE_UAV:
|
||||||
/* separate image + buffer descriptors */
|
/* separate image + buffer descriptors */
|
||||||
info->binding_count += 3;
|
info->binding_count += 3;
|
||||||
|
|
||||||
|
if (device->bindless_state.flags & VKD3D_BINDLESS_RAW_SSBO)
|
||||||
|
info->binding_count += 1;
|
||||||
|
|
||||||
if (device->bindless_state.flags & VKD3D_RAW_VA_UAV_COUNTER)
|
if (device->bindless_state.flags & VKD3D_RAW_VA_UAV_COUNTER)
|
||||||
info->has_raw_va_uav_counters = true;
|
info->has_raw_va_uav_counters = true;
|
||||||
break;
|
break;
|
||||||
|
@ -571,6 +577,12 @@ static HRESULT d3d12_root_signature_init_root_descriptor_tables(struct d3d12_roo
|
||||||
table->first_binding[table->binding_count++] = binding;
|
table->first_binding[table->binding_count++] = binding;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vkd3d_bindless_state_find_binding(bindless_state, range_flag | VKD3D_BINDLESS_SET_RAW_SSBO, &binding.binding))
|
||||||
|
{
|
||||||
|
binding.flags = VKD3D_SHADER_BINDING_FLAG_BINDLESS | VKD3D_SHADER_BINDING_FLAG_BUFFER | VKD3D_SHADER_BINDING_FLAG_RAW_SSBO;
|
||||||
|
table->first_binding[table->binding_count++] = binding;
|
||||||
|
}
|
||||||
|
|
||||||
if (vkd3d_bindless_state_find_binding(bindless_state, range_flag | VKD3D_BINDLESS_SET_IMAGE, &binding.binding))
|
if (vkd3d_bindless_state_find_binding(bindless_state, range_flag | VKD3D_BINDLESS_SET_IMAGE, &binding.binding))
|
||||||
{
|
{
|
||||||
binding.flags = VKD3D_SHADER_BINDING_FLAG_BINDLESS | VKD3D_SHADER_BINDING_FLAG_IMAGE;
|
binding.flags = VKD3D_SHADER_BINDING_FLAG_BINDLESS | VKD3D_SHADER_BINDING_FLAG_IMAGE;
|
||||||
|
@ -3471,6 +3483,14 @@ HRESULT vkd3d_bindless_state_init(struct vkd3d_bindless_state *bindless_state,
|
||||||
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)))
|
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
if (bindless_state->flags & VKD3D_BINDLESS_RAW_SSBO)
|
||||||
|
{
|
||||||
|
if (FAILED(hr = vkd3d_bindless_state_add_binding(bindless_state, device,
|
||||||
|
VKD3D_BINDLESS_SET_UAV | VKD3D_BINDLESS_SET_SRV | VKD3D_BINDLESS_SET_RAW_SSBO,
|
||||||
|
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER)))
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(bindless_state->flags & VKD3D_RAW_VA_UAV_COUNTER))
|
if (!(bindless_state->flags & VKD3D_RAW_VA_UAV_COUNTER))
|
||||||
{
|
{
|
||||||
if (FAILED(hr = vkd3d_bindless_state_add_binding(bindless_state, device,
|
if (FAILED(hr = vkd3d_bindless_state_add_binding(bindless_state, device,
|
||||||
|
|
|
@ -53,8 +53,8 @@
|
||||||
#define VKD3D_MAX_SHADER_STAGES 5u
|
#define VKD3D_MAX_SHADER_STAGES 5u
|
||||||
#define VKD3D_MAX_VK_SYNC_OBJECTS 4u
|
#define VKD3D_MAX_VK_SYNC_OBJECTS 4u
|
||||||
|
|
||||||
#define VKD3D_MAX_DESCRIPTOR_SETS 9u
|
#define VKD3D_MAX_DESCRIPTOR_SETS 10u
|
||||||
#define VKD3D_MAX_BINDLESS_DESCRIPTOR_SETS 7u
|
#define VKD3D_MAX_BINDLESS_DESCRIPTOR_SETS 8u
|
||||||
|
|
||||||
#define VKD3D_PIPELINE_BIND_POINT_COUNT 2u
|
#define VKD3D_PIPELINE_BIND_POINT_COUNT 2u
|
||||||
|
|
||||||
|
@ -1579,6 +1579,7 @@ enum vkd3d_bindless_set_flag
|
||||||
VKD3D_BINDLESS_SET_IMAGE = (1u << 4),
|
VKD3D_BINDLESS_SET_IMAGE = (1u << 4),
|
||||||
VKD3D_BINDLESS_SET_BUFFER = (1u << 5),
|
VKD3D_BINDLESS_SET_BUFFER = (1u << 5),
|
||||||
VKD3D_BINDLESS_SET_COUNTER = (1u << 6),
|
VKD3D_BINDLESS_SET_COUNTER = (1u << 6),
|
||||||
|
VKD3D_BINDLESS_SET_RAW_SSBO = (1u << 7),
|
||||||
};
|
};
|
||||||
|
|
||||||
struct vkd3d_bindless_set_info
|
struct vkd3d_bindless_set_info
|
||||||
|
|
Loading…
Reference in New Issue