st/dri: Initialise modifier to INVALID for DRI2
authorDaniel Stone <daniels@collabora.com>
Mon, 2 Apr 2018 12:20:34 +0000 (13:20 +0100)
committerDaniel Stone <daniels@collabora.com>
Mon, 2 Apr 2018 18:07:57 +0000 (19:07 +0100)
When allocating a buffer for DRI2, set the modifier to INVALID to inform
the backend that we have no supplied modifiers and it should do its own
thing. The missed initialisation forced linear, even if the
implementation had made other decisions.

This resulted in VC4 DRI2 clients failing with:
  Modifier 0x0 vs. tiling (0x700000000000001) mismatch

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reported-by: Andreas Müller <schnitzeltony@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Fixes: 3f8513172ff6 ("gallium/winsys/drm: introduce modifier field to winsys_handle")
src/gallium/state_trackers/dri/dri2.c

index 31d17d46c2935e0b9b86be0ab78802066bef02fc..58a6757f037a53a6e1772c72015a6e95a53035d4 100644 (file)
@@ -806,6 +806,7 @@ dri2_allocate_textures(struct dri_context *ctx,
          whandle.handle = buf->name;
          whandle.stride = buf->pitch;
          whandle.offset = 0;
+         whandle.modifier = DRM_FORMAT_MOD_INVALID;
          if (screen->can_share_buffer)
             whandle.type = DRM_API_HANDLE_TYPE_SHARED;
          else