Upgrade version to 13.4.0

Upstreamed patches removed from spec file.

Signed-off-by: Chenxi Mao <chenxi.mao@suse.com>
(cherry picked from commit 40025ce2cd4e01b7a87c5f699160bd7327cb3caf)
This commit is contained in:
Chenxi Mao 2023-01-28 07:04:50 +08:00 committed by openeuler-sync-bot
parent 14745bc303
commit c010a9c001
8 changed files with 9 additions and 307 deletions

View File

@ -1,32 +0,0 @@
From 7e5237dd08f2a469d0bc699cbcde763cc93c7407 Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Tue, 7 Nov 2017 15:42:59 -0500
Subject: [PATCH xf86-video-vmware] saa: Build compatibility with xserver 1.20
fbGetRotatedPixmap went away with 24bpp support, just treat it as NULL
and we'll do the right thing.
Signed-off-by: Adam Jackson <ajax@redhat.com>
---
saa/saa.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/saa/saa.c b/saa/saa.c
index be9520e..d956853 100644
--- a/saa/saa.c
+++ b/saa/saa.c
@@ -370,6 +370,11 @@ saa_op_reads_destination(CARD8 op)
}
}
+/* compatibility with xserver >= 1.20 */
+#ifndef fbGetRotatedPixmap
+#define fbGetRotatedPixmap(pGC) NULL
+#endif
+
static void
saa_validate_gc(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)
{
--
2.16.2

View File

@ -1,162 +0,0 @@
From 4ec3d67da829f4e7a35ab08427002b9d7e4e5f4b Mon Sep 17 00:00:00 2001
From: Thomas Hellstrom <thellstrom@vmware.com>
Date: Tue, 27 Nov 2018 16:20:32 +0100
Subject: [PATCH 02/11] vmwgfx: Fix XVideo memory leaks
We were not properly freeing the port privates.
In order to access those at CloseScreen time, don't free the adaptor pointers
at XV screen init, but hold on to them until CloseScreen.
Also properly free the new_adaptors pointer.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
---
vmwgfx/vmwgfx_driver.c | 2 ++
vmwgfx/vmwgfx_driver.h | 9 +++++++-
vmwgfx/vmwgfx_overlay.c | 11 ++++------
vmwgfx/vmwgfx_tex_video.c | 44 ++++++++++++++++++++++++++-------------
4 files changed, 44 insertions(+), 22 deletions(-)
diff --git a/vmwgfx/vmwgfx_driver.c b/vmwgfx/vmwgfx_driver.c
index 665f620..ccddb6f 100644
--- a/vmwgfx/vmwgfx_driver.c
+++ b/vmwgfx/vmwgfx_driver.c
@@ -1327,6 +1327,8 @@ drv_close_screen(CLOSE_SCREEN_ARGS_DECL)
pScrn->LeaveVT(VT_FUNC_ARGS);
vmwgfx_uevent_fini(pScrn, ms);
+ vmw_xv_close(pScreen);
+
pScrn->vtSema = FALSE;
vmwgfx_unwrap(ms, pScrn, EnterVT);
diff --git a/vmwgfx/vmwgfx_driver.h b/vmwgfx/vmwgfx_driver.h
index 05abebe..cfd2ed2 100644
--- a/vmwgfx/vmwgfx_driver.h
+++ b/vmwgfx/vmwgfx_driver.h
@@ -157,6 +157,11 @@ typedef struct _modesettingRec
Bool xa_dri3;
Bool dri3_available;
#endif
+
+ /* Video */
+ XF86VideoAdaptorPtr overlay;
+ XF86VideoAdaptorPtr textured;
+
} modesettingRec, *modesettingPtr;
#define modesettingPTR(p) ((modesettingPtr)((p)->driverPrivate))
@@ -231,7 +236,9 @@ xorg_xv_init(ScreenPtr pScreen);
XF86VideoAdaptorPtr
vmw_video_init_adaptor(ScrnInfoPtr pScrn);
void
-vmw_video_free_adaptor(XF86VideoAdaptorPtr adaptor, Bool free_ports);
+vmw_video_free_adaptor(XF86VideoAdaptorPtr adaptor);
+void
+vmw_xv_close(ScreenPtr pScreen);
void
vmw_ctrl_ext_init(ScrnInfoPtr pScrn);
diff --git a/vmwgfx/vmwgfx_overlay.c b/vmwgfx/vmwgfx_overlay.c
index c35cebd..94d738c 100644
--- a/vmwgfx/vmwgfx_overlay.c
+++ b/vmwgfx/vmwgfx_overlay.c
@@ -258,15 +258,12 @@ vmwgfx_overlay_port_create(int drm_fd, ScreenPtr pScreen)
}
void
-vmw_video_free_adaptor(XF86VideoAdaptorPtr adaptor, Bool free_ports)
+vmw_video_free_adaptor(XF86VideoAdaptorPtr adaptor)
{
- if (free_ports) {
- int i;
+ int i;
- for(i=0; i<adaptor->nPorts; ++i) {
- free(adaptor->pPortPrivates[i].ptr);
- }
- }
+ for (i = 0; i < adaptor->nPorts; ++i)
+ free(adaptor->pPortPrivates[i].ptr);
free(adaptor->pPortPrivates);
xf86XVFreeVideoAdaptorRec(adaptor);
diff --git a/vmwgfx/vmwgfx_tex_video.c b/vmwgfx/vmwgfx_tex_video.c
index e42a4c6..acc2b56 100644
--- a/vmwgfx/vmwgfx_tex_video.c
+++ b/vmwgfx/vmwgfx_tex_video.c
@@ -904,15 +904,12 @@ port_priv_create(struct xa_tracker *xat, struct xa_context *r,
}
static void
-vmwgfx_free_textured_adaptor(XF86VideoAdaptorPtr adaptor, Bool free_ports)
+vmwgfx_free_textured_adaptor(XF86VideoAdaptorPtr adaptor)
{
- if (free_ports) {
- int i;
+ int i;
- for(i=0; i<adaptor->nPorts; ++i) {
- free(adaptor->pPortPrivates[i].ptr);
- }
- }
+ for (i = 0; i < adaptor->nPorts; ++i)
+ free(adaptor->pPortPrivates[i].ptr);
free(adaptor->pAttributes);
free(adaptor->pPortPrivates);
@@ -986,6 +983,23 @@ xorg_setup_textured_adapter(ScreenPtr pScreen)
return adapt;
}
+void
+vmw_xv_close(ScreenPtr pScreen)
+{
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+ modesettingPtr ms = modesettingPTR(pScrn);
+
+ if (ms->overlay) {
+ vmw_video_free_adaptor(ms->overlay);
+ ms->overlay = NULL;
+ }
+
+ if (ms->textured) {
+ vmwgfx_free_textured_adaptor(ms->textured);
+ ms->textured = NULL;
+ }
+}
+
void
xorg_xv_init(ScreenPtr pScreen)
{
@@ -1025,17 +1039,19 @@ xorg_xv_init(ScreenPtr pScreen)
adaptors[num_adaptors++] = overlay_adaptor;
if (num_adaptors) {
- Bool ret;
- ret = xf86XVScreenInit(pScreen, adaptors, num_adaptors);
- if (textured_adapter)
- vmwgfx_free_textured_adaptor(textured_adapter, !ret);
- if (overlay_adaptor)
- vmw_video_free_adaptor(overlay_adaptor, !ret);
- if (!ret)
+ if (xf86XVScreenInit(pScreen, adaptors, num_adaptors)) {
+ ms->overlay = overlay_adaptor;
+ ms->textured = textured_adapter;
+ } else {
+ ms->overlay = NULL;
+ ms->textured = NULL;
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Failed to initialize Xv.\n");
+ }
} else {
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Disabling Xv because no adaptors could be initialized.\n");
}
+
+ free(new_adaptors);
}
--
2.23.0

View File

@ -1,28 +0,0 @@
From 0b34df288f0e163750962e0e59f5e329642ca457 Mon Sep 17 00:00:00 2001
From: Thomas Hellstrom <thellstrom@vmware.com>
Date: Tue, 27 Nov 2018 16:36:21 +0100
Subject: [PATCH 03/11] vmwgfx: Fix a memory leak
We were leaking a pointer to a drm encoder.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
---
vmwgfx/vmwgfx_output.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/vmwgfx/vmwgfx_output.c b/vmwgfx/vmwgfx_output.c
index ec31e2c..f589226 100644
--- a/vmwgfx/vmwgfx_output.c
+++ b/vmwgfx/vmwgfx_output.c
@@ -642,6 +642,7 @@ xorg_output_init(ScrnInfoPtr pScrn)
if (drm_encoder) {
output->possible_crtcs = drm_encoder->possible_crtcs;
output->possible_clones = drm_encoder->possible_clones;
+ drmModeFreeEncoder(drm_encoder);
} else {
output->possible_crtcs = 0;
output->possible_clones = 0;
--
2.23.0

View File

@ -1,44 +0,0 @@
From d31e8e77e1453c26a02f24b26d96b4660d29e1df Mon Sep 17 00:00:00 2001
From: Thomas Hellstrom <thellstrom@vmware.com>
Date: Tue, 27 Nov 2018 08:37:13 +0100
Subject: [PATCH 06/11] vmwgfx: Fix invalid memory accesses in CloseScreen
Some of the CloseScreen callbacks were referencing XA objects so move the
destruction of the XA state tracker to the end of drv_close_screen to avoid
referencing freed resources.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Deepak Rawat <drawat@vmware.com>
---
vmwgfx/vmwgfx_driver.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/vmwgfx/vmwgfx_driver.c b/vmwgfx/vmwgfx_driver.c
index ccddb6f..e5f0caf 100644
--- a/vmwgfx/vmwgfx_driver.c
+++ b/vmwgfx/vmwgfx_driver.c
@@ -1314,6 +1314,7 @@ drv_close_screen(CLOSE_SCREEN_ARGS_DECL)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
modesettingPtr ms = modesettingPTR(pScrn);
+ Bool ret;
if (ms->cursor) {
FreeCursor(ms->cursor, None);
@@ -1339,10 +1340,12 @@ drv_close_screen(CLOSE_SCREEN_ARGS_DECL)
vmwgfx_unwrap(ms, pScreen, BlockHandler);
vmwgfx_unwrap(ms, pScreen, CreateScreenResources);
+ ret = (*pScreen->CloseScreen) (CLOSE_SCREEN_ARGS);
+
if (ms->xat)
xa_tracker_destroy(ms->xat);
- return (*pScreen->CloseScreen) (CLOSE_SCREEN_ARGS);
+ return ret;
}
static ModeStatus
--
2.23.0

View File

@ -1,32 +0,0 @@
From 77b8183b3395333d5d4c73e25c2d011748f15eda Mon Sep 17 00:00:00 2001
From: Rudi Heitbaum <rudi@heitbaum.com>
Date: Sun, 8 May 2022 03:00:10 +0000
Subject: [PATCH] vmwgfx: fix missing array notation
Fixes error identified by gcc-12.1.0 compiler
make
CC libvmwgfx_la-vmwgfx_tex_video.lo
vmwgfx_tex_video.c: In function 'stop_video':
vmwgfx_tex_video.c:240:20: error: the comparison will always evaluate as 'true' for the address of 'yuv' will never be NULL [-Werror=address]
240 | if (priv->yuv[i]) {
| ^~~~
---
vmwgfx/vmwgfx_tex_video.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vmwgfx/vmwgfx_tex_video.c b/vmwgfx/vmwgfx_tex_video.c
index acc2b56..480a5f1 100644
--- a/vmwgfx/vmwgfx_tex_video.c
+++ b/vmwgfx/vmwgfx_tex_video.c
@@ -237,7 +237,7 @@ stop_video(ScrnInfoPtr pScrn, pointer data, Bool shutdown)
for (i=0; i<3; ++i) {
for (j=0; j<2; ++j) {
- if (priv->yuv[i]) {
+ if (priv->yuv[j][i]) {
xa_surface_destroy(priv->yuv[j][i]);
priv->yuv[j][i] = NULL;
}
--
GitLab

Binary file not shown.

Binary file not shown.

View File

@ -4,18 +4,12 @@
%undefine _hardened_build
Name: xorg-x11-drv-vmware
Version: 13.3.0
Release: 3
Version: 13.4.0
Release: 1
Summary: Xorg X11 vmware video driver
License: MIT
URL: http://www.x.org
Source0: https://ftp.x.org/pub/individual/driver/xf86-video-vmware-%{version}.tar.bz2
Patch0: 0001-saa-Build-compatibility-with-xserver-1.20.patch
Patch1: 0002-vmwgfx-Fix-XVideo-memory-leaks.patch
Patch2: 0003-vmwgfx-Fix-a-memory-leak.patch
Patch3: 0006-vmwgfx-Fix-invalid-memory-accesses-in-CloseScreen.patch
Patch4: backport-vmwgfx-fix-missing-array-notation.patch
Source0: https://ftp.x.org/pub/individual/driver/xf86-video-vmware-%{version}.tar.xz
ExclusiveArch: %{ix86} x86_64 ia64
@ -55,6 +49,12 @@ autoreconf -v --install || exit 1
%{_mandir}/man4/vmware.4*
%changelog
* Sat Jan 28 2023 Chenxi Mao <chenxi.mao@suse.com> - 13.4.0-1
- Type:update
- ID:NA
- SUG:NA
- DESC: upgrade to 13.4.0
* Mon Oct 24 2022 zhouyihang <zhouyihang3@h-partners.com> - 13.3.0-3
- Type:bugfix
- ID:NA