mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[dxvk] Introduce pseudo-features for extensions with no feature struct
Makes it easier to keep track of supported extensions.
This commit is contained in:
parent
1b66b8c9f3
commit
019ebeeaf7
@ -252,6 +252,8 @@ namespace dxvk {
|
|||||||
|| !required.vk13.maintenance4)
|
|| !required.vk13.maintenance4)
|
||||||
&& (m_deviceFeatures.extAttachmentFeedbackLoopLayout.attachmentFeedbackLoopLayout
|
&& (m_deviceFeatures.extAttachmentFeedbackLoopLayout.attachmentFeedbackLoopLayout
|
||||||
|| !required.extAttachmentFeedbackLoopLayout.attachmentFeedbackLoopLayout)
|
|| !required.extAttachmentFeedbackLoopLayout.attachmentFeedbackLoopLayout)
|
||||||
|
&& (m_deviceFeatures.extConservativeRasterization
|
||||||
|
|| !required.extConservativeRasterization)
|
||||||
&& (m_deviceFeatures.extCustomBorderColor.customBorderColors
|
&& (m_deviceFeatures.extCustomBorderColor.customBorderColors
|
||||||
|| !required.extCustomBorderColor.customBorderColors)
|
|| !required.extCustomBorderColor.customBorderColors)
|
||||||
&& (m_deviceFeatures.extCustomBorderColor.customBorderColorWithoutFormat
|
&& (m_deviceFeatures.extCustomBorderColor.customBorderColorWithoutFormat
|
||||||
@ -260,6 +262,8 @@ namespace dxvk {
|
|||||||
|| !required.extDepthClipEnable.depthClipEnable)
|
|| !required.extDepthClipEnable.depthClipEnable)
|
||||||
&& (m_deviceFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary
|
&& (m_deviceFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary
|
||||||
|| !required.extGraphicsPipelineLibrary.graphicsPipelineLibrary)
|
|| !required.extGraphicsPipelineLibrary.graphicsPipelineLibrary)
|
||||||
|
&& (m_deviceFeatures.extMemoryBudget
|
||||||
|
|| !required.extMemoryBudget)
|
||||||
&& (m_deviceFeatures.extMemoryPriority.memoryPriority
|
&& (m_deviceFeatures.extMemoryPriority.memoryPriority
|
||||||
|| !required.extMemoryPriority.memoryPriority)
|
|| !required.extMemoryPriority.memoryPriority)
|
||||||
&& (m_deviceFeatures.extNonSeamlessCubeMap.nonSeamlessCubeMap
|
&& (m_deviceFeatures.extNonSeamlessCubeMap.nonSeamlessCubeMap
|
||||||
@ -272,6 +276,8 @@ namespace dxvk {
|
|||||||
|| !required.extRobustness2.nullDescriptor)
|
|| !required.extRobustness2.nullDescriptor)
|
||||||
&& (m_deviceFeatures.extShaderModuleIdentifier.shaderModuleIdentifier
|
&& (m_deviceFeatures.extShaderModuleIdentifier.shaderModuleIdentifier
|
||||||
|| !required.extShaderModuleIdentifier.shaderModuleIdentifier)
|
|| !required.extShaderModuleIdentifier.shaderModuleIdentifier)
|
||||||
|
&& (m_deviceFeatures.extShaderStencilExport
|
||||||
|
|| !required.extShaderStencilExport)
|
||||||
&& (m_deviceFeatures.extTransformFeedback.transformFeedback
|
&& (m_deviceFeatures.extTransformFeedback.transformFeedback
|
||||||
|| !required.extTransformFeedback.transformFeedback)
|
|| !required.extTransformFeedback.transformFeedback)
|
||||||
&& (m_deviceFeatures.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor
|
&& (m_deviceFeatures.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor
|
||||||
@ -390,17 +396,6 @@ namespace dxvk {
|
|||||||
enabledFeatures.extShaderModuleIdentifier.shaderModuleIdentifier =
|
enabledFeatures.extShaderModuleIdentifier.shaderModuleIdentifier =
|
||||||
m_deviceFeatures.extShaderModuleIdentifier.shaderModuleIdentifier;
|
m_deviceFeatures.extShaderModuleIdentifier.shaderModuleIdentifier;
|
||||||
|
|
||||||
Logger::info(str::format("Device properties:"
|
|
||||||
"\n Device name: : ", m_deviceInfo.core.properties.deviceName,
|
|
||||||
"\n Driver version : ",
|
|
||||||
VK_VERSION_MAJOR(m_deviceInfo.core.properties.driverVersion), ".",
|
|
||||||
VK_VERSION_MINOR(m_deviceInfo.core.properties.driverVersion), ".",
|
|
||||||
VK_VERSION_PATCH(m_deviceInfo.core.properties.driverVersion)));
|
|
||||||
|
|
||||||
Logger::info("Enabled device extensions:");
|
|
||||||
this->logNameList(extensionNameList);
|
|
||||||
this->logFeatures(enabledFeatures);
|
|
||||||
|
|
||||||
// Create pNext chain for additional device features
|
// Create pNext chain for additional device features
|
||||||
enabledFeatures.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
enabledFeatures.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
||||||
enabledFeatures.core.pNext = nullptr;
|
enabledFeatures.core.pNext = nullptr;
|
||||||
@ -414,11 +409,17 @@ namespace dxvk {
|
|||||||
enabledFeatures.vk13.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
|
enabledFeatures.vk13.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
|
||||||
enabledFeatures.vk13.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.vk13);
|
enabledFeatures.vk13.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.vk13);
|
||||||
|
|
||||||
|
if (devExtensions.amdShaderFragmentMask)
|
||||||
|
enabledFeatures.amdShaderFragmentMask = VK_TRUE;
|
||||||
|
|
||||||
if (devExtensions.extAttachmentFeedbackLoopLayout) {
|
if (devExtensions.extAttachmentFeedbackLoopLayout) {
|
||||||
enabledFeatures.extAttachmentFeedbackLoopLayout.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT;
|
enabledFeatures.extAttachmentFeedbackLoopLayout.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT;
|
||||||
enabledFeatures.extAttachmentFeedbackLoopLayout.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extAttachmentFeedbackLoopLayout);
|
enabledFeatures.extAttachmentFeedbackLoopLayout.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extAttachmentFeedbackLoopLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (devExtensions.extConservativeRasterization)
|
||||||
|
enabledFeatures.extConservativeRasterization = VK_TRUE;
|
||||||
|
|
||||||
if (devExtensions.extCustomBorderColor) {
|
if (devExtensions.extCustomBorderColor) {
|
||||||
enabledFeatures.extCustomBorderColor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
|
enabledFeatures.extCustomBorderColor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
|
||||||
enabledFeatures.extCustomBorderColor.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extCustomBorderColor);
|
enabledFeatures.extCustomBorderColor.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extCustomBorderColor);
|
||||||
@ -429,11 +430,17 @@ namespace dxvk {
|
|||||||
enabledFeatures.extDepthClipEnable.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extDepthClipEnable);
|
enabledFeatures.extDepthClipEnable.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extDepthClipEnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (devExtensions.extFullScreenExclusive)
|
||||||
|
enabledFeatures.extFullScreenExclusive = VK_TRUE;
|
||||||
|
|
||||||
if (devExtensions.extGraphicsPipelineLibrary) {
|
if (devExtensions.extGraphicsPipelineLibrary) {
|
||||||
enabledFeatures.extGraphicsPipelineLibrary.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
|
enabledFeatures.extGraphicsPipelineLibrary.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
|
||||||
enabledFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extGraphicsPipelineLibrary);
|
enabledFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extGraphicsPipelineLibrary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (devExtensions.extMemoryBudget)
|
||||||
|
enabledFeatures.extMemoryBudget = VK_TRUE;
|
||||||
|
|
||||||
if (devExtensions.extMemoryPriority) {
|
if (devExtensions.extMemoryPriority) {
|
||||||
enabledFeatures.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
|
enabledFeatures.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
|
||||||
enabledFeatures.extMemoryPriority.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extMemoryPriority);
|
enabledFeatures.extMemoryPriority.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extMemoryPriority);
|
||||||
@ -454,6 +461,9 @@ namespace dxvk {
|
|||||||
enabledFeatures.extRobustness2.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extRobustness2);
|
enabledFeatures.extRobustness2.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extRobustness2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (devExtensions.extShaderStencilExport)
|
||||||
|
enabledFeatures.extShaderStencilExport = VK_TRUE;
|
||||||
|
|
||||||
if (devExtensions.extTransformFeedback) {
|
if (devExtensions.extTransformFeedback) {
|
||||||
enabledFeatures.extTransformFeedback.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
|
enabledFeatures.extTransformFeedback.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
|
||||||
enabledFeatures.extTransformFeedback.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extTransformFeedback);
|
enabledFeatures.extTransformFeedback.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extTransformFeedback);
|
||||||
@ -464,6 +474,30 @@ namespace dxvk {
|
|||||||
enabledFeatures.extVertexAttributeDivisor.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extVertexAttributeDivisor);
|
enabledFeatures.extVertexAttributeDivisor.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extVertexAttributeDivisor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (devExtensions.khrExternalMemoryWin32)
|
||||||
|
enabledFeatures.khrExternalMemoryWin32 = VK_TRUE;
|
||||||
|
|
||||||
|
if (devExtensions.khrExternalSemaphoreWin32)
|
||||||
|
enabledFeatures.khrExternalSemaphoreWin32 = VK_TRUE;
|
||||||
|
|
||||||
|
if (devExtensions.nvxBinaryImport)
|
||||||
|
enabledFeatures.nvxBinaryImport = VK_TRUE;
|
||||||
|
|
||||||
|
if (devExtensions.nvxImageViewHandle)
|
||||||
|
enabledFeatures.nvxImageViewHandle = VK_TRUE;
|
||||||
|
|
||||||
|
// Log feature support info an extension list
|
||||||
|
Logger::info(str::format("Device properties:"
|
||||||
|
"\n Device name: : ", m_deviceInfo.core.properties.deviceName,
|
||||||
|
"\n Driver version : ",
|
||||||
|
VK_VERSION_MAJOR(m_deviceInfo.core.properties.driverVersion), ".",
|
||||||
|
VK_VERSION_MINOR(m_deviceInfo.core.properties.driverVersion), ".",
|
||||||
|
VK_VERSION_PATCH(m_deviceInfo.core.properties.driverVersion)));
|
||||||
|
|
||||||
|
Logger::info("Enabled device extensions:");
|
||||||
|
this->logNameList(extensionNameList);
|
||||||
|
this->logFeatures(enabledFeatures);
|
||||||
|
|
||||||
// Report the desired overallocation behaviour to the driver
|
// Report the desired overallocation behaviour to the driver
|
||||||
VkDeviceMemoryOverallocationCreateInfoAMD overallocInfo = { VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD };
|
VkDeviceMemoryOverallocationCreateInfoAMD overallocInfo = { VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD };
|
||||||
overallocInfo.overallocationBehavior = VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD;
|
overallocInfo.overallocationBehavior = VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD;
|
||||||
@ -698,11 +732,17 @@ namespace dxvk {
|
|||||||
m_deviceFeatures.vk13.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
|
m_deviceFeatures.vk13.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
|
||||||
m_deviceFeatures.vk13.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.vk13);
|
m_deviceFeatures.vk13.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.vk13);
|
||||||
|
|
||||||
|
if (m_deviceExtensions.supports(VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME))
|
||||||
|
m_deviceFeatures.amdShaderFragmentMask = VK_TRUE;
|
||||||
|
|
||||||
if (m_deviceExtensions.supports(VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME)) {
|
if (m_deviceExtensions.supports(VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME)) {
|
||||||
m_deviceFeatures.extAttachmentFeedbackLoopLayout.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT;
|
m_deviceFeatures.extAttachmentFeedbackLoopLayout.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT;
|
||||||
m_deviceFeatures.extAttachmentFeedbackLoopLayout.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extAttachmentFeedbackLoopLayout);
|
m_deviceFeatures.extAttachmentFeedbackLoopLayout.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extAttachmentFeedbackLoopLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_deviceExtensions.supports(VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME))
|
||||||
|
m_deviceFeatures.extConservativeRasterization = VK_TRUE;
|
||||||
|
|
||||||
if (m_deviceExtensions.supports(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME)) {
|
if (m_deviceExtensions.supports(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME)) {
|
||||||
m_deviceFeatures.extCustomBorderColor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
|
m_deviceFeatures.extCustomBorderColor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
|
||||||
m_deviceFeatures.extCustomBorderColor.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extCustomBorderColor);
|
m_deviceFeatures.extCustomBorderColor.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extCustomBorderColor);
|
||||||
@ -713,11 +753,17 @@ namespace dxvk {
|
|||||||
m_deviceFeatures.extDepthClipEnable.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extDepthClipEnable);
|
m_deviceFeatures.extDepthClipEnable.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extDepthClipEnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_deviceExtensions.supports(VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME))
|
||||||
|
m_deviceFeatures.extFullScreenExclusive = VK_TRUE;
|
||||||
|
|
||||||
if (m_deviceExtensions.supports(VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME)) {
|
if (m_deviceExtensions.supports(VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME)) {
|
||||||
m_deviceFeatures.extGraphicsPipelineLibrary.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
|
m_deviceFeatures.extGraphicsPipelineLibrary.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
|
||||||
m_deviceFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extGraphicsPipelineLibrary);
|
m_deviceFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extGraphicsPipelineLibrary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_deviceExtensions.supports(VK_EXT_MEMORY_BUDGET_EXTENSION_NAME))
|
||||||
|
m_deviceFeatures.extMemoryBudget = VK_TRUE;
|
||||||
|
|
||||||
if (m_deviceExtensions.supports(VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME)) {
|
if (m_deviceExtensions.supports(VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME)) {
|
||||||
m_deviceFeatures.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
|
m_deviceFeatures.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
|
||||||
m_deviceFeatures.extMemoryPriority.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extMemoryPriority);
|
m_deviceFeatures.extMemoryPriority.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extMemoryPriority);
|
||||||
@ -738,6 +784,9 @@ namespace dxvk {
|
|||||||
m_deviceFeatures.extShaderModuleIdentifier.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extShaderModuleIdentifier);
|
m_deviceFeatures.extShaderModuleIdentifier.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extShaderModuleIdentifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_deviceExtensions.supports(VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME))
|
||||||
|
m_deviceFeatures.extShaderStencilExport = VK_TRUE;
|
||||||
|
|
||||||
if (m_deviceExtensions.supports(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)) {
|
if (m_deviceExtensions.supports(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)) {
|
||||||
m_deviceFeatures.extTransformFeedback.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
|
m_deviceFeatures.extTransformFeedback.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
|
||||||
m_deviceFeatures.extTransformFeedback.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extTransformFeedback);
|
m_deviceFeatures.extTransformFeedback.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extTransformFeedback);
|
||||||
@ -748,6 +797,18 @@ namespace dxvk {
|
|||||||
m_deviceFeatures.extVertexAttributeDivisor.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extVertexAttributeDivisor);
|
m_deviceFeatures.extVertexAttributeDivisor.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extVertexAttributeDivisor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_deviceExtensions.supports(VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME))
|
||||||
|
m_deviceFeatures.khrExternalMemoryWin32 = VK_TRUE;
|
||||||
|
|
||||||
|
if (m_deviceExtensions.supports(VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME))
|
||||||
|
m_deviceFeatures.khrExternalSemaphoreWin32 = VK_TRUE;
|
||||||
|
|
||||||
|
if (m_deviceExtensions.supports(VK_NVX_BINARY_IMPORT_EXTENSION_NAME))
|
||||||
|
m_deviceFeatures.nvxBinaryImport = VK_TRUE;
|
||||||
|
|
||||||
|
if (m_deviceExtensions.supports(VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME))
|
||||||
|
m_deviceFeatures.nvxImageViewHandle = VK_TRUE;
|
||||||
|
|
||||||
m_vki->vkGetPhysicalDeviceFeatures2(m_handle, &m_deviceFeatures.core);
|
m_vki->vkGetPhysicalDeviceFeatures2(m_handle, &m_deviceFeatures.core);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -840,15 +901,23 @@ namespace dxvk {
|
|||||||
"\n shaderZeroInitializeWorkgroupMemory : ", features.vk13.shaderZeroInitializeWorkgroupMemory,
|
"\n shaderZeroInitializeWorkgroupMemory : ", features.vk13.shaderZeroInitializeWorkgroupMemory,
|
||||||
"\n synchronization2 : ", features.vk13.synchronization2,
|
"\n synchronization2 : ", features.vk13.synchronization2,
|
||||||
"\n dynamicRendering : ", features.vk13.dynamicRendering,
|
"\n dynamicRendering : ", features.vk13.dynamicRendering,
|
||||||
|
"\n", VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME,
|
||||||
|
"\n extension supported : ", features.amdShaderFragmentMask ? "1" : "0",
|
||||||
"\n", VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME,
|
"\n", VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME,
|
||||||
"\n attachmentFeedbackLoopLayout : ", features.extAttachmentFeedbackLoopLayout.attachmentFeedbackLoopLayout ? "1" : "0",
|
"\n attachmentFeedbackLoopLayout : ", features.extAttachmentFeedbackLoopLayout.attachmentFeedbackLoopLayout ? "1" : "0",
|
||||||
|
"\n", VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME,
|
||||||
|
"\n extension supported : ", features.extConservativeRasterization ? "1" : "0",
|
||||||
"\n", VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME,
|
"\n", VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME,
|
||||||
"\n customBorderColors : ", features.extCustomBorderColor.customBorderColors ? "1" : "0",
|
"\n customBorderColors : ", features.extCustomBorderColor.customBorderColors ? "1" : "0",
|
||||||
"\n customBorderColorWithoutFormat : ", features.extCustomBorderColor.customBorderColorWithoutFormat ? "1" : "0",
|
"\n customBorderColorWithoutFormat : ", features.extCustomBorderColor.customBorderColorWithoutFormat ? "1" : "0",
|
||||||
"\n", VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME,
|
"\n", VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME,
|
||||||
"\n depthClipEnable : ", features.extDepthClipEnable.depthClipEnable ? "1" : "0",
|
"\n depthClipEnable : ", features.extDepthClipEnable.depthClipEnable ? "1" : "0",
|
||||||
|
"\n", VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME,
|
||||||
|
"\n extension supported : ", features.extFullScreenExclusive ? "1" : "0",
|
||||||
"\n", VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME,
|
"\n", VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME,
|
||||||
"\n graphicsPipelineLibrary : ", features.extGraphicsPipelineLibrary.graphicsPipelineLibrary ? "1" : "0",
|
"\n graphicsPipelineLibrary : ", features.extGraphicsPipelineLibrary.graphicsPipelineLibrary ? "1" : "0",
|
||||||
|
"\n", VK_EXT_MEMORY_BUDGET_EXTENSION_NAME,
|
||||||
|
"\n extension supported : ", features.extMemoryBudget ? "1" : "0",
|
||||||
"\n", VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME,
|
"\n", VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME,
|
||||||
"\n memoryPriority : ", features.extMemoryPriority.memoryPriority ? "1" : "0",
|
"\n memoryPriority : ", features.extMemoryPriority.memoryPriority ? "1" : "0",
|
||||||
"\n", VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME,
|
"\n", VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME,
|
||||||
@ -859,12 +928,22 @@ namespace dxvk {
|
|||||||
"\n nullDescriptor : ", features.extRobustness2.nullDescriptor ? "1" : "0",
|
"\n nullDescriptor : ", features.extRobustness2.nullDescriptor ? "1" : "0",
|
||||||
"\n", VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME,
|
"\n", VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME,
|
||||||
"\n shaderModuleIdentifier : ", features.extShaderModuleIdentifier.shaderModuleIdentifier ? "1" : "0",
|
"\n shaderModuleIdentifier : ", features.extShaderModuleIdentifier.shaderModuleIdentifier ? "1" : "0",
|
||||||
|
"\n", VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME,
|
||||||
|
"\n extension supported : ", features.extShaderStencilExport ? "1" : "0",
|
||||||
"\n", VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME,
|
"\n", VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME,
|
||||||
"\n transformFeedback : ", features.extTransformFeedback.transformFeedback ? "1" : "0",
|
"\n transformFeedback : ", features.extTransformFeedback.transformFeedback ? "1" : "0",
|
||||||
"\n geometryStreams : ", features.extTransformFeedback.geometryStreams ? "1" : "0",
|
"\n geometryStreams : ", features.extTransformFeedback.geometryStreams ? "1" : "0",
|
||||||
"\n", VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME,
|
"\n", VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME,
|
||||||
"\n vertexAttributeInstanceRateDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor ? "1" : "0",
|
"\n vertexAttributeInstanceRateDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor ? "1" : "0",
|
||||||
"\n vertexAttributeInstanceRateZeroDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor ? "1" : "0"));
|
"\n vertexAttributeInstanceRateZeroDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor ? "1" : "0",
|
||||||
|
"\n", VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME,
|
||||||
|
"\n extension supported : ", features.khrExternalMemoryWin32 ? "1" : "0",
|
||||||
|
"\n", VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME,
|
||||||
|
"\n extension supported : ", features.khrExternalSemaphoreWin32 ? "1" : "0",
|
||||||
|
"\n", VK_NVX_BINARY_IMPORT_EXTENSION_NAME,
|
||||||
|
"\n extension supported : ", features.nvxBinaryImport ? "1" : "0",
|
||||||
|
"\n", VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME,
|
||||||
|
"\n extension supported : ", features.nvxImageViewHandle ? "1" : "0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,16 +38,25 @@ namespace dxvk {
|
|||||||
VkPhysicalDeviceVulkan11Features vk11;
|
VkPhysicalDeviceVulkan11Features vk11;
|
||||||
VkPhysicalDeviceVulkan12Features vk12;
|
VkPhysicalDeviceVulkan12Features vk12;
|
||||||
VkPhysicalDeviceVulkan13Features vk13;
|
VkPhysicalDeviceVulkan13Features vk13;
|
||||||
|
VkBool32 amdShaderFragmentMask;
|
||||||
VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT extAttachmentFeedbackLoopLayout;
|
VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT extAttachmentFeedbackLoopLayout;
|
||||||
|
VkBool32 extConservativeRasterization;
|
||||||
VkPhysicalDeviceCustomBorderColorFeaturesEXT extCustomBorderColor;
|
VkPhysicalDeviceCustomBorderColorFeaturesEXT extCustomBorderColor;
|
||||||
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
|
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
|
||||||
|
VkBool32 extFullScreenExclusive;
|
||||||
VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT extGraphicsPipelineLibrary;
|
VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT extGraphicsPipelineLibrary;
|
||||||
|
VkBool32 extMemoryBudget;
|
||||||
VkPhysicalDeviceMemoryPriorityFeaturesEXT extMemoryPriority;
|
VkPhysicalDeviceMemoryPriorityFeaturesEXT extMemoryPriority;
|
||||||
VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT extNonSeamlessCubeMap;
|
VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT extNonSeamlessCubeMap;
|
||||||
VkPhysicalDeviceRobustness2FeaturesEXT extRobustness2;
|
VkPhysicalDeviceRobustness2FeaturesEXT extRobustness2;
|
||||||
VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT extShaderModuleIdentifier;
|
VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT extShaderModuleIdentifier;
|
||||||
|
VkBool32 extShaderStencilExport;
|
||||||
VkPhysicalDeviceTransformFeedbackFeaturesEXT extTransformFeedback;
|
VkPhysicalDeviceTransformFeedbackFeaturesEXT extTransformFeedback;
|
||||||
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT extVertexAttributeDivisor;
|
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT extVertexAttributeDivisor;
|
||||||
|
VkBool32 khrExternalMemoryWin32;
|
||||||
|
VkBool32 khrExternalSemaphoreWin32;
|
||||||
|
VkBool32 nvxBinaryImport;
|
||||||
|
VkBool32 nvxImageViewHandle;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user