diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-01-30 16:25:49 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-01-30 16:25:49 -0500 |
| commit | f6fca8225d98f79ee245596e1ff4b1b2309cdb12 (patch) | |
| tree | 2acfb82b8869e59df159d3ad927e8f82d50c8820 | |
| parent | a13b4a8296a8623cb50a4ec5d23a1e39b3e019c0 (diff) | |
pke: consolidate duplicated vulkan sampler
| -rw-r--r-- | src/entities.cpp | 2 | ||||
| -rw-r--r-- | src/font.cpp | 4 | ||||
| -rw-r--r-- | src/window.cpp | 34 | ||||
| -rw-r--r-- | src/window.hpp | 4 |
4 files changed, 10 insertions, 34 deletions
diff --git a/src/entities.cpp b/src/entities.cpp index 446e80a..5c74f3e 100644 --- a/src/entities.cpp +++ b/src/entities.cpp @@ -645,7 +645,7 @@ void EntityType_LoadTexture(EntityType_LoadHelperStruct &helper, const int64_t i } VkDescriptorImageInfo textureDescriptorInfo; - textureDescriptorInfo.sampler = pkePipelines.vkSampler_Texture; + textureDescriptorInfo.sampler = global_sampler; textureDescriptorInfo.imageView = etdHelper.etd->textureImageView; textureDescriptorInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; diff --git a/src/font.cpp b/src/font.cpp index f65866e..3162362 100644 --- a/src/font.cpp +++ b/src/font.cpp @@ -149,7 +149,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle imageCreateInfo.extent.depth = 1; imageCreateInfo.mipLevels = 1; imageCreateInfo.arrayLayers = 1; - imageCreateInfo.samples = renderSampleCount; + imageCreateInfo.samples = global_sample_count; imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL; imageCreateInfo.usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT; imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; @@ -547,7 +547,7 @@ FontTypeIndex FontType_RegisterFont(pk_cstr title, AssetHandle fontTextureHandle } VkDescriptorImageInfo textureDescriptorInfo; - textureDescriptorInfo.sampler = pkePipelines.vkSampler_Texture; + textureDescriptorInfo.sampler = global_sampler; textureDescriptorInfo.imageView = ft->textureImageView; textureDescriptorInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; diff --git a/src/window.cpp b/src/window.cpp index 923ff99..1c9b070 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -692,7 +692,7 @@ void InitVulkan() { } } - // generic present sampler + // generic sampler VkSamplerCreateInfo samplerCreateInfo; samplerCreateInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; samplerCreateInfo.pNext = nullptr; @@ -704,10 +704,10 @@ void InitVulkan() { samplerCreateInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; samplerCreateInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; samplerCreateInfo.mipLodBias = 0.0f; - samplerCreateInfo.anisotropyEnable = VK_FALSE; + samplerCreateInfo.anisotropyEnable = VK_TRUE; samplerCreateInfo.maxAnisotropy = 1.0f; - samplerCreateInfo.compareEnable = VK_FALSE; - samplerCreateInfo.compareOp = {}; + samplerCreateInfo.compareEnable = VK_TRUE; + samplerCreateInfo.compareOp = VK_COMPARE_OP_LESS; samplerCreateInfo.minLod = 0.0f; samplerCreateInfo.maxLod = 1.0f; samplerCreateInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE; @@ -1650,28 +1650,6 @@ void CreateGraphicsPipelines() { .pPushConstantRanges = nullptr, }; vkCreatePipelineLayout(vkDevice, &vkPipelineLayoutCreateInfo, vkAllocator, pkePipelines.pipe_layouts.arr); - - VkSamplerCreateInfo vkSamplerCreateInfo; - vkSamplerCreateInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; - vkSamplerCreateInfo.pNext = nullptr; - vkSamplerCreateInfo.flags = 0; - vkSamplerCreateInfo.magFilter = VK_FILTER_NEAREST; - vkSamplerCreateInfo.minFilter = VK_FILTER_NEAREST; - vkSamplerCreateInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR; - vkSamplerCreateInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT; - vkSamplerCreateInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT; - vkSamplerCreateInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT; - vkSamplerCreateInfo.mipLodBias = 0.0f; - vkSamplerCreateInfo.anisotropyEnable = VK_TRUE; - vkSamplerCreateInfo.maxAnisotropy = vkPhysicalDeviceProperties.limits.maxSamplerAnisotropy; - vkSamplerCreateInfo.compareEnable = VK_FALSE; - vkSamplerCreateInfo.compareOp = VK_COMPARE_OP_ALWAYS; - vkSamplerCreateInfo.minLod = 0.0f; - // TODO MipMap - vkSamplerCreateInfo.maxLod = 1; - vkSamplerCreateInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK; - vkSamplerCreateInfo.unnormalizedCoordinates = VK_FALSE; - vkCreateSampler(vkDevice, &vkSamplerCreateInfo, vkAllocator, &pkePipelines.vkSampler_Texture); } // pipelines @@ -2363,7 +2341,7 @@ void UpdateDebugGraphicsPipeline() { } VkDescriptorImageInfo textureDescriptorInfo; - textureDescriptorInfo.sampler = pkePipelines.vkSampler_Texture; + textureDescriptorInfo.sampler = global_sampler; textureDescriptorInfo.imageView = pkeDebugHitbox.vkImageView; textureDescriptorInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; @@ -2846,8 +2824,6 @@ void DestroyWindow() { vkDestroyImage(vkDevice, pkeDebugHitbox.vkImage, vkAllocator); vkFreeMemory(vkDevice, pkeDebugHitbox.textureMemory, vkAllocator); - if (pkePipelines.vkSampler_Texture != VK_NULL_HANDLE) - vkDestroySampler(vkDevice, pkePipelines.vkSampler_Texture, vkAllocator); for (long i = 0; i < 3; ++i) { if (pkePipelines.pipelines.arr[i] != VK_NULL_HANDLE) vkDestroyPipeline(vkDevice, pkePipelines.pipelines.arr[i], vkAllocator); diff --git a/src/window.hpp b/src/window.hpp index 34398c4..5cb346f 100644 --- a/src/window.hpp +++ b/src/window.hpp @@ -30,7 +30,8 @@ extern unsigned int presentFamilyIndex; extern unsigned int transferFamilyIndex; extern VkRenderPass presentRenderPass; extern VkRenderPass renderRenderPass; -extern VkSampleCountFlagBits renderSampleCount; +extern VkSampler global_sampler; +extern VkSampleCountFlagBits global_sample_count; struct UniformBufferObject { glm::mat4 model; @@ -60,7 +61,6 @@ struct DebugHitbox { }; extern DebugHitbox pkeDebugHitbox; struct ImplementedPipelines { - VkSampler vkSampler_Texture = VK_NULL_HANDLE; union { VkDescriptorSetLayout arr[2] = { VK_NULL_HANDLE, VK_NULL_HANDLE }; struct ImplementedPipelineLayoutsByName { |
