Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ValveSoftware/vkd3d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Rebohle <philip.rebohle@tu-dortmund.de>2020-05-06 00:16:12 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2020-05-07 16:24:35 +0300
commit00e956dfac19faf879d614fb2548ccab93f59e02 (patch)
tree28f5697d57898e99eb4e312416056424f38e4ed3
parent2e0ce6a18603f1f46049fc2fbeb8c9ab90c4c29d (diff)
vkd3d: Expose Tiled Resources Tier 1.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
-rw-r--r--libs/vkd3d/device.c18
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;