diff options
Diffstat (limited to 'render/vulkan/texture.c')
-rw-r--r-- | render/vulkan/texture.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/render/vulkan/texture.c b/render/vulkan/texture.c index 3eaab3ae..5776233c 100644 --- a/render/vulkan/texture.c +++ b/render/vulkan/texture.c @@ -283,8 +283,6 @@ static struct wlr_texture *vulkan_texture_from_pixels( .usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, }; - VkImageLayout layout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - res = vkCreateImage(dev, &img_info, NULL, &texture->image); if (res != VK_SUCCESS) { wlr_vk_error("vkCreateImage failed", res); @@ -362,7 +360,7 @@ static struct wlr_texture *vulkan_texture_from_pixels( VkDescriptorImageInfo ds_img_info = { .imageView = texture->image_view, - .imageLayout = layout, + .imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, }; VkWriteDescriptorSet ds_write = { @@ -771,3 +769,12 @@ struct wlr_texture *vulkan_texture_from_buffer(struct wlr_renderer *wlr_renderer return NULL; } } + +void wlr_vk_texture_get_image_attribs(struct wlr_texture *texture, + struct wlr_vk_image_attribs *attribs) { + struct wlr_vk_texture *vk_texture = vulkan_get_texture(texture); + attribs->image = vk_texture->image; + attribs->format = vk_texture->format->vk_format; + attribs->layout = vk_texture->transitioned ? + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL : VK_IMAGE_LAYOUT_UNDEFINED; +} |