Rebase patch to use va_gl as vdpau driver on i965 GPUs, re-fix rhbz#1413733
This commit is contained in:
parent
72455413e3
commit
f57420c8b5
152
0001-xf86-dri2-Use-va_gl-as-vdpau_driver-for-Intel-i965-G.patch
Normal file
152
0001-xf86-dri2-Use-va_gl-as-vdpau_driver-for-Intel-i965-G.patch
Normal file
@ -0,0 +1,152 @@
|
||||
From acf5a0100c98a040e5e07a79ecf4a83627da770e Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Thu, 23 Mar 2017 12:54:07 +0100
|
||||
Subject: [PATCH xserver] xf86: dri2: Use va_gl as vdpau_driver for Intel i965
|
||||
GPUs
|
||||
|
||||
The modesetting driver (which now often is used with Intel GPUs),
|
||||
relies on dri2_probe_driver_name() to get the dri and vdpau driver
|
||||
names, before this commit it would always assign the same name to
|
||||
the 2 names. But the vdpau driver for i965 GPUs should be va_gl
|
||||
(i915 does not support vdpau at all).
|
||||
|
||||
This commit modifies the used lookup table and dri2_probe_driver_name()
|
||||
to set the vdpau_driver to va_gl for i965 GPUs, it leaves the 2
|
||||
names the same for all other GPUs.
|
||||
|
||||
Note this commit adds a FIXME comment for a memory leak in
|
||||
dri2_probe_driver_name(), that leak was already present and fixing
|
||||
it falls outside of the scope of this commit.
|
||||
|
||||
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1413733
|
||||
Cc: kwizart@gmail.com
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
hw/xfree86/dri2/dri2.c | 31 +++++++++++++--------
|
||||
hw/xfree86/dri2/pci_ids/pci_id_driver_map.h | 21 +++++++-------
|
||||
2 files changed, 31 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
|
||||
index 6619e3aa7..1f8ad14bc 100644
|
||||
--- a/hw/xfree86/dri2/dri2.c
|
||||
+++ b/hw/xfree86/dri2/dri2.c
|
||||
@@ -1437,14 +1437,18 @@ get_prime_id(void)
|
||||
|
||||
#include "pci_ids/pci_id_driver_map.h"
|
||||
|
||||
-static char *
|
||||
-dri2_probe_driver_name(ScreenPtr pScreen, DRI2InfoPtr info)
|
||||
+static void
|
||||
+dri2_probe_driver_name(ScreenPtr pScreen, DRI2InfoPtr info,
|
||||
+ const char **dri_driver_ret,
|
||||
+ const char **vdpau_driver_ret)
|
||||
{
|
||||
#ifdef WITH_LIBDRM
|
||||
int i, j;
|
||||
- char *driver = NULL;
|
||||
drmDevicePtr dev;
|
||||
|
||||
+ *dri_driver_ret = NULL;
|
||||
+ *vdpau_driver_ret = NULL;
|
||||
+
|
||||
/* For non-PCI devices and drmGetDevice fail, just assume that
|
||||
* the 3D driver is named the same as the kernel driver. This is
|
||||
* currently true for vc4 and msm (freedreno).
|
||||
@@ -1456,12 +1460,14 @@ dri2_probe_driver_name(ScreenPtr pScreen, DRI2InfoPtr info)
|
||||
xf86DrvMsg(pScreen->myNum, X_ERROR,
|
||||
"[DRI2] Couldn't drmGetVersion() on non-PCI device, "
|
||||
"no driver name found.\n");
|
||||
- return NULL;
|
||||
+ return;
|
||||
}
|
||||
|
||||
- driver = strndup(version->name, version->name_len);
|
||||
+ /* FIXME this gets leaked */
|
||||
+ *dri_driver_ret = strndup(version->name, version->name_len);
|
||||
+ *vdpau_driver_ret = *dri_driver_ret;
|
||||
drmFreeVersion(version);
|
||||
- return driver;
|
||||
+ return;
|
||||
}
|
||||
|
||||
for (i = 0; driver_map[i].driver; i++) {
|
||||
@@ -1469,13 +1475,15 @@ dri2_probe_driver_name(ScreenPtr pScreen, DRI2InfoPtr info)
|
||||
continue;
|
||||
|
||||
if (driver_map[i].num_chips_ids == -1) {
|
||||
- driver = strdup(driver_map[i].driver);
|
||||
+ *dri_driver_ret = driver_map[i].driver;
|
||||
+ *vdpau_driver_ret = driver_map[i].vdpau_driver;
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (j = 0; j < driver_map[i].num_chips_ids; j++) {
|
||||
if (driver_map[i].chip_ids[j] == dev->deviceinfo.pci->device_id) {
|
||||
- driver = strdup(driver_map[i].driver);
|
||||
+ *dri_driver_ret = driver_map[i].driver;
|
||||
+ *vdpau_driver_ret = driver_map[i].vdpau_driver;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -1487,9 +1495,9 @@ dri2_probe_driver_name(ScreenPtr pScreen, DRI2InfoPtr info)
|
||||
dev->deviceinfo.pci->vendor_id, dev->deviceinfo.pci->device_id);
|
||||
out:
|
||||
drmFreeDevice(&dev);
|
||||
- return driver;
|
||||
#else
|
||||
- return NULL;
|
||||
+ *dri_driver_ret = NULL;
|
||||
+ *vdpau_driver_ret = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1610,7 +1618,8 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
|
||||
if (info->driverName) {
|
||||
ds->driverNames[0] = info->driverName;
|
||||
} else {
|
||||
- ds->driverNames[0] = ds->driverNames[1] = dri2_probe_driver_name(pScreen, info);
|
||||
+ dri2_probe_driver_name(pScreen, info,
|
||||
+ &ds->driverNames[0], &ds->driverNames[1]);
|
||||
if (!ds->driverNames[0])
|
||||
return FALSE;
|
||||
}
|
||||
diff --git a/hw/xfree86/dri2/pci_ids/pci_id_driver_map.h b/hw/xfree86/dri2/pci_ids/pci_id_driver_map.h
|
||||
index da7ea1c1e..7036d1003 100644
|
||||
--- a/hw/xfree86/dri2/pci_ids/pci_id_driver_map.h
|
||||
+++ b/hw/xfree86/dri2/pci_ids/pci_id_driver_map.h
|
||||
@@ -66,21 +66,22 @@ static const int vmwgfx_chip_ids[] = {
|
||||
static const struct {
|
||||
int vendor_id;
|
||||
const char *driver;
|
||||
+ const char *vdpau_driver;
|
||||
const int *chip_ids;
|
||||
int num_chips_ids;
|
||||
} driver_map[] = {
|
||||
- { 0x8086, "i915", i915_chip_ids, ARRAY_SIZE(i915_chip_ids) },
|
||||
- { 0x8086, "i965", i965_chip_ids, ARRAY_SIZE(i965_chip_ids) },
|
||||
+ { 0x8086, "i915", "i915", i915_chip_ids, ARRAY_SIZE(i915_chip_ids) },
|
||||
+ { 0x8086, "i965", "va_gl", i965_chip_ids, ARRAY_SIZE(i965_chip_ids) },
|
||||
#ifndef DRIVER_MAP_GALLIUM_ONLY
|
||||
- { 0x1002, "radeon", r100_chip_ids, ARRAY_SIZE(r100_chip_ids) },
|
||||
- { 0x1002, "r200", r200_chip_ids, ARRAY_SIZE(r200_chip_ids) },
|
||||
+ { 0x1002, "radeon", "radeon", r100_chip_ids, ARRAY_SIZE(r100_chip_ids) },
|
||||
+ { 0x1002, "r200", "r200", r200_chip_ids, ARRAY_SIZE(r200_chip_ids) },
|
||||
#endif
|
||||
- { 0x1002, "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids) },
|
||||
- { 0x1002, "r600", r600_chip_ids, ARRAY_SIZE(r600_chip_ids) },
|
||||
- { 0x1002, "radeonsi", radeonsi_chip_ids, ARRAY_SIZE(radeonsi_chip_ids) },
|
||||
- { 0x10de, "nouveau", NULL, -1 },
|
||||
- { 0x1af4, "virtio_gpu", virtio_gpu_chip_ids, ARRAY_SIZE(virtio_gpu_chip_ids) },
|
||||
- { 0x15ad, "vmwgfx", vmwgfx_chip_ids, ARRAY_SIZE(vmwgfx_chip_ids) },
|
||||
+ { 0x1002, "r300", "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids) },
|
||||
+ { 0x1002, "r600","r600", r600_chip_ids, ARRAY_SIZE(r600_chip_ids) },
|
||||
+ { 0x1002, "radeonsi", "radeonsi", radeonsi_chip_ids, ARRAY_SIZE(radeonsi_chip_ids) },
|
||||
+ { 0x10de, "nouveau", "nouveau", NULL, -1 },
|
||||
+ { 0x1af4, "virtio_gpu", "virtio_gpu", virtio_gpu_chip_ids, ARRAY_SIZE(virtio_gpu_chip_ids) },
|
||||
+ { 0x15ad, "vmwgfx", "vmwgfx", vmwgfx_chip_ids, ARRAY_SIZE(vmwgfx_chip_ids) },
|
||||
{ 0x0000, NULL, NULL, 0 },
|
||||
};
|
||||
|
||||
--
|
||||
2.19.0
|
||||
|
@ -46,7 +46,7 @@
|
||||
Summary: X.Org X11 X server
|
||||
Name: xorg-x11-server
|
||||
Version: 1.20.1
|
||||
Release: 3%{?gitdate:.%{gitdate}}%{dist}
|
||||
Release: 4%{?gitdate:.%{gitdate}}%{dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X
|
||||
@ -83,8 +83,9 @@ Patch1: 06_use-intel-only-on-pre-gen4.diff
|
||||
# Default to xf86-video-modesetting on GeForce 8 and newer
|
||||
Patch2: 0001-xfree86-use-modesetting-driver-by-default-on-GeForce.patch
|
||||
|
||||
# XXX needs rebase, but also va_gl should probably just be the default
|
||||
# Patch3: 0001-xf86-dri2-Use-va_gl-as-vdpau_driver-for-Intel-i965-G.patch
|
||||
# Default to va_gl on intel i965 as we use the modesetting drv there
|
||||
# va_gl should probably just be the default everywhere ?
|
||||
Patch3: 0001-xf86-dri2-Use-va_gl-as-vdpau_driver-for-Intel-i965-G.patch
|
||||
|
||||
Patch4: 0001-Always-install-vbe-and-int10-sdk-headers.patch
|
||||
|
||||
@ -533,6 +534,9 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Oct 4 2018 Hans de Goede <hdegoede@redhat.com> - 1.20.1-4
|
||||
- Rebase patch to use va_gl as vdpau driver on i965 GPUs, re-fix rhbz#1413733
|
||||
|
||||
* Thu Sep 13 2018 Dave Airlie <airlied@redhat.com> - 1.20.1-3
|
||||
- Build with PIE enabled (this doesn't enable bind now)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user