vkd3d: Enable offset buffer as necessary.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
parent
a4f68931bb
commit
49d3fa30a7
|
@ -3457,13 +3457,17 @@ static uint32_t vkd3d_bindless_state_get_bindless_flags(struct d3d12_device *dev
|
||||||
|
|
||||||
/* Normally, we would be able to use SSBOs conditionally even when maxSSBOAlignment > 4, but
|
/* Normally, we would be able to use SSBOs conditionally even when maxSSBOAlignment > 4, but
|
||||||
* applications (RE2 being one example) are of course buggy and don't match descriptor and shader usage of resources,
|
* applications (RE2 being one example) are of course buggy and don't match descriptor and shader usage of resources,
|
||||||
* so we cannot rely on alignment analysis to select the appropriate resource type.
|
* so we cannot rely on alignment analysis to select the appropriate resource type. */
|
||||||
* TODO: Implement an offset buffer system so that we can remove the minStorageBufferOffsetAlignment requirement. */
|
|
||||||
if (device_info->descriptor_indexing_properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers >= 1000000 &&
|
if (device_info->descriptor_indexing_properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers >= 1000000 &&
|
||||||
device_info->descriptor_indexing_features.descriptorBindingStorageBufferUpdateAfterBind &&
|
device_info->descriptor_indexing_features.descriptorBindingStorageBufferUpdateAfterBind &&
|
||||||
device_info->properties2.properties.limits.minStorageBufferOffsetAlignment <= 4)
|
device_info->properties2.properties.limits.minStorageBufferOffsetAlignment <= 16)
|
||||||
|
{
|
||||||
flags |= VKD3D_BINDLESS_RAW_SSBO;
|
flags |= VKD3D_BINDLESS_RAW_SSBO;
|
||||||
|
|
||||||
|
if (device_info->properties2.properties.limits.minStorageBufferOffsetAlignment > 4)
|
||||||
|
flags |= VKD3D_SSBO_OFFSET_BUFFER;
|
||||||
|
}
|
||||||
|
|
||||||
if (device_info->buffer_device_address_features.bufferDeviceAddress && (flags & VKD3D_BINDLESS_UAV))
|
if (device_info->buffer_device_address_features.bufferDeviceAddress && (flags & VKD3D_BINDLESS_UAV))
|
||||||
flags |= VKD3D_RAW_VA_UAV_COUNTER;
|
flags |= VKD3D_RAW_VA_UAV_COUNTER;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue