void CommandBuffer::set_texture(unsigned set, unsigned binding, const ImageView &view) { VK_ASSERT(set < VULKAN_NUM_DESCRIPTOR_SETS); VK_ASSERT(binding < VULKAN_NUM_BINDINGS); VK_ASSERT(view.get_image().get_create_info().usage & VK_IMAGE_USAGE_SAMPLED_BIT); if (view.get_cookie() == cookies[set][binding] && bindings[set][binding].image.imageLayout == view.get_image().get_layout()) return; auto &b = bindings[set][binding]; b.image.imageLayout = view.get_image().get_layout(); b.image.imageView = view.get_view(); cookies[set][binding] = view.get_cookie(); dirty_sets |= 1u << set; }
void CommandBuffer::set_texture(unsigned set, unsigned binding, const ImageView &view, StockSampler stock) { VK_ASSERT(set < VULKAN_NUM_DESCRIPTOR_SETS); VK_ASSERT(binding < VULKAN_NUM_BINDINGS); VK_ASSERT(view.get_image().get_create_info().usage & VK_IMAGE_USAGE_SAMPLED_BIT); const auto &sampler = device->get_stock_sampler(stock); set_texture(set, binding, view, sampler); }