update
This commit is contained in:
parent
825da78f7f
commit
b3db40ebec
6 changed files with 212 additions and 64 deletions
|
|
@ -63,6 +63,8 @@ const char* const deviceExtensionNames[] = {
|
|||
"VK_KHR_shader_float_controls",
|
||||
"VK_KHR_acceleration_structure",
|
||||
"VK_KHR_ray_tracing_pipeline",
|
||||
"VK_KHR_ray_query",
|
||||
"VK_EXT_shader_atomic_float",
|
||||
"VK_EXT_descriptor_heap",
|
||||
"VK_KHR_deferred_host_operations",
|
||||
"VK_KHR_maintenance5",
|
||||
|
|
@ -560,14 +562,30 @@ void Device::Initialize() {
|
|||
app.pEngineName = "Crafter.Graphics";
|
||||
app.apiVersion = VK_MAKE_VERSION(1, 4, 0);
|
||||
|
||||
VkValidationFeatureEnableEXT enables[] = {
|
||||
VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT
|
||||
};
|
||||
|
||||
// TODO(re-enable GPU-AV): once Vulkan SDK > 1.4.341 is the floor.
|
||||
//
|
||||
// GPU-Assisted Validation is opt-in via the enable list — leaving it
|
||||
// out disables it. SDK 1.4.341's GPU-AV does not handle
|
||||
// descriptor_heap pipelines (VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT
|
||||
// with layout = VK_NULL_HANDLE): `PipelineSubState::GetPipelineLayoutUnion`
|
||||
// null-derefs on the first dispatch/draw against such a pipeline.
|
||||
//
|
||||
// Tracked + fixed upstream:
|
||||
// https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/12103
|
||||
// Per spencer-lunarg (LunarG): broken in 1.4.341, fixed and landing
|
||||
// in the next SDK release. Once we bump our Vulkan-Headers / SDK
|
||||
// dependency past 1.4.341, restore the original enable list:
|
||||
//
|
||||
// VkValidationFeatureEnableEXT enables[] = {
|
||||
// VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT
|
||||
// };
|
||||
// validationFeatures.enabledValidationFeatureCount = 1;
|
||||
// validationFeatures.pEnabledValidationFeatures = enables;
|
||||
//
|
||||
// Standard validation (the layer itself) is still on; only the GPU-AV
|
||||
// out-of-bounds / shader-instrumentation checks are temporarily off.
|
||||
VkValidationFeaturesEXT validationFeatures = {
|
||||
.sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT,
|
||||
.enabledValidationFeatureCount = 1,
|
||||
.pEnabledValidationFeatures = enables
|
||||
};
|
||||
|
||||
VkInstanceCreateInfo instanceCreateInfo = {};
|
||||
|
|
@ -733,9 +751,15 @@ void Device::Initialize() {
|
|||
.bufferDeviceAddress = VK_TRUE
|
||||
};
|
||||
|
||||
VkPhysicalDeviceRayQueryFeaturesKHR physicalDeviceRayQueryFeatures{
|
||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
|
||||
.pNext = &features12,
|
||||
.rayQuery = VK_TRUE
|
||||
};
|
||||
|
||||
VkPhysicalDeviceRayTracingPipelineFeaturesKHR physicalDeviceRayTracingPipelineFeatures{
|
||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
|
||||
.pNext = &features12,
|
||||
.pNext = &physicalDeviceRayQueryFeatures,
|
||||
.rayTracingPipeline = VK_TRUE
|
||||
};
|
||||
|
||||
|
|
@ -809,6 +833,7 @@ void Device::Initialize() {
|
|||
|
||||
vkGetAccelerationStructureBuildSizesKHR = reinterpret_cast<PFN_vkGetAccelerationStructureBuildSizesKHR>(vkGetInstanceProcAddr(instance, "vkGetAccelerationStructureBuildSizesKHR"));
|
||||
vkCreateAccelerationStructureKHR = reinterpret_cast<PFN_vkCreateAccelerationStructureKHR>(vkGetInstanceProcAddr(instance, "vkCreateAccelerationStructureKHR"));
|
||||
vkDestroyAccelerationStructureKHR = reinterpret_cast<PFN_vkDestroyAccelerationStructureKHR>(vkGetInstanceProcAddr(instance, "vkDestroyAccelerationStructureKHR"));
|
||||
vkCmdBuildAccelerationStructuresKHR = reinterpret_cast<PFN_vkCmdBuildAccelerationStructuresKHR>(vkGetInstanceProcAddr(instance, "vkCmdBuildAccelerationStructuresKHR"));
|
||||
vkGetAccelerationStructureDeviceAddressKHR = reinterpret_cast<PFN_vkGetAccelerationStructureDeviceAddressKHR>(vkGetInstanceProcAddr(instance, "vkGetAccelerationStructureDeviceAddressKHR"));
|
||||
vkCreateRayTracingPipelinesKHR = reinterpret_cast<PFN_vkCreateRayTracingPipelinesKHR>(vkGetInstanceProcAddr(instance, "vkCreateRayTracingPipelinesKHR"));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue