mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-20 19:54:19 +01:00
[d3d11] Fix device feature enablement in some situations
- Geometry shaders are required by the backend - FL9 already supports BC texture formats
This commit is contained in:
parent
7056425bbd
commit
f7ed7b7118
@ -1353,6 +1353,9 @@ namespace dxvk {
|
||||
|
||||
enabled.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
||||
enabled.core.pNext = nullptr;
|
||||
// Geometry shaders are used for some meta ops
|
||||
enabled.core.features.geometryShader = VK_TRUE;
|
||||
enabled.core.features.robustBufferAccess = VK_TRUE;
|
||||
|
||||
enabled.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
|
||||
enabled.extMemoryPriority.pNext = nullptr;
|
||||
@ -1363,6 +1366,8 @@ namespace dxvk {
|
||||
|
||||
enabled.extVertexAttributeDivisor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT;
|
||||
enabled.extVertexAttributeDivisor.pNext = nullptr;
|
||||
enabled.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor = supported.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor;
|
||||
enabled.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor = supported.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor;
|
||||
|
||||
if (featureLevel >= D3D_FEATURE_LEVEL_9_1) {
|
||||
enabled.core.features.depthClamp = VK_TRUE;
|
||||
@ -1373,7 +1378,7 @@ namespace dxvk {
|
||||
enabled.core.features.samplerAnisotropy = VK_TRUE;
|
||||
enabled.core.features.shaderClipDistance = VK_TRUE;
|
||||
enabled.core.features.shaderCullDistance = VK_TRUE;
|
||||
enabled.core.features.robustBufferAccess = VK_TRUE;
|
||||
enabled.core.features.textureCompressionBC = VK_TRUE;
|
||||
}
|
||||
|
||||
if (featureLevel >= D3D_FEATURE_LEVEL_9_2) {
|
||||
@ -1381,17 +1386,14 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
if (featureLevel >= D3D_FEATURE_LEVEL_9_3) {
|
||||
enabled.core.features.multiViewport = VK_TRUE;
|
||||
enabled.core.features.independentBlend = VK_TRUE;
|
||||
enabled.core.features.multiViewport = VK_TRUE;
|
||||
}
|
||||
|
||||
if (featureLevel >= D3D_FEATURE_LEVEL_10_0) {
|
||||
enabled.core.features.fullDrawIndexUint32 = VK_TRUE;
|
||||
enabled.core.features.fragmentStoresAndAtomics = VK_TRUE;
|
||||
enabled.core.features.geometryShader = VK_TRUE;
|
||||
enabled.core.features.logicOp = supported.core.features.logicOp;
|
||||
enabled.core.features.shaderImageGatherExtended = VK_TRUE;
|
||||
enabled.core.features.textureCompressionBC = VK_TRUE;
|
||||
enabled.core.features.variableMultisampleRate = supported.core.features.variableMultisampleRate;
|
||||
enabled.extTransformFeedback.transformFeedback = supported.extTransformFeedback.transformFeedback;
|
||||
enabled.extTransformFeedback.geometryStreams = supported.extTransformFeedback.geometryStreams;
|
||||
@ -1403,14 +1405,14 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
if (featureLevel >= D3D_FEATURE_LEVEL_11_0) {
|
||||
enabled.core.features.multiDrawIndirect = supported.core.features.multiDrawIndirect;
|
||||
enabled.core.features.drawIndirectFirstInstance = VK_TRUE;
|
||||
enabled.core.features.fragmentStoresAndAtomics = VK_TRUE;
|
||||
enabled.core.features.multiDrawIndirect = supported.core.features.multiDrawIndirect;
|
||||
enabled.core.features.shaderFloat64 = supported.core.features.shaderFloat64;
|
||||
enabled.core.features.shaderInt64 = supported.core.features.shaderInt64;
|
||||
enabled.core.features.tessellationShader = VK_TRUE;
|
||||
// TODO enable unconditionally once RADV gains support
|
||||
enabled.core.features.shaderStorageImageMultisample = supported.core.features.shaderStorageImageMultisample;
|
||||
enabled.core.features.shaderStorageImageWriteWithoutFormat = VK_TRUE;
|
||||
enabled.core.features.tessellationShader = VK_TRUE;
|
||||
}
|
||||
|
||||
if (featureLevel >= D3D_FEATURE_LEVEL_11_1) {
|
||||
@ -1419,12 +1421,6 @@ namespace dxvk {
|
||||
enabled.core.features.vertexPipelineStoresAndAtomics = VK_TRUE;
|
||||
}
|
||||
|
||||
if (supported.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor
|
||||
&& supported.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor) {
|
||||
enabled.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor = VK_TRUE;
|
||||
enabled.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor = VK_TRUE;
|
||||
}
|
||||
|
||||
return enabled;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user