diff options
author | Philip Rebohle <philip.rebohle@tu-dortmund.de> | 2020-05-06 00:16:12 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <post@arntzen-software.no> | 2020-05-07 16:24:35 +0300 |
commit | 00e956dfac19faf879d614fb2548ccab93f59e02 (patch) | |
tree | 28f5697d57898e99eb4e312416056424f38e4ed3 | |
parent | 2e0ce6a18603f1f46049fc2fbeb8c9ab90c4c29d (diff) |
vkd3d: Expose Tiled Resources Tier 1.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
-rw-r--r-- | libs/vkd3d/device.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 93a8576e..a63df5fa 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -4220,6 +4220,20 @@ static D3D12_RESOURCE_BINDING_TIER d3d12_device_determine_resource_binding_tier( return D3D12_RESOURCE_BINDING_TIER_3; } +static D3D12_TILED_RESOURCES_TIER d3d12_device_determine_tiled_resources_tier(struct d3d12_device *device) +{ + const VkPhysicalDeviceSparseProperties *sparse_properties = &device->device_info.properties2.properties.sparseProperties; + const VkPhysicalDeviceFeatures *features = &device->device_info.features2.features; + + if (!features->sparseBinding || !features->sparseResidencyAliased || + !features->sparseResidencyBuffer || !features->sparseResidencyImage2D || + !sparse_properties->residencyStandard2DBlockShape || + !device->queues[VKD3D_QUEUE_FAMILY_SPARSE_BINDING]) + return D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED; + + return D3D12_TILED_RESOURCES_TIER_1; +} + static void d3d12_device_caps_init_feature_options(struct d3d12_device *device) { const VkPhysicalDeviceFeatures *features = &device->device_info.features2.features; @@ -4230,8 +4244,7 @@ static void d3d12_device_caps_init_feature_options(struct d3d12_device *device) options->OutputMergerLogicOp = features->logicOp; /* Currently not supported */ options->MinPrecisionSupport = D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE; - /* Currently not supported */ - options->TiledResourcesTier = D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED; + options->TiledResourcesTier = d3d12_device_determine_tiled_resources_tier(device); options->ResourceBindingTier = d3d12_device_determine_resource_binding_tier(device); options->PSSpecifiedStencilRefSupported = vk_info->EXT_shader_stencil_export; options->TypedUAVLoadAdditionalFormats = features->shaderStorageImageExtendedFormats; @@ -4342,7 +4355,6 @@ static void d3d12_device_caps_init_feature_options5(struct d3d12_device *device) const D3D12_FEATURE_DATA_D3D12_OPTIONS *options = &device->d3d12_caps.options; D3D12_FEATURE_DATA_D3D12_OPTIONS5 *options5 = &device->d3d12_caps.options5; - /* Tiled resources currently not supported */ options5->SRVOnlyTiledResourceTier3 = options->TiledResourcesTier >= D3D12_TILED_RESOURCES_TIER_3; /* Currently not supported */ options5->RenderPassesTier = D3D12_RENDER_PASS_TIER_0; |