mirror of
https://gitdl.cn/https://github.com/chakralinux/core.git
synced 2025-02-14 06:29:04 +08:00
mesa: remove radeonsi support and delete patch no longer needed
This commit is contained in:
parent
041740590c
commit
13888acdf2
@ -3,7 +3,7 @@
|
||||
pkgbase=mesa
|
||||
pkgname=('mesa' 'libgl' 'libglapi')
|
||||
pkgver=10.0.1
|
||||
pkgrel=4
|
||||
pkgrel=5
|
||||
arch=('x86_64')
|
||||
makedepends=('glproto>=1.4.14' 'libdrm>=2.4.38' 'libxxf86vm>=1.1.1' 'libxdamage>=1.1.3' 'expat>=2.0.1' 'libx11>=1.4.3' 'libxt>=1.1.1'
|
||||
'gcc-libs' 'dri2proto>=2.8' 'python2' 'libxml2' 'imake' 'llvm' 'systemd'
|
||||
@ -21,7 +21,7 @@ build() {
|
||||
autoreconf -vfi
|
||||
./configure --prefix=/usr \
|
||||
--with-dri-driverdir=/usr/lib/xorg/modules/dri \
|
||||
--with-gallium-drivers=r300,r600,radeonsi,nouveau,svga,swrast \
|
||||
--with-gallium-drivers=r300,r600,nouveau,svga,swrast \
|
||||
--with-dri-drivers=i915,i965,r200,radeon,nouveau,swrast \
|
||||
--enable-gallium-llvm \
|
||||
--enable-gallium-egl \
|
||||
|
@ -1,284 +0,0 @@
|
||||
From 8d9778589f4b3a174e884338adb0fe1bdeca5eb7 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Stellard <thomas.stellard@amd.com>
|
||||
Date: Thu, 10 May 2012 14:21:54 +0000
|
||||
Subject: radeon: Support LLVM 3.2
|
||||
|
||||
LLVM 3.2 and newer requires that the R600/SI backend be part of the
|
||||
LLVM tree.
|
||||
---
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 896f98a..32f412b 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1661,6 +1661,7 @@ if test "x$enable_gallium_llvm" = xyes; then
|
||||
if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then
|
||||
LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
|
||||
fi
|
||||
+ LLVM_COMPONENTS="${LLVM_COMPONENTS} all-targets"
|
||||
if test "x$enable_opencl" = xyes; then
|
||||
LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
|
||||
fi
|
||||
@@ -1782,6 +1783,23 @@ gallium_require_drm_loader() {
|
||||
fi
|
||||
}
|
||||
|
||||
+radeon_llvm_check() {
|
||||
+ LLVM_VERSION_MAJOR=`echo $LLVM_VERSION | cut -d. -f1`
|
||||
+ if test "$LLVM_VERSION_MAJOR" -lt "3" -o "x$LLVM_VERSION" = "x3.0"; then
|
||||
+ AC_MSG_ERROR([LLVM 3.1 or newer is required for the r600/radeonsi llvm compiler.])
|
||||
+ fi
|
||||
+ if test "$LLVM_VERSION_MAJOR" -ge "3" -a "x$LLVM_VERSION" != "x3.1" && $LLVM_CONFIG --targets-built | grep -qv '\<AMDGPU\>' ; then
|
||||
+ AC_MSG_ERROR([To use the r600/radeonsi LLVM backend with LLVM 3.2 and newer, you need to fetch the LLVM source from:
|
||||
+ git://people.freedesktop.org/~tstellar/llvm master
|
||||
+ and build with --enable-experimental-targets==AMDGPU])
|
||||
+ fi
|
||||
+ if test "$LLVM_VERSION" = "3.2"; then
|
||||
+ dnl LLVM 3.2 does not add experimental libraries to llvm-config's
|
||||
+ dnl library list.
|
||||
+ LLVM_LIBS="$LLVM_LIBS -lLLVMAMDGPUCodeGen -lLLVMAMDGPUDesc -lLLVMAMDGPUAsmPrinter -lLLVMAMDGPUInfo `$LLVM_CONFIG --libs mc`"
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
dnl Gallium drivers
|
||||
dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
|
||||
if test "x$with_gallium_drivers" != x; then
|
||||
@@ -1812,9 +1830,7 @@ if test "x$with_gallium_drivers" != x; then
|
||||
gallium_require_drm_loader
|
||||
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
|
||||
if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
|
||||
- if test "x$LLVM_VERSION" != "x3.1"; then
|
||||
- AC_MSG_ERROR([LLVM 3.1 is required for the r600 llvm compiler.])
|
||||
- fi
|
||||
+ radeon_llvm_check
|
||||
NEED_RADEON_GALLIUM=yes;
|
||||
fi
|
||||
if test "x$enable_r600_llvm" = xyes; then
|
||||
@@ -1829,9 +1845,7 @@ if test "x$with_gallium_drivers" != x; then
|
||||
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
|
||||
gallium_require_drm_loader
|
||||
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
|
||||
- if test "x$LLVM_VERSION" != "x3.1"; then
|
||||
- AC_MSG_ERROR([LLVM 3.1 is required to build the radeonsi driver.])
|
||||
- fi
|
||||
+ radeon_llvm_check
|
||||
NEED_RADEON_GALLIUM=yes;
|
||||
gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
|
||||
;;
|
||||
diff --git a/src/gallium/drivers/radeon/Makefile b/src/gallium/drivers/radeon/Makefile
|
||||
index 7f1c613..bcc2646 100644
|
||||
--- a/src/gallium/drivers/radeon/Makefile
|
||||
+++ b/src/gallium/drivers/radeon/Makefile
|
||||
@@ -12,6 +12,12 @@ TBLGEN = $(LLVM_BINDIR)/llvm-tblgen
|
||||
|
||||
CXXFLAGS+= $(LLVM_CXXFLAGS)
|
||||
|
||||
+ifeq ($(LLVM_VERSION),3.1)
|
||||
+ CPP_SOURCES += $(LLVM_CPP_SOURCES)
|
||||
+else
|
||||
+ CXXFLAGS+= -DEXTERNAL_LLVM
|
||||
+endif
|
||||
+
|
||||
include ../../Makefile.template
|
||||
|
||||
CXXFLAGS := $(filter-out -DDEBUG, $(CXXFLAGS))
|
||||
diff --git a/src/gallium/drivers/radeon/Makefile.sources b/src/gallium/drivers/radeon/Makefile.sources
|
||||
index c5d1207..5e79342 100644
|
||||
--- a/src/gallium/drivers/radeon/Makefile.sources
|
||||
+++ b/src/gallium/drivers/radeon/Makefile.sources
|
||||
@@ -23,8 +23,7 @@ TD_FILES := \
|
||||
SIRegisterInfo.td \
|
||||
SISchedule.td
|
||||
|
||||
-
|
||||
-GENERATED_SOURCES := \
|
||||
+LLVM_GENERATED_SOURCES := \
|
||||
R600Intrinsics.td \
|
||||
R600RegisterInfo.td \
|
||||
SIRegisterInfo.td \
|
||||
@@ -41,7 +40,7 @@ GENERATED_SOURCES := \
|
||||
AMDGPUGenMCCodeEmitter.inc \
|
||||
AMDGPUGenDFAPacketizer.inc
|
||||
|
||||
-CPP_SOURCES := \
|
||||
+LLVM_CPP_SOURCES := \
|
||||
AMDIL7XXDevice.cpp \
|
||||
AMDILCFGStructurizer.cpp \
|
||||
AMDILDevice.cpp \
|
||||
@@ -81,6 +80,8 @@ CPP_SOURCES := \
|
||||
MCTargetDesc/SIMCCodeEmitter.cpp \
|
||||
MCTargetDesc/R600MCCodeEmitter.cpp \
|
||||
TargetInfo/AMDGPUTargetInfo.cpp \
|
||||
+
|
||||
+CPP_SOURCES := \
|
||||
radeon_llvm_emit.cpp
|
||||
|
||||
C_SOURCES := \
|
||||
diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
|
||||
index 1b67bfe..625b0b4 100644
|
||||
--- a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
|
||||
+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
|
||||
@@ -90,6 +90,7 @@ radeon_llvm_compile(LLVMModuleRef M, unsigned char ** bytes,
|
||||
/* XXX: Can we just initialize the AMDGPU target here? */
|
||||
InitializeAllTargets();
|
||||
InitializeAllTargetMCs();
|
||||
+ InitializeAllAsmPrinters();
|
||||
#else
|
||||
LLVMInitializeAMDGPUTargetInfo();
|
||||
LLVMInitializeAMDGPUTarget();
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
||||
From 67fcb3c2b4ecbd87e465b6c6b316be44811ea116 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Stellard <thomas.stellard@amd.com>
|
||||
Date: Mon, 01 Oct 2012 21:00:00 +0000
|
||||
Subject: configure.ac: Use amdgpu component for LLVM 3.2
|
||||
|
||||
The amdgpu component actually does exist. I must have been using an
|
||||
older version of llvm-config by accident when I first made this change.
|
||||
---
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 32f412b..0de506d 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1793,10 +1793,8 @@ radeon_llvm_check() {
|
||||
git://people.freedesktop.org/~tstellar/llvm master
|
||||
and build with --enable-experimental-targets==AMDGPU])
|
||||
fi
|
||||
- if test "$LLVM_VERSION" = "3.2"; then
|
||||
- dnl LLVM 3.2 does not add experimental libraries to llvm-config's
|
||||
- dnl library list.
|
||||
- LLVM_LIBS="$LLVM_LIBS -lLLVMAMDGPUCodeGen -lLLVMAMDGPUDesc -lLLVMAMDGPUAsmPrinter -lLLVMAMDGPUInfo `$LLVM_CONFIG --libs mc`"
|
||||
+ if test "x$LLVM_VERSION" = "x3.2"; then
|
||||
+ LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --libs amdgpu`"
|
||||
fi
|
||||
}
|
||||
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
||||
From 4cc530f452436a5304a628d1428ed7f07247a175 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Stellard <thomas.stellard@amd.com>
|
||||
Date: Wed, 10 Oct 2012 21:00:13 +0000
|
||||
Subject: radeon/llvm: Fix build with LLVM 3.2
|
||||
|
||||
---
|
||||
diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
|
||||
index 2f2eb4c..21661a0 100644
|
||||
--- a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
|
||||
+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
|
||||
@@ -36,13 +36,16 @@
|
||||
#include <llvm/Support/TargetRegistry.h>
|
||||
#include <llvm/Support/TargetSelect.h>
|
||||
#include <llvm/Support/Threading.h>
|
||||
-#include <llvm/Target/TargetData.h>
|
||||
#include <llvm/Target/TargetMachine.h>
|
||||
-
|
||||
#include <llvm/Transforms/Scalar.h>
|
||||
-
|
||||
#include <llvm-c/Target.h>
|
||||
|
||||
+#if HAVE_LLVM < 0x0302
|
||||
+#include <llvm/Target/TargetData.h>
|
||||
+#else
|
||||
+#include <llvm/DataLayout.h>
|
||||
+#endif
|
||||
+
|
||||
#include <iostream>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
@@ -120,7 +123,11 @@ radeon_llvm_compile(LLVMModuleRef M, unsigned char ** bytes,
|
||||
));
|
||||
TargetMachine &AMDGPUTargetMachine = *tm.get();
|
||||
PassManager PM;
|
||||
+#if HAVE_LLVM < 0x0302
|
||||
PM.add(new TargetData(*AMDGPUTargetMachine.getTargetData()));
|
||||
+#else
|
||||
+ PM.add(new DataLayout(*AMDGPUTargetMachine.getDataLayout()));
|
||||
+#endif
|
||||
PM.add(createPromoteMemoryToRegisterPass());
|
||||
AMDGPUTargetMachine.setAsmVerbosityDefault(true);
|
||||
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
||||
From b21455f27db6e55e708f8e264f4a15412ee8fa52 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Cherkasov <dcherkassov@gmail.com>
|
||||
Date: Wed, 17 Oct 2012 18:03:13 +0000
|
||||
Subject: configure.ac: Fix LLVM 3.2 r600/radeonsi error message
|
||||
|
||||
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
|
||||
Signed-off-by: Dmitry Cherkasov <Dmitrii.Cherkasov@amd.com>
|
||||
---
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index aefa142..ca24856 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1757,7 +1757,7 @@ radeon_llvm_check() {
|
||||
if test "$LLVM_VERSION_MAJOR" -ge "3" -a "x$LLVM_VERSION" != "x3.1" && $LLVM_CONFIG --targets-built | grep -qv '\<AMDGPU\>' ; then
|
||||
AC_MSG_ERROR([To use the r600/radeonsi LLVM backend with LLVM 3.2 and newer, you need to fetch the LLVM source from:
|
||||
git://people.freedesktop.org/~tstellar/llvm master
|
||||
- and build with --enable-experimental-targets==AMDGPU])
|
||||
+ and build with --enable-experimental-targets=AMDGPU])
|
||||
fi
|
||||
if test "x$LLVM_VERSION" = "x3.2"; then
|
||||
LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --libs amdgpu`"
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
||||
From d2b0338e3354fadc90a3751520f4aa44ba01954f Mon Sep 17 00:00:00 2001
|
||||
From: Tom Stellard <thomas.stellard@amd.com>
|
||||
Date: Wed, 17 Oct 2012 19:21:48 +0000
|
||||
Subject: r600g: Remove special handling of PRED_SET* insructions for LLVM 3.2
|
||||
|
||||
The 3.2 version of the backend now sets all the correct fields for
|
||||
PRED_SET* instructions.
|
||||
---
|
||||
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
|
||||
index 053a988..58b7fb2 100644
|
||||
--- a/src/gallium/drivers/r600/r600_shader.c
|
||||
+++ b/src/gallium/drivers/r600/r600_shader.c
|
||||
@@ -330,6 +330,7 @@ static unsigned r600_alu_from_byte_stream(struct r600_shader_ctx *ctx,
|
||||
alu.src[src_idx].sel += 512;
|
||||
}
|
||||
|
||||
+#if HAVE_LLVM < 0x0302
|
||||
if (alu.inst == CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETNE) ||
|
||||
alu.inst == CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETE) ||
|
||||
alu.inst == CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETE_INT) ||
|
||||
@@ -340,6 +341,7 @@ static unsigned r600_alu_from_byte_stream(struct r600_shader_ctx *ctx,
|
||||
alu.src[1].chan = 0;
|
||||
alu.last = 1;
|
||||
}
|
||||
+#endif
|
||||
|
||||
if (alu.execute_mask) {
|
||||
alu.pred_sel = 0;
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
||||
From f2f17fc348c847bbf5c54bb75b76e1661e8ced60 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Stellard <thomas.stellard@amd.com>
|
||||
Date: Mon, 01 Oct 2012 21:01:06 +0000
|
||||
Subject: radeon/llvm: Only initialize the AMDGPU target
|
||||
|
||||
---
|
||||
diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
|
||||
index 625b0b4..2f2eb4c 100644
|
||||
--- a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
|
||||
+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
|
||||
@@ -86,17 +86,11 @@ radeon_llvm_compile(LLVMModuleRef M, unsigned char ** bytes,
|
||||
|
||||
Triple AMDGPUTriple(sys::getDefaultTargetTriple());
|
||||
|
||||
-#ifdef EXTERNAL_LLVM
|
||||
- /* XXX: Can we just initialize the AMDGPU target here? */
|
||||
- InitializeAllTargets();
|
||||
- InitializeAllTargetMCs();
|
||||
- InitializeAllAsmPrinters();
|
||||
-#else
|
||||
LLVMInitializeAMDGPUTargetInfo();
|
||||
LLVMInitializeAMDGPUTarget();
|
||||
LLVMInitializeAMDGPUTargetMC();
|
||||
LLVMInitializeAMDGPUAsmPrinter();
|
||||
-#endif
|
||||
+
|
||||
std::string err;
|
||||
const Target * AMDGPUTarget = TargetRegistry::lookupTarget("r600", err);
|
||||
if(!AMDGPUTarget) {
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
@ -1,46 +0,0 @@
|
||||
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
|
||||
index a50a51d..f1bb4d9 100644
|
||||
--- a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
|
||||
+++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
|
||||
@@ -235,7 +235,24 @@ lp_disassemble(const void* func)
|
||||
int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
|
||||
#endif
|
||||
|
||||
-#if HAVE_LLVM >= 0x0300
|
||||
+#if HAVE_LLVM >= 0x0301
|
||||
+ OwningPtr<const MCRegisterInfo> MRI(T->createMCRegInfo(Triple));
|
||||
+ if (!MRI) {
|
||||
+ debug_printf("error: no register info for target %s\n", Triple.c_str());
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ OwningPtr<const MCInstrInfo> MII(T->createMCInstrInfo());
|
||||
+ if (!MII) {
|
||||
+ debug_printf("error: no instruction info for target %s\n", Triple.c_str());
|
||||
+ return;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+#if HAVE_LLVM >= 0x0301
|
||||
+ OwningPtr<MCInstPrinter> Printer(
|
||||
+ T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo, *MII, *MRI, *STI));
|
||||
+#elif HAVE_LLVM == 0x0300
|
||||
OwningPtr<MCInstPrinter> Printer(
|
||||
T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo, *STI));
|
||||
#elif HAVE_LLVM >= 0x0208
|
||||
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
|
||||
index fe7616b..68f8808 100644
|
||||
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
|
||||
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
|
||||
@@ -62,7 +62,11 @@
|
||||
extern "C" void
|
||||
lp_register_oprofile_jit_event_listener(LLVMExecutionEngineRef EE)
|
||||
{
|
||||
+#if HAVE_LLVM >= 0x0301
|
||||
+ llvm::unwrap(EE)->RegisterJITEventListener(llvm::JITEventListener::createOProfileJITEventListener());
|
||||
+#else
|
||||
llvm::unwrap(EE)->RegisterJITEventListener(llvm::createOProfileJITEventListener());
|
||||
+#endif
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user