diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index ab5bc16b30f..a55fda0d9b9 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -2718,14 +2718,12 @@ dri2_wl_swrast_commit_backbuffer(struct dri2_egl_surface *dri2_surf) } static void -dri2_wl_kopper_get_drawable_info(struct dri_drawable *draw, int *x, int *y, int *w, +dri2_wl_kopper_get_drawable_info(struct dri_drawable *draw, int *w, int *h, void *loaderPrivate) { struct dri2_egl_surface *dri2_surf = loaderPrivate; kopper_update_buffers(dri2_surf); - *x = 0; - *y = 0; *w = dri2_surf->base.Width; *h = dri2_surf->base.Height; } @@ -3058,15 +3056,6 @@ static const __DRIswrastLoaderExtension swrast_loader_extension = { .putImage2 = dri2_wl_swrast_put_image2, }; -static const __DRIswrastLoaderExtension kopper_swrast_loader_extension = { - .base = {__DRI_SWRAST_LOADER, 2}, - - .getDrawableInfo = dri2_wl_kopper_get_drawable_info, - .putImage = dri2_wl_swrast_put_image, - .getImage = dri2_wl_swrast_get_image, - .putImage2 = dri2_wl_swrast_put_image2, -}; - static_assert(sizeof(struct kopper_vk_surface_create_storage) >= sizeof(VkWaylandSurfaceCreateInfoKHR), ""); @@ -3126,16 +3115,16 @@ static const __DRIkopperLoaderExtension kopper_loader_extension = { .base = {__DRI_KOPPER_LOADER, 1}, .SetSurfaceCreateInfo = kopperSetSurfaceCreateInfo, + .GetDrawableInfo = dri2_wl_kopper_get_drawable_info, }; static const __DRIextension *swrast_loader_extensions[] = { &swrast_loader_extension.base, &image_lookup_extension.base, NULL, }; -static const __DRIextension *kopper_swrast_loader_extensions[] = { - &kopper_swrast_loader_extension.base, - &image_lookup_extension.base, +static const __DRIextension *kopper_loader_extensions[] = { &kopper_loader_extension.base, + &image_lookup_extension.base, NULL, }; @@ -3216,7 +3205,7 @@ dri2_initialize_wayland_swrast(_EGLDisplay *disp) dri2_dpy->driver_name = strdup(disp->Options.Zink ? "zink" : "swrast"); dri2_detect_swrast(disp); - dri2_dpy->loader_extensions = disp->Options.Zink ? kopper_swrast_loader_extensions : swrast_loader_extensions; + dri2_dpy->loader_extensions = disp->Options.Zink ? kopper_loader_extensions : swrast_loader_extensions; if (!dri2_create_screen(disp)) goto cleanup; diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index 2d011fe2118..a5aa04fa221 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -1056,10 +1056,20 @@ kopperSetSurfaceCreateInfo(void *_draw, struct kopper_loader_info *ci) ci->present_opaque = dri2_surf->base.PresentOpaque; } +static void +kopperGetDrawableInfo(struct dri_drawable *draw, int *w, int *h, + void *loaderPrivate) +{ + int x = 0, y = 0; + *w = *h = 0; + x11_get_drawable_info(draw, &x, &y, w, h, loaderPrivate); +} + static const __DRIkopperLoaderExtension kopper_loader_extension = { .base = {__DRI_KOPPER_LOADER, 1}, .SetSurfaceCreateInfo = kopperSetSurfaceCreateInfo, + .GetDrawableInfo = kopperGetDrawableInfo, }; static const __DRIextension *kopper_loader_extensions[] = { diff --git a/src/gallium/frontends/dri/kopper.c b/src/gallium/frontends/dri/kopper.c index b9ee60942f7..4d65c257064 100644 --- a/src/gallium/frontends/dri/kopper.c +++ b/src/gallium/frontends/dri/kopper.c @@ -347,13 +347,12 @@ XXX do this once swapinterval is hooked up } static inline void -get_drawable_info(struct dri_drawable *drawable, int *x, int *y, int *w, int *h) +get_drawable_info(struct dri_drawable *drawable, int *w, int *h) { - const __DRIswrastLoaderExtension *loader = drawable->screen->swrast_loader; + const __DRIkopperLoaderExtension *loader = drawable->screen->kopper_loader; if (loader) - loader->getDrawableInfo(drawable, x, y, w, h, - drawable->loaderPrivate); + loader->GetDrawableInfo(drawable, w, h, drawable->loaderPrivate); } static void @@ -361,7 +360,6 @@ kopper_update_drawable_info(struct dri_drawable *drawable) { struct dri_screen *screen = drawable->screen; bool is_window = drawable->info.bos.sType != 0; - int x, y; struct pipe_resource *ptex = drawable->textures[ST_ATTACHMENT_BACK_LEFT] ? drawable->textures[ST_ATTACHMENT_BACK_LEFT] : drawable->textures[ST_ATTACHMENT_FRONT_LEFT]; @@ -370,7 +368,7 @@ kopper_update_drawable_info(struct dri_drawable *drawable) if (drawable->info.bos.sType == VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR && do_kopper_update) zink_kopper_update(kopper_get_zink_screen(screen->base.screen), ptex, &drawable->w, &drawable->h); else - get_drawable_info(drawable, &x, &y, &drawable->w, &drawable->h); + get_drawable_info(drawable, &drawable->w, &drawable->h); } static inline void diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index 5c19f166abc..6c401264a9e 100644 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -194,6 +194,18 @@ swrast_get_image(struct dri_drawable *driDrawable, data, surf->dri_private); } +static void +kopper_get_drawable_info(struct dri_drawable *driDrawable, + int *width, + int *height, + void *loaderPrivate) +{ + struct gbm_dri_surface *surf = loaderPrivate; + + *width = surf->base.v0.width; + *height = surf->base.v0.height; +} + static const __DRIimageLookupExtension image_lookup_extension = { .base = { __DRI_IMAGE_LOOKUP, 2 }, @@ -222,6 +234,7 @@ static const __DRIkopperLoaderExtension kopper_loader_extension = { .base = { __DRI_KOPPER_LOADER, 1 }, .SetSurfaceCreateInfo = NULL, + .GetDrawableInfo = kopper_get_drawable_info, }; static const __DRIextension *gbm_dri_screen_extensions[] = { diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index 2eb5e2b52dd..2529d38b34c 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -144,7 +144,7 @@ XDestroyDrawable(struct drisw_drawable * pdp, Display * dpy, XID drawable) */ static void -swrastGetDrawableInfo(struct dri_drawable * draw, +get_drawable_geometry(struct dri_drawable * draw, int *x, int *y, int *w, int *h, void *loaderPrivate) { @@ -163,6 +163,14 @@ swrastGetDrawableInfo(struct dri_drawable * draw, *h = uh; } +static void +swrastGetDrawableInfo(struct dri_drawable * draw, + int *x, int *y, int *w, int *h, + void *loaderPrivate) +{ + get_drawable_geometry(draw, x, y, w, h, loaderPrivate); +} + /** * Align renderbuffer pitch. * @@ -391,10 +399,20 @@ kopperSetSurfaceCreateInfo(void *_draw, struct kopper_loader_info *out) xcb->window = draw->xDrawable; } +static void +kopperGetDrawableInfo(struct dri_drawable * draw, + int *w, int *h, + void *loaderPrivate) +{ + int x = 0, y = 0; + get_drawable_geometry(draw, &x, &y, w, h, loaderPrivate); +} + static const __DRIkopperLoaderExtension kopperLoaderExtension = { .base = { __DRI_KOPPER_LOADER, 1 }, .SetSurfaceCreateInfo = kopperSetSurfaceCreateInfo, + .GetDrawableInfo = kopperGetDrawableInfo, }; static const __DRIextension *loader_extensions_shm[] = {