aboutsummaryrefslogtreecommitdiff
path: root/render/vulkan
diff options
context:
space:
mode:
Diffstat (limited to 'render/vulkan')
-rw-r--r--render/vulkan/texture.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/render/vulkan/texture.c b/render/vulkan/texture.c
index 1f70bc44..6c6e9825 100644
--- a/render/vulkan/texture.c
+++ b/render/vulkan/texture.c
@@ -322,6 +322,7 @@ static struct wlr_texture *vulkan_texture_from_pixels(
const struct wlr_pixel_format_info *format_info = drm_get_pixel_format_info(drm_fmt);
assert(format_info);
+ texture->has_alpha = format_info->has_alpha;
// view
VkImageViewCreateInfo view_info = {
@@ -331,7 +332,7 @@ static struct wlr_texture *vulkan_texture_from_pixels(
.components.r = VK_COMPONENT_SWIZZLE_IDENTITY,
.components.g = VK_COMPONENT_SWIZZLE_IDENTITY,
.components.b = VK_COMPONENT_SWIZZLE_IDENTITY,
- .components.a = format_info->has_alpha
+ .components.a = texture->has_alpha
? VK_COMPONENT_SWIZZLE_IDENTITY
: VK_COMPONENT_SWIZZLE_ONE,
@@ -656,6 +657,7 @@ static struct wlr_vk_texture *vulkan_texture_from_dmabuf(
const struct wlr_pixel_format_info *format_info = drm_get_pixel_format_info(attribs->format);
assert(format_info);
+ texture->has_alpha = format_info->has_alpha;
// view
VkImageViewCreateInfo view_info = {
@@ -665,7 +667,7 @@ static struct wlr_vk_texture *vulkan_texture_from_dmabuf(
.components.r = VK_COMPONENT_SWIZZLE_IDENTITY,
.components.g = VK_COMPONENT_SWIZZLE_IDENTITY,
.components.b = VK_COMPONENT_SWIZZLE_IDENTITY,
- .components.a = format_info->has_alpha
+ .components.a = texture->has_alpha
? VK_COMPONENT_SWIZZLE_IDENTITY
: VK_COMPONENT_SWIZZLE_ONE,
@@ -779,3 +781,8 @@ void wlr_vk_texture_get_image_attribs(struct wlr_texture *texture,
attribs->layout = vk_texture->transitioned ?
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL : VK_IMAGE_LAYOUT_UNDEFINED;
}
+
+bool wlr_vk_texture_has_alpha(struct wlr_texture *texture) {
+ struct wlr_vk_texture *vk_texture = vulkan_get_texture(texture);
+ return vk_texture->has_alpha;
+}