LibGfx: Make create_shared_vulkan_image() accept modifiers as a span
This commit is contained in:
parent
d093edbe6d
commit
0fdafaaf48
3 changed files with 6 additions and 9 deletions
|
|
@ -84,7 +84,7 @@ int VulkanImage::get_dma_buf_fd() const
|
|||
return fd;
|
||||
}
|
||||
|
||||
ErrorOr<NonnullRefPtr<VulkanImage>> create_shared_vulkan_image(VulkanContext const& context, uint32_t width, uint32_t height, VkFormat format, uint32_t num_modifiers, uint64_t const* modifiers)
|
||||
ErrorOr<NonnullRefPtr<VulkanImage>> create_shared_vulkan_image(VulkanContext const& context, uint32_t width, uint32_t height, VkFormat format, ReadonlySpan<uint64_t> modifiers)
|
||||
{
|
||||
VkDrmFormatModifierPropertiesListEXT format_mod_props_list = {};
|
||||
format_mod_props_list.sType = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT;
|
||||
|
|
@ -102,12 +102,8 @@ ErrorOr<NonnullRefPtr<VulkanImage>> create_shared_vulkan_image(VulkanContext con
|
|||
Vector<uint64_t> format_mods;
|
||||
for (VkDrmFormatModifierPropertiesEXT const& props : format_mod_props) {
|
||||
if ((props.drmFormatModifierTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) && (props.drmFormatModifierPlaneCount == 1)) {
|
||||
for (uint32_t i = 0; i < num_modifiers; ++i) {
|
||||
if (modifiers[i] == props.drmFormatModifier) {
|
||||
format_mods.append(props.drmFormatModifier);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (modifiers.contains_slow(props.drmFormatModifier))
|
||||
format_mods.append(props.drmFormatModifier);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
# include <AK/Assertions.h>
|
||||
# include <AK/NonnullRefPtr.h>
|
||||
# include <AK/RefCounted.h>
|
||||
# include <AK/Span.h>
|
||||
# include <LibGfx/VulkanContext.h>
|
||||
# include <libdrm/drm_fourcc.h>
|
||||
|
||||
|
|
@ -52,7 +53,7 @@ static inline uint32_t vk_format_to_drm_format(VkFormat format)
|
|||
}
|
||||
}
|
||||
|
||||
ErrorOr<NonnullRefPtr<VulkanImage>> create_shared_vulkan_image(VulkanContext const& context, uint32_t width, uint32_t height, VkFormat format, uint32_t num_modifiers, uint64_t const* modifiers);
|
||||
ErrorOr<NonnullRefPtr<VulkanImage>> create_shared_vulkan_image(VulkanContext const& context, uint32_t width, uint32_t height, VkFormat format, ReadonlySpan<uint64_t> modifiers);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -350,7 +350,7 @@ void OpenGLContext::allocate_vkimage_painting_surface()
|
|||
}
|
||||
}
|
||||
|
||||
auto vulkan_image = MUST(Gfx::create_shared_vulkan_image(m_skia_backend_context->vulkan_context(), m_size.width(), m_size.height(), vulkan_format, renderable_modifiers.size(), renderable_modifiers.data()));
|
||||
auto vulkan_image = MUST(Gfx::create_shared_vulkan_image(m_skia_backend_context->vulkan_context(), m_size.width(), m_size.height(), vulkan_format, renderable_modifiers));
|
||||
m_painting_surface = Gfx::PaintingSurface::create_from_vkimage(m_skia_backend_context, vulkan_image, Gfx::PaintingSurface::Origin::BottomLeft);
|
||||
|
||||
EGLAttrib attribs[] = {
|
||||
|
|
|
|||
Loading…
Reference in a new issue