From 6e893734779d9d371c7b4f815f52d35cf7146257 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Thu, 23 Feb 2023 14:06:05 +0100 Subject: [PATCH] Vulkan: Resolve Builtin Uniform(Buffer). Resolving builtin uniforms and uniform buffers when creating shader interface. --- source/blender/gpu/vulkan/vk_shader_interface.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/blender/gpu/vulkan/vk_shader_interface.cc b/source/blender/gpu/vulkan/vk_shader_interface.cc index 50f6401103f..71b6a600adf 100644 --- a/source/blender/gpu/vulkan/vk_shader_interface.cc +++ b/source/blender/gpu/vulkan/vk_shader_interface.cc @@ -85,6 +85,20 @@ void VKShaderInterface::init(const shader::ShaderCreateInfo &info) sort_inputs(); + /* Builtin Uniforms */ + for (int32_t u_int = 0; u_int < GPU_NUM_UNIFORMS; u_int++) { + GPUUniformBuiltin u = static_cast(u_int); + const ShaderInput *uni = this->uniform_get(builtin_uniform_name(u)); + builtins_[u] = (uni != nullptr) ? uni->location : -1; + } + + /* Builtin Uniforms Blocks */ + for (int32_t u_int = 0; u_int < GPU_NUM_UNIFORM_BLOCKS; u_int++) { + GPUUniformBlockBuiltin u = static_cast(u_int); + const ShaderInput *block = this->ubo_get(builtin_uniform_block_name(u)); + builtin_blocks_[u] = (block != nullptr) ? block->binding : -1; + } + /* Determine the descriptor set locations after the inputs have been sorted.*/ descriptor_set_locations_ = Array(input_tot_len); uint32_t descriptor_set_location = 0; -- 2.30.2