| 2645 | } |
| 2646 | |
| 2647 | static inline VkDescriptorType TextureTypeToDescriptorType(ShaderDesc::ShaderDataType type) |
| 2648 | { |
| 2649 | switch(type) |
| 2650 | { |
| 2651 | // Sampler objects |
| 2652 | case ShaderDesc::SHADER_TYPE_SAMPLER: |
| 2653 | return VK_DESCRIPTOR_TYPE_SAMPLER; |
| 2654 | |
| 2655 | // Combined samplers |
| 2656 | case ShaderDesc::SHADER_TYPE_SAMPLER2D: |
| 2657 | case ShaderDesc::SHADER_TYPE_SAMPLER3D: |
| 2658 | case ShaderDesc::SHADER_TYPE_SAMPLER_CUBE: |
| 2659 | case ShaderDesc::SHADER_TYPE_SAMPLER2D_ARRAY: |
| 2660 | case ShaderDesc::SHADER_TYPE_SAMPLER3D_ARRAY: |
| 2661 | return VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; |
| 2662 | |
| 2663 | case ShaderDesc::SHADER_TYPE_IMAGE2D: |
| 2664 | case ShaderDesc::SHADER_TYPE_UIMAGE2D: |
| 2665 | case ShaderDesc::SHADER_TYPE_IMAGE3D: |
| 2666 | case ShaderDesc::SHADER_TYPE_UIMAGE3D: |
| 2667 | return VK_DESCRIPTOR_TYPE_STORAGE_IMAGE; |
| 2668 | |
| 2669 | // Render pass inputs |
| 2670 | case ShaderDesc::SHADER_TYPE_RENDER_PASS_INPUT: |
| 2671 | return VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT; |
| 2672 | |
| 2673 | // Texture objects |
| 2674 | case ShaderDesc::SHADER_TYPE_TEXTURE_CUBE: |
| 2675 | case ShaderDesc::SHADER_TYPE_TEXTURE2D: |
| 2676 | case ShaderDesc::SHADER_TYPE_TEXTURE2D_ARRAY: |
| 2677 | case ShaderDesc::SHADER_TYPE_UTEXTURE2D: |
| 2678 | case ShaderDesc::SHADER_TYPE_TEXTURE3D: |
| 2679 | case ShaderDesc::SHADER_TYPE_TEXTURE3D_ARRAY: |
| 2680 | case ShaderDesc::SHADER_TYPE_UTEXTURE3D: |
| 2681 | return VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE; |
| 2682 | |
| 2683 | // Storage buffers |
| 2684 | case ShaderDesc::SHADER_TYPE_STORAGE_BUFFER: |
| 2685 | return VK_DESCRIPTOR_TYPE_STORAGE_BUFFER; |
| 2686 | default:break; |
| 2687 | } |
| 2688 | |
| 2689 | assert(0 && "Unsupported shader type"); |
| 2690 | return (VkDescriptorType) -1; |
| 2691 | } |
| 2692 | |
| 2693 | static void UpdateImageDescriptor(VulkanContext* context, HTexture texture_handle, ShaderResourceBinding* binding, VkDescriptorImageInfo& vk_image_info, VkWriteDescriptorSet& vk_write_desc_info) |
| 2694 | { |
no test coverage detected