From b698c0f11aabe48856ad4bd403e56aba85e33b05 Mon Sep 17 00:00:00 2001 From: niki Date: Sat, 11 Feb 2023 22:21:07 +0100 Subject: [PATCH] vulkan: rename to OptionalDeviceExtensions The previous name was misleading. --- src/modules/graphics/vulkan/Graphics.cpp | 98 ++++++++++++------------ src/modules/graphics/vulkan/Graphics.h | 6 +- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/modules/graphics/vulkan/Graphics.cpp b/src/modules/graphics/vulkan/Graphics.cpp index 52ba1bced..af282e24e 100644 --- a/src/modules/graphics/vulkan/Graphics.cpp +++ b/src/modules/graphics/vulkan/Graphics.cpp @@ -252,23 +252,23 @@ void Graphics::clear(const std::vector &colors, OptionalInt sten if (colors[i].hasValue) { renderPassState.renderPassConfiguration.colorAttachments[i].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - renderPassState.clearColors[i].color.float32[0] = colors[i].value.r; - renderPassState.clearColors[i].color.float32[1] = colors[i].value.g; - renderPassState.clearColors[i].color.float32[2] = colors[i].value.b; - renderPassState.clearColors[i].color.float32[3] = colors[i].value.a; + renderPassState.clearColors[i].color.float32[0] = static_cast(colors[i].value.r); + renderPassState.clearColors[i].color.float32[1] = static_cast(colors[i].value.g); + renderPassState.clearColors[i].color.float32[2] = static_cast(colors[i].value.b); + renderPassState.clearColors[i].color.float32[3] = static_cast(colors[i].value.a); } } if (depth.hasValue) { renderPassState.renderPassConfiguration.staticData.depthStencilAttachment.depthLoadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - renderPassState.clearColors[colors.size()].depthStencil.depth = depth.value; + renderPassState.clearColors[colors.size()].depthStencil.depth = static_cast(depth.value); } if (stencil.hasValue) { renderPassState.renderPassConfiguration.staticData.depthStencilAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - renderPassState.clearColors[colors.size()].depthStencil.stencil = stencil.value; + renderPassState.clearColors[colors.size()].depthStencil.stencil = static_cast(stencil.value); } startRenderPass(); @@ -686,7 +686,7 @@ void Graphics::setFrontFaceWinding(Winding winding) states.back().winding = winding; - if (optionalDeviceFeatures.extendedDynamicState) + if (optionalDeviceExtensions.extendedDynamicState) vkCmdSetFrontFaceEXT( commandBuffers.at(currentFrame), Vulkan::getFrontFace(winding)); @@ -923,7 +923,7 @@ void Graphics::setStencilMode(StencilAction action, CompareMode compare, int val vkCmdSetStencilCompareMask(commandBuffers.at(currentFrame), VK_STENCIL_FRONT_AND_BACK, readmask); vkCmdSetStencilReference(commandBuffers.at(currentFrame), VK_STENCIL_FRONT_AND_BACK, value); - if (optionalDeviceFeatures.extendedDynamicState) + if (optionalDeviceExtensions.extendedDynamicState) vkCmdSetStencilOpEXT( commandBuffers.at(currentFrame), VK_STENCIL_FRONT_AND_BACK, @@ -941,7 +941,7 @@ void Graphics::setDepthMode(CompareMode compare, bool write) { flushBatchedDraws(); - if (optionalDeviceFeatures.extendedDynamicState) + if (optionalDeviceExtensions.extendedDynamicState) { vkCmdSetDepthCompareOpEXT( commandBuffers.at(currentFrame), Vulkan::getCompareOp(compare)); @@ -1144,7 +1144,7 @@ void Graphics::initDynamicState() vkCmdSetStencilCompareMask(commandBuffers.at(currentFrame), VK_STENCIL_FRONT_AND_BACK, states.back().stencil.readMask); vkCmdSetStencilReference(commandBuffers.at(currentFrame), VK_STENCIL_FRONT_AND_BACK, states.back().stencil.value); - if (optionalDeviceFeatures.extendedDynamicState) + if (optionalDeviceExtensions.extendedDynamicState) { vkCmdSetStencilOpEXT( commandBuffers.at(currentFrame), @@ -1321,9 +1321,9 @@ graphics::Shader::BuiltinUniformData Graphics::getCurrentBuiltinUniformData() return data; } -const OptionalDeviceFeatures &Graphics::getEnabledOptionalDeviceExtensions() const +const OptionalDeviceExtensions&Graphics::getEnabledOptionalDeviceExtensions() const { - return optionalDeviceFeatures; + return optionalDeviceExtensions; } static void checkOptionalInstanceExtensions(OptionalInstanceExtensions &ext) @@ -1550,7 +1550,7 @@ QueueFamilyIndices Graphics::findQueueFamilies(VkPhysicalDevice device) return indices; } -static void findOptionalDeviceExtensions(VkPhysicalDevice physicalDevice, OptionalDeviceFeatures &optionalDeviceFeatures) +static void findOptionalDeviceExtensions(VkPhysicalDevice physicalDevice, OptionalDeviceExtensions &optionalDeviceExtensions) { uint32_t extensionCount; vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extensionCount, nullptr); @@ -1561,19 +1561,19 @@ static void findOptionalDeviceExtensions(VkPhysicalDevice physicalDevice, Option for (const auto &extension : availableExtensions) { if (strcmp(extension.extensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME) == 0) - optionalDeviceFeatures.extendedDynamicState = true; + optionalDeviceExtensions.extendedDynamicState = true; if (strcmp(extension.extensionName, VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME) == 0) - optionalDeviceFeatures.memoryRequirements2 = true; + optionalDeviceExtensions.memoryRequirements2 = true; if (strcmp(extension.extensionName, VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME) == 0) - optionalDeviceFeatures.dedicatedAllocation = true; + optionalDeviceExtensions.dedicatedAllocation = true; if (strcmp(extension.extensionName, VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME) == 0) - optionalDeviceFeatures.bufferDeviceAddress = true; + optionalDeviceExtensions.bufferDeviceAddress = true; if (strcmp(extension.extensionName, VK_EXT_MEMORY_BUDGET_EXTENSION_NAME) == 0) - optionalDeviceFeatures.memoryBudget = true; + optionalDeviceExtensions.memoryBudget = true; if (strcmp(extension.extensionName, VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME) == 0) - optionalDeviceFeatures.shaderFloatControls = true; + optionalDeviceExtensions.shaderFloatControls = true; if (strcmp(extension.extensionName, VK_KHR_SPIRV_1_4_EXTENSION_NAME) == 0) - optionalDeviceFeatures.spirv14 = true; + optionalDeviceExtensions.spirv14 = true; } } @@ -1598,22 +1598,22 @@ void Graphics::createLogicalDevice() queueCreateInfos.push_back(queueCreateInfo); } - findOptionalDeviceExtensions(physicalDevice, optionalDeviceFeatures); + findOptionalDeviceExtensions(physicalDevice, optionalDeviceExtensions); // sanity check for dependencies. - if (optionalDeviceFeatures.extendedDynamicState && !optionalInstanceExtensions.physicalDeviceProperties2) - optionalDeviceFeatures.extendedDynamicState = false; - if (optionalDeviceFeatures.dedicatedAllocation && !optionalDeviceFeatures.memoryRequirements2) - optionalDeviceFeatures.dedicatedAllocation = false; - if (optionalDeviceFeatures.bufferDeviceAddress && !optionalInstanceExtensions.physicalDeviceProperties2) - optionalDeviceFeatures.bufferDeviceAddress = false; - if (optionalDeviceFeatures.memoryBudget && !optionalInstanceExtensions.physicalDeviceProperties2) - optionalDeviceFeatures.memoryBudget = false; - if (optionalDeviceFeatures.spirv14 && !optionalDeviceFeatures.shaderFloatControls) - optionalDeviceFeatures.spirv14 = false; - if (optionalDeviceFeatures.spirv14 && deviceApiVersion < VK_API_VERSION_1_1) - optionalDeviceFeatures.spirv14 = false; + if (optionalDeviceExtensions.extendedDynamicState && !optionalInstanceExtensions.physicalDeviceProperties2) + optionalDeviceExtensions.extendedDynamicState = false; + if (optionalDeviceExtensions.dedicatedAllocation && !optionalDeviceExtensions.memoryRequirements2) + optionalDeviceExtensions.dedicatedAllocation = false; + if (optionalDeviceExtensions.bufferDeviceAddress && !optionalInstanceExtensions.physicalDeviceProperties2) + optionalDeviceExtensions.bufferDeviceAddress = false; + if (optionalDeviceExtensions.memoryBudget && !optionalInstanceExtensions.physicalDeviceProperties2) + optionalDeviceExtensions.memoryBudget = false; + if (optionalDeviceExtensions.spirv14 && !optionalDeviceExtensions.shaderFloatControls) + optionalDeviceExtensions.spirv14 = false; + if (optionalDeviceExtensions.spirv14 && deviceApiVersion < VK_API_VERSION_1_1) + optionalDeviceExtensions.spirv14 = false; VkPhysicalDeviceFeatures deviceFeatures{}; deviceFeatures.samplerAnisotropy = VK_TRUE; @@ -1626,19 +1626,19 @@ void Graphics::createLogicalDevice() createInfo.pEnabledFeatures = &deviceFeatures; std::vector enabledExtensions(deviceExtensions.begin(), deviceExtensions.end()); - if (optionalDeviceFeatures.extendedDynamicState) + if (optionalDeviceExtensions.extendedDynamicState) enabledExtensions.push_back(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); - if (optionalDeviceFeatures.memoryRequirements2) + if (optionalDeviceExtensions.memoryRequirements2) enabledExtensions.push_back(VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME); - if (optionalDeviceFeatures.dedicatedAllocation) + if (optionalDeviceExtensions.dedicatedAllocation) enabledExtensions.push_back(VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME); - if (optionalDeviceFeatures.bufferDeviceAddress) + if (optionalDeviceExtensions.bufferDeviceAddress) enabledExtensions.push_back(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME); - if (optionalDeviceFeatures.memoryBudget) + if (optionalDeviceExtensions.memoryBudget) enabledExtensions.push_back(VK_EXT_MEMORY_BUDGET_EXTENSION_NAME); - if (optionalDeviceFeatures.shaderFloatControls) + if (optionalDeviceExtensions.shaderFloatControls) enabledExtensions.push_back(VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME); - if (optionalDeviceFeatures.spirv14) + if (optionalDeviceExtensions.spirv14) enabledExtensions.push_back(VK_KHR_SPIRV_1_4_EXTENSION_NAME); if (deviceApiVersion >= VK_API_VERSION_1_1) enabledExtensions.push_back(VK_KHR_BIND_MEMORY_2_EXTENSION_NAME); @@ -1654,7 +1654,7 @@ void Graphics::createLogicalDevice() VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extendedDynamicStateFeatures{}; extendedDynamicStateFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT; - extendedDynamicStateFeatures.extendedDynamicState = Vulkan::getBool(optionalDeviceFeatures.extendedDynamicState); + extendedDynamicStateFeatures.extendedDynamicState = Vulkan::getBool(optionalDeviceExtensions.extendedDynamicState); extendedDynamicStateFeatures.pNext = nullptr; createInfo.pNext = &extendedDynamicStateFeatures; @@ -1718,9 +1718,9 @@ void Graphics::initVMA() allocatorCreateInfo.pVulkanFunctions = &vulkanFunctions; allocatorCreateInfo.flags |= VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT; - if (optionalDeviceFeatures.dedicatedAllocation) + if (optionalDeviceExtensions.dedicatedAllocation) allocatorCreateInfo.flags |= VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT; - if (optionalDeviceFeatures.memoryBudget) + if (optionalDeviceExtensions.memoryBudget) allocatorCreateInfo.flags |= VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT; if (vmaCreateAllocator(&allocatorCreateInfo, &vmaAllocator) != VK_SUCCESS) @@ -2325,7 +2325,7 @@ void Graphics::prepareDraw(const VertexAttributes &attributes, const BufferBindi configuration.numColorAttachments = renderPassState.numColorAttachments; configuration.primitiveType = primitiveType; - if (optionalDeviceFeatures.extendedDynamicState) + if (optionalDeviceExtensions.extendedDynamicState) vkCmdSetCullModeEXT(commandBuffers.at(currentFrame), Vulkan::getCullMode(cullmode)); else { @@ -2452,7 +2452,7 @@ void Graphics::setRenderPass(const RenderTargets &rts, int pixelw, int pixelh, b configuration.staticData.width = static_cast(pixelw); configuration.staticData.height = static_cast(pixelh); - uint32_t numClearValues = rts.colors.size() + 1; + uint32_t numClearValues = static_cast(rts.colors.size() + 1); renderPassState.clearColors.resize(numClearValues); renderPassState.beginInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; @@ -2667,7 +2667,7 @@ VkPipeline Graphics::createGraphicsPipeline(GraphicsPipelineConfiguration &confi rasterizer.rasterizerDiscardEnable = VK_FALSE; rasterizer.polygonMode = Vulkan::getPolygonMode(configuration.wireFrame); rasterizer.lineWidth = 1.0f; - if (!optionalDeviceFeatures.extendedDynamicState) + if (!optionalDeviceExtensions.extendedDynamicState) { rasterizer.cullMode = Vulkan::getCullMode(configuration.dynamicState.cullmode); rasterizer.frontFace = Vulkan::getFrontFace(configuration.dynamicState.winding); @@ -2686,7 +2686,7 @@ VkPipeline Graphics::createGraphicsPipeline(GraphicsPipelineConfiguration &confi VkPipelineDepthStencilStateCreateInfo depthStencil{}; depthStencil.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; depthStencil.depthTestEnable = VK_TRUE; - if (!optionalDeviceFeatures.extendedDynamicState) + if (!optionalDeviceExtensions.extendedDynamicState) { depthStencil.depthWriteEnable = Vulkan::getBool(configuration.dynamicState.depthState.write); depthStencil.depthCompareOp = Vulkan::getCompareOp(configuration.dynamicState.depthState.compare); @@ -2697,7 +2697,7 @@ VkPipeline Graphics::createGraphicsPipeline(GraphicsPipelineConfiguration &confi depthStencil.stencilTestEnable = VK_TRUE; - if (!optionalDeviceFeatures.extendedDynamicState) + if (!optionalDeviceExtensions.extendedDynamicState) { depthStencil.front.failOp = VK_STENCIL_OP_KEEP; depthStencil.front.passOp = Vulkan::getStencilOp(configuration.dynamicState.stencilAction); @@ -2737,7 +2737,7 @@ VkPipeline Graphics::createGraphicsPipeline(GraphicsPipelineConfiguration &confi std::vector dynamicStates; - if (optionalDeviceFeatures.extendedDynamicState) + if (optionalDeviceExtensions.extendedDynamicState) dynamicStates = { VK_DYNAMIC_STATE_SCISSOR, VK_DYNAMIC_STATE_VIEWPORT, diff --git a/src/modules/graphics/vulkan/Graphics.h b/src/modules/graphics/vulkan/Graphics.h index d92504741..4e9972fde 100644 --- a/src/modules/graphics/vulkan/Graphics.h +++ b/src/modules/graphics/vulkan/Graphics.h @@ -146,7 +146,7 @@ struct OptionalInstanceExtensions bool physicalDeviceProperties2 = false; }; -struct OptionalDeviceFeatures +struct OptionalDeviceExtensions { // VK_EXT_extended_dynamic_state bool extendedDynamicState = false; @@ -317,7 +317,7 @@ public: VkSampler getCachedSampler(const SamplerState &sampler); void setComputeShader(Shader *computeShader); graphics::Shader::BuiltinUniformData getCurrentBuiltinUniformData(); - const OptionalDeviceFeatures &getEnabledOptionalDeviceExtensions() const; + const OptionalDeviceExtensions &getEnabledOptionalDeviceExtensions() const; VkSampleCountFlagBits getMsaaCount(int requestedMsaa) const; void setVsync(int vsync); int getVsync() const; @@ -398,7 +398,7 @@ private: int requestedMsaa = 0; VkDevice device = VK_NULL_HANDLE; OptionalInstanceExtensions optionalInstanceExtensions; - OptionalDeviceFeatures optionalDeviceFeatures; + OptionalDeviceExtensions optionalDeviceExtensions; VkQueue graphicsQueue = VK_NULL_HANDLE; VkQueue presentQueue = VK_NULL_HANDLE; VkSurfaceKHR surface = VK_NULL_HANDLE;