[Mesa-dev] [PATCH] vulkan/wsi: Only use LINEAR modifier for prime if supported.

Daniel Stone daniel at fooishbar.org
Sun May 6 12:58:50 UTC 2018


Hi,

On 5 May 2018 at 19:07, Jason Ekstrand <jason at jlekstrand.net> wrote:
> On Sat, May 5, 2018 at 6:34 AM, Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl> wrote:
>> @@ -1043,7 +1043,8 @@ x11_image_init(VkDevice device_h, struct
>> x11_swapchain *chain,
>>     uint32_t bpp = 32;
>>
>>     if (chain->base.use_prime_blit) {
>> -      result = wsi_create_prime_image(&chain->base, pCreateInfo,
>> &image->base);
>> +      bool use_modifier = num_tranches > 0;
>> +      result = wsi_create_prime_image(&chain->base, pCreateInfo,
>> use_modifier, &image->base);
>
> This confused me for a bit but I think I see what's going on.  You have an X
> server which doesn't know about modifiers but mesa is built with modifier
> support and prime is in use.  This results in the WSI code calling
> dri3_pixmap_from_buffers (plural) on an X server which doesn't support it.
>
> I'm not sure what I think about this way of solving the problem.  In my
> twisted mind, DRM_FORMAT_MOD_LINEAR should always be valid even if the
> modifier is ultimately ignored.  I'm going to send a counter-patch which
> solves it another way but I'm not sure if my solution is better.  Daniel, do
> you have any thoughts?

Linear is fairly unique in aliasing a pre-modifier GBM use flag, as
well as something that translates well across all our drivers. That
being said, I prefer Bas's patch for consistency: currently, we
_always_ set INVALID _everywhere_ if one or more components in the
chain are not modifier-aware. I don't really see a reason to diverge
here, especially when we could end up deciding on LINEAR inside the
driver but still setting INVALID for other reasons, e.g. if the user
requests a linear VkTilingMode.

Cheers,
Daniel


More information about the mesa-dev mailing list