| 3537 | } |
| 3538 | } |
| 3539 | void VulkanDeviceInfoExtensions::readPhysicalFeatures_NV() { |
| 3540 | VkPhysicalDeviceFeatures2 deviceFeatures2{}; |
| 3541 | if (extensionSupported("VK_NV_corner_sampled_image")) { |
| 3542 | const char* extension("VK_NV_corner_sampled_image"); |
| 3543 | VkPhysicalDeviceCornerSampledImageFeaturesNV* extFeatures = new VkPhysicalDeviceCornerSampledImageFeaturesNV{}; |
| 3544 | extFeatures->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV; |
| 3545 | deviceFeatures2 = initDeviceFeatures2(extFeatures); |
| 3546 | vulkanContext.vkGetPhysicalDeviceFeatures2KHR(device, &deviceFeatures2); |
| 3547 | pushFeature2(extension, "cornerSampledImage", extFeatures->cornerSampledImage); |
| 3548 | delete extFeatures; |
| 3549 | } |
| 3550 | if (extensionSupported("VK_NV_shader_sm_builtins")) { |
| 3551 | const char* extension("VK_NV_shader_sm_builtins"); |
| 3552 | VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* extFeatures = new VkPhysicalDeviceShaderSMBuiltinsFeaturesNV{}; |
| 3553 | extFeatures->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV; |
| 3554 | deviceFeatures2 = initDeviceFeatures2(extFeatures); |
| 3555 | vulkanContext.vkGetPhysicalDeviceFeatures2KHR(device, &deviceFeatures2); |
| 3556 | pushFeature2(extension, "shaderSMBuiltins", extFeatures->shaderSMBuiltins); |
| 3557 | delete extFeatures; |
| 3558 | } |
| 3559 | if (extensionSupported("VK_NV_shading_rate_image")) { |
| 3560 | const char* extension("VK_NV_shading_rate_image"); |
| 3561 | VkPhysicalDeviceShadingRateImageFeaturesNV* extFeatures = new VkPhysicalDeviceShadingRateImageFeaturesNV{}; |
| 3562 | extFeatures->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV; |
| 3563 | deviceFeatures2 = initDeviceFeatures2(extFeatures); |
| 3564 | vulkanContext.vkGetPhysicalDeviceFeatures2KHR(device, &deviceFeatures2); |
| 3565 | pushFeature2(extension, "shadingRateImage", extFeatures->shadingRateImage); |
| 3566 | pushFeature2(extension, "shadingRateCoarseSampleOrder", extFeatures->shadingRateCoarseSampleOrder); |
| 3567 | delete extFeatures; |
| 3568 | } |
| 3569 | if (extensionSupported("VK_NV_representative_fragment_test")) { |
| 3570 | const char* extension("VK_NV_representative_fragment_test"); |
| 3571 | VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* extFeatures = new VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV{}; |
| 3572 | extFeatures->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV; |
| 3573 | deviceFeatures2 = initDeviceFeatures2(extFeatures); |
| 3574 | vulkanContext.vkGetPhysicalDeviceFeatures2KHR(device, &deviceFeatures2); |
| 3575 | pushFeature2(extension, "representativeFragmentTest", extFeatures->representativeFragmentTest); |
| 3576 | delete extFeatures; |
| 3577 | } |
| 3578 | if (extensionSupported("VK_NV_compute_shader_derivatives")) { |
| 3579 | const char* extension("VK_NV_compute_shader_derivatives"); |
| 3580 | VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* extFeatures = new VkPhysicalDeviceComputeShaderDerivativesFeaturesNV{}; |
| 3581 | extFeatures->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV; |
| 3582 | deviceFeatures2 = initDeviceFeatures2(extFeatures); |
| 3583 | vulkanContext.vkGetPhysicalDeviceFeatures2KHR(device, &deviceFeatures2); |
| 3584 | pushFeature2(extension, "computeDerivativeGroupQuads", extFeatures->computeDerivativeGroupQuads); |
| 3585 | pushFeature2(extension, "computeDerivativeGroupLinear", extFeatures->computeDerivativeGroupLinear); |
| 3586 | delete extFeatures; |
| 3587 | } |
| 3588 | if (extensionSupported("VK_NV_mesh_shader")) { |
| 3589 | const char* extension("VK_NV_mesh_shader"); |
| 3590 | VkPhysicalDeviceMeshShaderFeaturesNV* extFeatures = new VkPhysicalDeviceMeshShaderFeaturesNV{}; |
| 3591 | extFeatures->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV; |
| 3592 | deviceFeatures2 = initDeviceFeatures2(extFeatures); |
| 3593 | vulkanContext.vkGetPhysicalDeviceFeatures2KHR(device, &deviceFeatures2); |
| 3594 | pushFeature2(extension, "taskShader", extFeatures->taskShader); |
| 3595 | pushFeature2(extension, "meshShader", extFeatures->meshShader); |
| 3596 | delete extFeatures; |
nothing calls this directly
no outgoing calls
no test coverage detected