Fixing struct chaining as well as sampler LoD clamping

This commit is contained in:
Dynamitos
2025-07-08 22:06:27 +02:00
parent 075dc94f80
commit 865ea5a1c8
5 changed files with 39 additions and 41 deletions
+12 -5
View File
@@ -754,6 +754,7 @@ void Graphics::pickPhysicalDevice() {
vkGetPhysicalDeviceProperties2(physicalDevice, &props.get());
features.get<VkPhysicalDeviceFeatures2>().features = {
.geometryShader = true,
.sampleRateShading = true,
.fillModeNonSolid = true,
.wideLines = true,
.pipelineStatisticsQuery = true,
@@ -771,13 +772,13 @@ void Graphics::pickPhysicalDevice() {
features.get<VkPhysicalDeviceVulkan12Features>().storageBuffer8BitAccess = true;
features.get<VkPhysicalDeviceVulkan12Features>().shaderInt8 = true;
features.get<VkPhysicalDeviceAccelerationStructureFeaturesKHR>().accelerationStructure = true;
rayTracingFeatures.get<VkPhysicalDeviceAccelerationStructureFeaturesKHR>().accelerationStructure = true;
features.get<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>().rayTracingPipeline = true;
rayTracingFeatures.get<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>().rayTracingPipeline = true;
features.get<VkPhysicalDeviceMeshShaderFeaturesEXT>().meshShader = true;
features.get<VkPhysicalDeviceMeshShaderFeaturesEXT>().taskShader = true;
features.get<VkPhysicalDeviceMeshShaderFeaturesEXT>().meshShaderQueries = true;
meshFeatures.get<VkPhysicalDeviceMeshShaderFeaturesEXT>().meshShader = true;
meshFeatures.get<VkPhysicalDeviceMeshShaderFeaturesEXT>().taskShader = true;
meshFeatures.get<VkPhysicalDeviceMeshShaderFeaturesEXT>().meshShaderQueries = true;
bool rayTracingPipelineSupport = false;
bool accelerationStructureSupport = false;
bool hostOperationsSupport = false;
@@ -891,6 +892,7 @@ void Graphics::createDevice(GraphicsInitializer initializer) {
initializer.deviceExtensions.add(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
if (supportMeshShading()) {
initializer.deviceExtensions.add(VK_EXT_MESH_SHADER_EXTENSION_NAME);
features.get<VkPhysicalDeviceVulkan12Features>().pNext = &meshFeatures.get();
}
if (supportRayTracing()) {
// ray tracing itself
@@ -904,6 +906,11 @@ void Graphics::createDevice(GraphicsInitializer initializer) {
initializer.deviceExtensions.add(VK_KHR_SPIRV_1_4_EXTENSION_NAME);
// required for spirv_1_4
initializer.deviceExtensions.add(VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME);
if (supportMeshShading()) {
meshFeatures.get().pNext = &rayTracingFeatures.get();
} else {
features.get<VkPhysicalDeviceVulkan12Features>().pNext = &rayTracingFeatures.get();
}
}
#ifdef __APPLE__
initializer.deviceExtensions.add("VK_KHR_portability_subset");