-- v2: wined3d: Disable 64-bit integer support. wined3d: Require shader cull distance support to create a feature level 10.0 device. wined3d: Require shader clip distance support to create a feature level 10.0 device. wined3d: Require gather offset support to create a feature level 10.1 device. wined3d: Require fragment shader image stores and atomics to create a feature level 10.0 device.
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_vk.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 713aaec9e39..f82bd5bc81c 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2280,6 +2280,7 @@ static bool feature_level_11_supported(const struct wined3d_physical_device_info return shader_model >= 5 && info->features2.features.multiDrawIndirect && info->features2.features.drawIndirectFirstInstance + && info->features2.features.fragmentStoresAndAtomics && info->features2.features.tessellationShader; }
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_vk.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index f82bd5bc81c..6b52d6a494c 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2272,7 +2272,8 @@ static bool feature_level_10_supported(const struct wined3d_physical_device_info
static bool feature_level_10_1_supported(const struct wined3d_physical_device_info *info, unsigned int shader_model) { - return info->features2.features.imageCubeArray; + return info->features2.features.imageCubeArray + && info->features2.features.shaderImageGatherExtended; }
static bool feature_level_11_supported(const struct wined3d_physical_device_info *info, unsigned int shader_model)
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_vk.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 6b52d6a494c..b3c3cc6958b 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2266,6 +2266,7 @@ static bool feature_level_10_supported(const struct wined3d_physical_device_info && info->features2.features.depthClamp && info->features2.features.depthBiasClamp && info->features2.features.pipelineStatisticsQuery + && info->features2.features.shaderClipDistance && info->vertex_divisor_features.vertexAttributeInstanceRateDivisor && info->vertex_divisor_features.vertexAttributeInstanceRateZeroDivisor; }
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_vk.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index b3c3cc6958b..d637b9d9a4f 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2267,6 +2267,7 @@ static bool feature_level_10_supported(const struct wined3d_physical_device_info && info->features2.features.depthBiasClamp && info->features2.features.pipelineStatisticsQuery && info->features2.features.shaderClipDistance + && info->features2.features.shaderCullDistance && info->vertex_divisor_features.vertexAttributeInstanceRateDivisor && info->vertex_divisor_features.vertexAttributeInstanceRateZeroDivisor; }
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_vk.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index d637b9d9a4f..40afb83e114 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -308,6 +308,7 @@ static void wined3d_disable_vulkan_features(struct wined3d_physical_device_info features->shaderSampledImageArrayDynamicIndexing = VK_FALSE; features->shaderStorageBufferArrayDynamicIndexing = VK_FALSE; features->shaderStorageImageArrayDynamicIndexing = VK_FALSE; + features->shaderInt64 = VK_FALSE; features->shaderInt16 = VK_FALSE; features->shaderResourceResidency = VK_FALSE; features->shaderResourceMinLod = VK_FALSE;
On Wed Jan 25 18:10:08 2023 +0000, Zebediah Figura wrote:
According to my reading, shaderImageGatherExtended is required to use any offsets at all, even constant offsets less than 32: "shaderImageGatherExtended specifies whether the extended set of image gather instructions are available in shader code. If this feature is not enabled, the OpImage*Gather instructions do not support the Offset and ConstOffsets operands."
But `OpImage*Gather` also accepts `ConstOffset` (no 's'). That feature flag isn't needed to use the `ConstOffset` operand with `OpImage*Gather`.