diff --git a/src/gallium/drivers/zink/ci/zink-lvp-fails.txt b/src/gallium/drivers/zink/ci/zink-lvp-fails.txt index ebb8786b37e..9b57347b1c8 100644 --- a/src/gallium/drivers/zink/ci/zink-lvp-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-lvp-fails.txt @@ -14,7 +14,6 @@ spec@egl_chromium_sync_control@conformance@eglGetSyncValuesCHROMIUM_ust_test,Fai spec@egl_khr_gl_colorspace@srgb,Crash spec@ext_framebuffer_blit@fbo-sys-blit,Fail spec@ext_framebuffer_blit@fbo-sys-sub-blit,Fail -spec@ext_image_dma_buf_import@ext_image_dma_buf_import-export-tex,Crash dEQP-GLES2.functional.clipping.point.wide_point_clip,Fail dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center,Fail diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c index 1d96adab987..63ac9d5c0ee 100644 --- a/src/gallium/frontends/dri/dri2.c +++ b/src/gallium/frontends/dri/dri2.c @@ -1899,6 +1899,28 @@ const __DRIimageExtension driVkImageExtension = { .createImageWithModifiers2 = dri2_create_image_with_modifiers2, }; +const __DRIimageExtension driVkImageExtensionSw = { + .base = { __DRI_IMAGE, 20 }, + + .createImageFromName = dri2_create_image_from_name, + .createImageFromRenderbuffer = dri2_create_image_from_renderbuffer, + .destroyImage = dri2_destroy_image, + .createImage = dri2_create_image, + .queryImage = dri2_query_image, + .dupImage = dri2_dup_image, + .validateUsage = dri2_validate_usage, + .createImageFromNames = dri2_from_names, + .fromPlanar = dri2_from_planar, + .createImageFromTexture = dri2_create_from_texture, + .createImageFromFds = dri2_from_fds, + .createImageFromFds2 = dri2_from_fds2, + .blitImage = dri2_blit_image, + .getCapabilities = dri2_get_capabilities, + .mapImage = dri2_map_image, + .unmapImage = dri2_unmap_image, + .createImageFromRenderbuffer2 = dri2_create_image_from_renderbuffer2, +}; + static const __DRIrobustnessExtension dri2Robustness = { .base = { __DRI2_ROBUSTNESS, 1 } }; diff --git a/src/gallium/frontends/dri/kopper.c b/src/gallium/frontends/dri/kopper.c index e4d4e0661ea..caf99c544b7 100644 --- a/src/gallium/frontends/dri/kopper.c +++ b/src/gallium/frontends/dri/kopper.c @@ -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 &&