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;
}