[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