[Mesa-dev] [Mesa-stable] [PATCH] egl/wayland: Don't use DRM format codes for SHM

Emil Velikov emil.l.velikov at gmail.com
Mon Feb 13 17:49:22 UTC 2017


On 13 February 2017 at 17:34, Daniel Stone <daniel at fooishbar.org> wrote:
> Hey,
>
> On 13 February 2017 at 17:27, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>> On 13 February 2017 at 14:06, Daniel Stone <daniels at collabora.com> wrote:
>>>  static EGLBoolean
>>>  dri2_wl_swrast_allocate_buffer(struct dri2_egl_display *dri2_dpy,
>>> -                               int format, int w, int h,
>>> +                               int drm_format, int w, int h,
>>>                                 void **data, int *size,
>>>                                 struct wl_buffer **buffer)
>>>  {
>>>     struct wl_shm_pool *pool;
>>> +   uint32_t shm_format;
>>>     int fd, stride, size_map;
>>>     void *data_map;
>>>
>>> -   stride = dri2_wl_swrast_get_stride_for_format(format, w);
>>> +   switch (drm_format) {
>>> +   case WL_DRM_FORMAT_RGB565:
>>> +      shm_format = WL_SHM_FORMAT_RGB565;
>>> +      break;
>>> +   case WL_DRM_FORMAT_ARGB8888:
>>> +      shm_format = WL_SHM_FORMAT_ARGB8888;
>>> +      break;
>>> +   case WL_DRM_FORMAT_XRGB8888:
>>> +      shm_format = WL_SHM_FORMAT_XRGB8888;
>>> +      break;
>>> +   default:
>>> +      return EGL_FALSE;
>>> +   }
>>
>> Wouldn't it be better to have this in dri2_wl_create_window_surface() ?
>> As-is we're passing the DRM formats on the wire, which is quite likely
>> to cause issues elsewhere.
>
> There were a few other codepaths touching the format that seemed like
> they might be affected. This is the only one which actually hits the
> wire (AFAICT - which others are you thinking of ... ?), so that seemed
> like it was the easiest.
>
>From a quick look shm_handle_format() comes to mind. Keep in mind that
I'm not that big of an expert on the Wayland code so I might have
missed something ;-)

-Emil


More information about the mesa-dev mailing list