MCPcopy Create free account
hub / github.com/InoriRus/Kyty / create_layout

Function create_layout

source/emulator/src/Graphics/GraphicsRender.cpp:2829–2919  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2827}
2828
2829static void create_layout(GraphicContext* gctx, int storage_buffers_num, int textures2d_sampled_num, int textures2d_storage_num,
2830 int samplers_num, int gds_buffers_num, VkShaderStageFlags stage, VkDescriptorSetLayout* dst)
2831{
2832 uint32_t binding_num = 0;
2833
2834 ShaderBindResources tmp {};
2835 tmp.storage_buffers.buffers_num = storage_buffers_num;
2836 tmp.textures2D.textures_num = textures2d_sampled_num + textures2d_storage_num;
2837 tmp.samplers.samplers_num = samplers_num;
2838 tmp.gds_pointers.pointers_num = gds_buffers_num;
2839
2840 ShaderCalcBindingIndices(&tmp);
2841
2842 constexpr uint32_t B_MAX = 5;
2843
2844 VkDescriptorSetLayoutBinding ubo_layout_binding[B_MAX] = {};
2845
2846 if (storage_buffers_num > 0)
2847 {
2848 EXIT_IF(binding_num >= B_MAX);
2849 ubo_layout_binding[binding_num].binding = tmp.storage_buffers.binding_index;
2850 ubo_layout_binding[binding_num].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
2851 ubo_layout_binding[binding_num].descriptorCount = storage_buffers_num;
2852 ubo_layout_binding[binding_num].stageFlags = stage;
2853 ubo_layout_binding[binding_num].pImmutableSamplers = nullptr;
2854 binding_num++;
2855 }
2856
2857 if (textures2d_sampled_num > 0)
2858 {
2859 EXIT_IF(binding_num >= B_MAX);
2860 ubo_layout_binding[binding_num].binding = tmp.textures2D.binding_sampled_index;
2861 ubo_layout_binding[binding_num].descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
2862 ubo_layout_binding[binding_num].descriptorCount = textures2d_sampled_num;
2863 ubo_layout_binding[binding_num].stageFlags = stage;
2864 ubo_layout_binding[binding_num].pImmutableSamplers = nullptr;
2865 binding_num++;
2866 }
2867
2868 if (textures2d_storage_num > 0)
2869 {
2870 EXIT_IF(binding_num >= B_MAX);
2871 ubo_layout_binding[binding_num].binding = tmp.textures2D.binding_storage_index;
2872 ubo_layout_binding[binding_num].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
2873 ubo_layout_binding[binding_num].descriptorCount = textures2d_storage_num;
2874 ubo_layout_binding[binding_num].stageFlags = stage;
2875 ubo_layout_binding[binding_num].pImmutableSamplers = nullptr;
2876 binding_num++;
2877 }
2878
2879 if (samplers_num > 0)
2880 {
2881 EXIT_IF(binding_num >= B_MAX);
2882 ubo_layout_binding[binding_num].binding = tmp.samplers.binding_index;
2883 ubo_layout_binding[binding_num].descriptorType = VK_DESCRIPTOR_TYPE_SAMPLER;
2884 ubo_layout_binding[binding_num].descriptorCount = samplers_num;
2885 ubo_layout_binding[binding_num].stageFlags = stage;
2886 ubo_layout_binding[binding_num].pImmutableSamplers = nullptr;

Callers 1

InitMethod · 0.85

Calls 1

ShaderCalcBindingIndicesFunction · 0.85

Tested by

no test coverage detected