kopper: add a dmabuf-free image interface for use with sw drivers
sw drivers don't support modifiers or dmabufs or any of that, so separate interfaces are needed to avoid advertising extensions that will only lead to crashes Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15802>
This commit is contained in:

committed by
Marge Bot

parent
31824d4213
commit
d09ee469f0
@@ -54,6 +54,7 @@ struct kopper_screen {
|
||||
};
|
||||
|
||||
extern const __DRIimageExtension driVkImageExtension;
|
||||
extern const __DRIimageExtension driVkImageExtensionSw;
|
||||
|
||||
static void
|
||||
kopper_flush_drawable(__DRIdrawable *dPriv)
|
||||
@@ -95,6 +96,18 @@ static const __DRIextension *drivk_screen_extensions[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
static const __DRIextension *drivk_sw_screen_extensions[] = {
|
||||
&driTexBufferExtension.base,
|
||||
&dri2RendererQueryExtension.base,
|
||||
&dri2ConfigQueryExtension.base,
|
||||
&dri2FenceExtension.base,
|
||||
&dri2Robustness.base,
|
||||
&driVkImageExtensionSw.base,
|
||||
&dri2FlushControlExtension.base,
|
||||
&driVkFlushExtension.base,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const __DRIconfig **
|
||||
kopper_init_screen(__DRIscreen * sPriv)
|
||||
{
|
||||
@@ -137,7 +150,10 @@ kopper_init_screen(__DRIscreen * sPriv)
|
||||
assert(pscreen->get_param(pscreen, PIPE_CAP_DEVICE_RESET_STATUS_QUERY));
|
||||
screen->has_reset_status_query = true;
|
||||
screen->lookup_egl_image = dri2_lookup_egl_image;
|
||||
sPriv->extensions = drivk_screen_extensions;
|
||||
if (pscreen->get_param(pscreen, PIPE_CAP_DMABUF))
|
||||
sPriv->extensions = drivk_screen_extensions;
|
||||
else
|
||||
sPriv->extensions = drivk_sw_screen_extensions;
|
||||
|
||||
const __DRIimageLookupExtension *image = sPriv->dri2.image;
|
||||
if (image &&
|
||||
|
Reference in New Issue
Block a user