bindings.emplace_back();
VkDescriptorSetLayoutBinding &binding = bindings.back();
binding.binding = u.binding&0xFFFFF;
- binding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
+ if(is_sampled_image(u.type))
+ binding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
+ else
+ binding.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
binding.descriptorCount = 1;
binding.stageFlags = stage_flags;
binding.pImmutableSamplers = 0;
#endif
}
+bool VulkanProgram::is_compute() const
+{
+ return stage_flags&VK_SHADER_STAGE_COMPUTE_BIT;
+}
+
+bool VulkanProgram::has_tessellation() const
+{
+ constexpr unsigned tess_flags = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT | VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT;
+ return (stage_flags&tess_flags)==tess_flags;
+}
+
void VulkanProgram::set_debug_name(const string &name)
{
#ifdef DEBUG