loader: fix the no-modifiers case

Normally modifiers take precendence over use flags, as they are more
explicit.  But if the driver supports modifiers, but the xserver does
not, then we should fallback to the old mechanism of allocating a buffer
using 'use' flags.

Fixes: 069fdd5f9f
Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>
(cherry picked from commit c56fe4118a)
This commit is contained in:
Rob Clark 2019-01-22 14:08:41 -05:00 committed by Emil Velikov
parent 77ac39c359
commit 9d45651005

View file

@ -1273,12 +1273,20 @@ dri3_alloc_render_buffer(struct loader_dri3_drawable *draw, unsigned int format,
free(mod_reply);
buffer->image = draw->ext->image->createImageWithModifiers(draw->dri_screen,
width, height,
format,
modifiers,
count,
buffer);
/* don't use createImageWithModifiers() if we have no
* modifiers, other things depend on the use flags when
* there are no modifiers to know that a buffer can be
* shared.
*/
if (modifiers) {
buffer->image = draw->ext->image->createImageWithModifiers(draw->dri_screen,
width, height,
format,
modifiers,
count,
buffer);
}
free(modifiers);
}
#endif