chithanh 14/03/25 15:26:52 Added: xf86-video-vmware-13.0.1-xatracker-2.patch xf86-video-vmware-13.0.1-xa-compat-2.patch Log: Fix building against newer mesa, bug #504252. (Portage version: 2.2.8-r1/cvs/Linux x86_64, unsigned Manifest commit)
Revision Changes Path 1.1 x11-drivers/xf86-video-vmware/files/xf86-video-vmware-13.0.1-xatracker-2.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/xf86-video-vmware/files/xf86-video-vmware-13.0.1-xatracker-2.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/xf86-video-vmware/files/xf86-video-vmware-13.0.1-xatracker-2.patch?rev=1.1&content-type=text/plain Index: xf86-video-vmware-13.0.1-xatracker-2.patch =================================================================== >From 0945bea5fc32eacb7bf42639efbd45dcd43e7ab5 Mon Sep 17 00:00:00 2001 From: Rob Clark <robdcl...@gmail.com> Date: Mon, 10 Jun 2013 17:31:31 +0000 Subject: vmwgfx: update for XA API changes Signed-off-by: Rob Clark <robdcl...@gmail.com> Signed-off-by: Jakob Bornecrantz <ja...@vmware.com> Reviewed-by: Jakob Bornecrantz <ja...@vmware.com> Tested-by: Jakob Bornecrantz <ja...@vmware.com> --- diff --git a/configure.ac b/configure.ac index 0631bcc..dccfb27 100644 --- a/configure.ac +++ b/configure.ac @@ -118,7 +118,7 @@ if test x$BUILD_VMWGFX = xyes; then PKG_CHECK_MODULES([LIBDRM], [libdrm],[],[BUILD_VMWGFX=no]) fi if test x$BUILD_VMWGFX = xyes; then - PKG_CHECK_MODULES([XATRACKER], [xatracker >= 0.4.0],[],[BUILD_VMWGFX=no]) + PKG_CHECK_MODULES([XATRACKER], [xatracker >= 2.0.0],[],[BUILD_VMWGFX=no]) fi DRIVER_NAME=vmware diff --git a/vmwgfx/vmwgfx_dri2.c b/vmwgfx/vmwgfx_dri2.c index 7de0772..2f007f0 100644 --- a/vmwgfx/vmwgfx_dri2.c +++ b/vmwgfx/vmwgfx_dri2.c @@ -201,7 +201,8 @@ dri2_do_create_buffer(DrawablePtr pDraw, DRI2Buffer2Ptr buffer, unsigned int for } private->srf = srf; - if (xa_surface_handle(srf, &buffer->name, &buffer->pitch) != 0) + if (xa_surface_handle(srf, xa_handle_type_shared, + &buffer->name, &buffer->pitch) != 0) return FALSE; buffer->cpp = xa_format_depth(xa_surface_format(srf)) / 8; @@ -222,7 +223,7 @@ dri2_do_destroy_buffer(DrawablePtr pDraw, DRI2BufferPtr buffer) struct vmwgfx_saa_pixmap *vpix = vmwgfx_saa_pixmap(private->pPixmap); if (--private->refcount == 0 && srf) { - xa_surface_destroy(srf); + xa_surface_unref(srf); } /* diff --git a/vmwgfx/vmwgfx_driver.c b/vmwgfx/vmwgfx_driver.c index 7863ba2..3002285 100644 --- a/vmwgfx/vmwgfx_driver.c +++ b/vmwgfx/vmwgfx_driver.c @@ -617,7 +617,8 @@ vmwgfx_scanout_present(ScreenPtr pScreen, int drm_fd, return FALSE; } - if (xa_surface_handle(vpix->hw, &handle, &dummy) != 0) { + if (xa_surface_handle(vpix->hw, xa_handle_type_shared, + &handle, &dummy) != 0) { LogMessage(X_ERROR, "Could not get present surface handle.\n"); return FALSE; } diff --git a/vmwgfx/vmwgfx_saa.c b/vmwgfx/vmwgfx_saa.c index 63df3a1..ed3c1ee 100644 --- a/vmwgfx/vmwgfx_saa.c +++ b/vmwgfx/vmwgfx_saa.c @@ -140,7 +140,7 @@ vmwgfx_pixmap_free_storage(struct vmwgfx_saa_pixmap *vpix) vpix->malloc = NULL; } if (!(vpix->backing & VMWGFX_PIX_SURFACE) && vpix->hw) { - xa_surface_destroy(vpix->hw); + xa_surface_unref(vpix->hw); vpix->hw = NULL; } if (!(vpix->backing & VMWGFX_PIX_GMR) && vpix->gmr) { @@ -286,7 +286,8 @@ vmwgfx_saa_dma(struct vmwgfx_saa *vsaa, if (vpix->gmr && vsaa->can_optimize_dma) { uint32_t handle, dummy; - if (xa_surface_handle(vpix->hw, &handle, &dummy) != 0) + if (xa_surface_handle(vpix->hw, xa_handle_type_shared, + &handle, &dummy) != 0) goto out_err; if (vmwgfx_dma(0, 0, reg, vpix->gmr, pixmap->devKind, handle, to_hw) != 0) @@ -305,6 +306,8 @@ vmwgfx_saa_dma(struct vmwgfx_saa *vsaa, (int) to_hw, (struct xa_box *) REGION_RECTS(reg), REGION_NUM_RECTS(reg)); + if (to_hw) + xa_context_flush(vsaa->xa_ctx); if (vpix->gmr) vmwgfx_dmabuf_unmap(vpix->gmr); if (ret) @@ -441,7 +444,7 @@ vmwgfx_hw_kill(struct vmwgfx_saa *vsaa, &spix->dirty_hw)) return FALSE; - xa_surface_destroy(vpix->hw); + xa_surface_unref(vpix->hw); vpix->hw = NULL; /* @@ -683,7 +686,8 @@ vmwgfx_present_prepare(struct vmwgfx_saa *vsaa, (void) pScreen; if (src_vpix == dst_vpix || !src_vpix->hw || - xa_surface_handle(src_vpix->hw, &vsaa->src_handle, &dummy) != 0) + xa_surface_handle(src_vpix->hw, xa_handle_type_shared, + &vsaa->src_handle, &dummy) != 0) return FALSE; REGION_NULL(pScreen, &vsaa->present_region); @@ -784,7 +788,7 @@ vmwgfx_create_hw(struct vmwgfx_saa *vsaa, return TRUE; out_no_damage: - xa_surface_destroy(hw); + xa_surface_unref(hw); return FALSE; } @@ -929,6 +933,7 @@ vmwgfx_copy_prepare(struct saa_driver *driver, if (!vmwgfx_hw_validate(src_pixmap, src_reg)) { xa_copy_done(vsaa->xa_ctx); + xa_context_flush(vsaa->xa_ctx); return FALSE; } @@ -1029,6 +1034,7 @@ vmwgfx_copy_done(struct saa_driver *driver) return; } xa_copy_done(vsaa->xa_ctx); + xa_context_flush(vsaa->xa_ctx); } static Bool @@ -1175,6 +1181,7 @@ vmwgfx_composite_done(struct saa_driver *driver) struct vmwgfx_saa *vsaa = to_vmwgfx_saa(driver); xa_composite_done(vsaa->xa_ctx); + xa_context_flush(vsaa->xa_ctx); } static void @@ -1436,7 +1443,8 @@ vmwgfx_scanout_ref(struct vmwgfx_screen_entry *entry) */ if (!vmwgfx_hw_accel_validate(pixmap, 0, XA_FLAG_SCANOUT, 0, NULL)) goto out_err; - if (xa_surface_handle(vpix->hw, &handle, &dummy) != 0) + if (xa_surface_handle(vpix->hw, xa_handle_type_shared, + &handle, &dummy) != 0) goto out_err; depth = xa_format_depth(xa_surface_format(vpix->hw)); diff --git a/vmwgfx/vmwgfx_tex_video.c b/vmwgfx/vmwgfx_tex_video.c index 449266b..2971ed7 100644 --- a/vmwgfx/vmwgfx_tex_video.c +++ b/vmwgfx/vmwgfx_tex_video.c @@ -199,7 +199,7 @@ stop_video(ScrnInfoPtr pScrn, pointer data, Bool shutdown) for (i=0; i<3; ++i) { if (priv->yuv[i]) { - xa_surface_destroy(priv->yuv[i]); + xa_surface_unref(priv->yuv[i]); priv->yuv[i] = NULL; } for (j=0; j<2; ++j) { @@ -539,7 +539,8 @@ copy_packed_data(ScrnInfoPtr pScrn, REGION_RESET(pScrn->pScreen, ®, &box); } - if (xa_surface_handle(srf, &handle, &stride) != 0) { + if (xa_surface_handle(srf, xa_handle_type_shared, + &handle, &stride) != 0) { ret = BadAlloc; break; } -- cgit v0.9.0.2-2-gbebe 1.1 x11-drivers/xf86-video-vmware/files/xf86-video-vmware-13.0.1-xa-compat-2.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/xf86-video-vmware/files/xf86-video-vmware-13.0.1-xa-compat-2.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-drivers/xf86-video-vmware/files/xf86-video-vmware-13.0.1-xa-compat-2.patch?rev=1.1&content-type=text/plain Index: xf86-video-vmware-13.0.1-xa-compat-2.patch =================================================================== >From 93228f3dd3355a25583d22dbb96791678b93be3e Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom <thellst...@vmware.com> Date: Wed, 11 Dec 2013 14:54:02 +0000 Subject: vmwgfx: Really allow XA version 2. When XA starts to correctly advertise version 2, we didn't allow it. Fix this. Signed-off-by: Thomas Hellstrom <thellst...@vmware.com> Reviewed-by: Jakob Bornecrantz <ja...@vmware.com> --- diff --git a/vmwgfx/vmwgfx_driver.c b/vmwgfx/vmwgfx_driver.c index 6301c29..4e28097 100644 --- a/vmwgfx/vmwgfx_driver.c +++ b/vmwgfx/vmwgfx_driver.c @@ -79,7 +79,7 @@ typedef uint8_t uint8; #define XA_VERSION_MINOR_REQUIRED 0 #define XA_VERSION_MAJOR_REQUIRED 1 -#define XA_VERSION_MAJOR_COMPAT 1 +#define XA_VERSION_MAJOR_COMPAT 2 #define DRM_VERSION_MAJOR_REQUIRED 2 #define DRM_VERSION_MINOR_REQUIRED 3 -- cgit v0.9.0.2-2-gbebe