mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-21 06:46:46 -04:00
Merge branch 'refactor-vulkan-modifier-tests' into 'master'
render/vulkan: Refactor image usages for modifiers See merge request wlroots/wlroots!3339
This commit is contained in:
commit
a41c953555
5 changed files with 102 additions and 135 deletions
|
|
@ -408,7 +408,7 @@ static bool is_dmabuf_disjoint(const struct wlr_dmabuf_attributes *attribs) {
|
|||
VkImage vulkan_import_dmabuf(struct wlr_vk_renderer *renderer,
|
||||
const struct wlr_dmabuf_attributes *attribs,
|
||||
VkDeviceMemory mems[static WLR_DMABUF_MAX_PLANES], uint32_t *n_mems,
|
||||
bool for_render) {
|
||||
enum wlr_vk_image_usage usage) {
|
||||
VkResult res;
|
||||
VkDevice dev = renderer->dev->dev;
|
||||
*n_mems = 0u;
|
||||
|
|
@ -428,7 +428,7 @@ VkImage vulkan_import_dmabuf(struct wlr_vk_renderer *renderer,
|
|||
uint32_t plane_count = attribs->n_planes;
|
||||
assert(plane_count < WLR_DMABUF_MAX_PLANES);
|
||||
struct wlr_vk_format_modifier_props *mod =
|
||||
vulkan_format_props_find_modifier(fmt, attribs->modifier, for_render);
|
||||
vulkan_format_props_find_modifier(fmt, attribs->modifier, usage);
|
||||
if (!mod || !(mod->dmabuf_flags & VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT)) {
|
||||
wlr_log(WLR_ERROR, "Format %"PRIx32" (%.4s) can't be used with modifier "
|
||||
"%"PRIx64, attribs->format, (const char*) &attribs->format,
|
||||
|
|
@ -470,9 +470,7 @@ VkImage vulkan_import_dmabuf(struct wlr_vk_renderer *renderer,
|
|||
img_info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
||||
img_info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
img_info.extent = (VkExtent3D) { attribs->width, attribs->height, 1 };
|
||||
img_info.usage = for_render ?
|
||||
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT :
|
||||
VK_IMAGE_USAGE_SAMPLED_BIT;
|
||||
img_info.usage = wlr_vk_image_usage_to_vk(usage);
|
||||
if (disjoint) {
|
||||
img_info.flags = VK_IMAGE_CREATE_DISJOINT_BIT;
|
||||
}
|
||||
|
|
@ -629,7 +627,7 @@ static struct wlr_vk_texture *vulkan_texture_from_dmabuf(
|
|||
|
||||
texture->format = &fmt->format;
|
||||
texture->image = vulkan_import_dmabuf(renderer, attribs,
|
||||
texture->memories, &texture->mem_count, false);
|
||||
texture->memories, &texture->mem_count, WLR_VK_IMAGE_USAGE_SAMPLED);
|
||||
if (!texture->image) {
|
||||
goto error;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue