mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
extra/blender to 4.0.2-8
This commit is contained in:
parent
7c564f6737
commit
a8e226ca7b
3 changed files with 220 additions and 4 deletions
|
@ -1,7 +1,7 @@
|
|||
pkgbase = blender
|
||||
pkgdesc = A fully integrated 3D graphics creation suite
|
||||
pkgver = 4.0.2
|
||||
pkgrel = 6
|
||||
pkgrel = 8
|
||||
epoch = 17
|
||||
url = https://www.blender.org
|
||||
arch = x86_64
|
||||
|
@ -78,6 +78,7 @@ pkgbase = blender
|
|||
source = https://projects.blender.org/blender/blender/commit/5486c70aae94196d715c07364292fc108ebf59a8.patch
|
||||
source = force-draco1.patch
|
||||
source = force-draco2.patch
|
||||
source = blender-rocm-6.patch
|
||||
sha512sums = SKIP
|
||||
sha512sums = SKIP
|
||||
sha512sums = SKIP
|
||||
|
@ -86,5 +87,6 @@ pkgbase = blender
|
|||
sha512sums = 375508d1d010b4b043b293cb0c192cb2096aef7ddb0dd1be4a738b20aa720523494cf3054161f1ad116fddc6a9ce03159d6da0a3b3fdb1b57002a477c7c5920a
|
||||
sha512sums = e239da4f3906f1b54265435181cf770bae3d269c8d915df9a73861e6ee71ec70bf2339426e7c81a91e5a567273b3b3742d7a99feefd3398d821b26e1ff3a56d0
|
||||
sha512sums = c162646eba42ea7112cfb615466c2cbaddac8d254d4a9e91cf887c5bffef1325a983701163223a1fdee091310ac5574a400347aab7f52321825b5fa3d5a9036f
|
||||
sha512sums = dc694c655690913701dba92281724671c14f7305cc8f4de6071056f4608837532194178fdddcbcf500d330a0b804d26cd9599b88ff71f9c799664e941809813a
|
||||
|
||||
pkgname = blender
|
||||
|
|
|
@ -18,7 +18,7 @@ buildarch=8
|
|||
|
||||
pkgname=blender
|
||||
pkgver=4.0.2
|
||||
pkgrel=6
|
||||
pkgrel=8
|
||||
epoch=17
|
||||
pkgdesc="A fully integrated 3D graphics creation suite"
|
||||
arch=('x86_64')
|
||||
|
@ -43,7 +43,8 @@ source=("git+https://projects.blender.org/blender/blender.git#tag=v$pkgver"
|
|||
https://developer.download.nvidia.com/redist/optix/v7.7/OptiX-7.7-Include.zip
|
||||
https://projects.blender.org/blender/blender/commit/5486c70aae94196d715c07364292fc108ebf59a8.patch
|
||||
force-draco1.patch
|
||||
force-draco2.patch)
|
||||
force-draco2.patch
|
||||
blender-rocm-6.patch)
|
||||
sha512sums=('SKIP'
|
||||
'SKIP'
|
||||
'SKIP'
|
||||
|
@ -51,7 +52,8 @@ sha512sums=('SKIP'
|
|||
'55caea5beccdc0adebdba8a825f3cfee083015311de5602cfcf215139ccbf9fed62f10ee1dcdf7e31a3557aabbc1fa872eeed67bc46f59fb4e5abd18331c0aca'
|
||||
'375508d1d010b4b043b293cb0c192cb2096aef7ddb0dd1be4a738b20aa720523494cf3054161f1ad116fddc6a9ce03159d6da0a3b3fdb1b57002a477c7c5920a'
|
||||
'e239da4f3906f1b54265435181cf770bae3d269c8d915df9a73861e6ee71ec70bf2339426e7c81a91e5a567273b3b3742d7a99feefd3398d821b26e1ff3a56d0'
|
||||
'c162646eba42ea7112cfb615466c2cbaddac8d254d4a9e91cf887c5bffef1325a983701163223a1fdee091310ac5574a400347aab7f52321825b5fa3d5a9036f')
|
||||
'c162646eba42ea7112cfb615466c2cbaddac8d254d4a9e91cf887c5bffef1325a983701163223a1fdee091310ac5574a400347aab7f52321825b5fa3d5a9036f'
|
||||
'dc694c655690913701dba92281724671c14f7305cc8f4de6071056f4608837532194178fdddcbcf500d330a0b804d26cd9599b88ff71f9c799664e941809813a')
|
||||
|
||||
prepare() {
|
||||
cd "$pkgname"
|
||||
|
@ -80,6 +82,8 @@ prepare() {
|
|||
# Revert https://projects.blender.org/blender/blender/commit/4b891b4af which causes all
|
||||
# CMake custom commands to be run in serial instead of in parallel.
|
||||
sed -i "s/USES_TERMINAL//g" intern/cycles/kernel/CMakeLists.txt
|
||||
|
||||
patch -Np1 -i "$srcdir/blender-rocm-6.patch"
|
||||
}
|
||||
|
||||
get_pyver() {
|
||||
|
|
210
extra/blender/blender-rocm-6.patch
Normal file
210
extra/blender/blender-rocm-6.patch
Normal file
|
@ -0,0 +1,210 @@
|
|||
From f753cf14fca2b97d4bbf48eccc1defcaa1d17daa Mon Sep 17 00:00:00 2001
|
||||
From: bsavery <brian.savery@gmail.com>
|
||||
Date: Wed, 3 Jan 2024 18:16:07 +0100
|
||||
Subject: [PATCH] Cycles: add ROCm 6 compatibility for HIP
|
||||
|
||||
ROCm 6 brings some changes to the HIP API. This pull request is meant to be
|
||||
backward and forward compatible.
|
||||
|
||||
That is Blender could be compiled with either ROCM 6 or 5 and run on either.
|
||||
The main change is the hipMemoryType enum, which we check based on the
|
||||
runtime version to use the correct enum values.
|
||||
|
||||
Without this, HIP will not work on Windows with upcoming 23.40 driver.
|
||||
|
||||
Pull Request: https://projects.blender.org/blender/blender/pulls/116713
|
||||
---
|
||||
extern/hipew/include/hipew.h | 26 +++++++++++++++++++-----
|
||||
extern/hipew/src/hipew.c | 23 +++++++++++++++++++++
|
||||
intern/cycles/device/hip/device_impl.cpp | 16 +++++++++++----
|
||||
intern/cycles/device/hip/device_impl.h | 2 ++
|
||||
4 files changed, 58 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/extern/hipew/include/hipew.h b/extern/hipew/include/hipew.h
|
||||
index f82654ffe93..df7498aaeae 100644
|
||||
--- a/extern/hipew/include/hipew.h
|
||||
+++ b/extern/hipew/include/hipew.h
|
||||
@@ -185,13 +185,26 @@ typedef struct textureReference {
|
||||
|
||||
typedef textureReference* hipTexRef;
|
||||
|
||||
+/**
|
||||
+ * ROCm 6 and ROCm 5 memory types are different.
|
||||
+ * For now, we include both in the enum and then use the get_hip_memory_type
|
||||
+ * Function to convert. When removing ROCm 5 compatibility this can be simplified.
|
||||
+*/
|
||||
typedef enum hipMemoryType {
|
||||
- hipMemoryTypeHost = 0x00,
|
||||
- hipMemoryTypeDevice = 0x01,
|
||||
- hipMemoryTypeArray = 0x02,
|
||||
- hipMemoryTypeUnified = 0x03,
|
||||
+ hipMemoryTypeHost_v5 = 0x00,
|
||||
+ hipMemoryTypeDevice_v5 = 0x01,
|
||||
+ hipMemoryTypeArray_v5 = 0x02,
|
||||
+ hipMemoryTypeUnified_v5 = 0x03,
|
||||
+ hipMemoryTypeUnregistered = 0,
|
||||
+ hipMemoryTypeHost = 1,
|
||||
+ hipMemoryTypeDevice = 2,
|
||||
+ hipMemoryTypeManaged = 3,
|
||||
+ hipMemoryTypeArray = 10,
|
||||
+ hipMemoryTypeUnified = 11,
|
||||
} hipMemoryType;
|
||||
|
||||
+hipMemoryType get_hip_memory_type(hipMemoryType mem_type, int runtime_version);
|
||||
+
|
||||
/**
|
||||
* Pointer attributes
|
||||
*/
|
||||
@@ -316,7 +329,7 @@ typedef enum hipDeviceAttribute_t {
|
||||
hipDeviceAttributeConcurrentManagedAccess, ///< Device can coherently access managed memory concurrently with the CPU
|
||||
hipDeviceAttributeCooperativeLaunch, ///< Support cooperative launch
|
||||
hipDeviceAttributeCooperativeMultiDeviceLaunch, ///< Support cooperative launch on multiple devices
|
||||
- hipDeviceAttributeDeviceOverlap, ///< Cuda only. Device can concurrently copy memory and execute a kernel.
|
||||
+ hipDeviceAttributeDeviceOverlap, ///< Cuda only. Device can concurrently copy memory and execute a kernel.
|
||||
///< Deprecated. Use instead asyncEngineCount.
|
||||
hipDeviceAttributeDirectManagedMemAccessFromHost, ///< Host can directly access managed memory on
|
||||
///< the device without migration
|
||||
@@ -420,6 +433,7 @@ typedef enum hipDeviceAttribute_t {
|
||||
///< hipStreamWaitValue64() , '0' otherwise.
|
||||
hipDeviceAttributeAmdSpecificEnd = 19999,
|
||||
hipDeviceAttributeVendorSpecificBegin = 20000,
|
||||
+ hipDeviceAttribute
|
||||
// Extended attributes for vendors
|
||||
} hipDeviceAttribute_t;
|
||||
|
||||
@@ -1160,6 +1174,7 @@ typedef const char* HIPAPI thipGetErrorString(hipError_t error);
|
||||
typedef hipError_t HIPAPI thipGetLastError(hipError_t error);
|
||||
typedef hipError_t HIPAPI thipInit(unsigned int Flags);
|
||||
typedef hipError_t HIPAPI thipDriverGetVersion(int* driverVersion);
|
||||
+typedef hipError_t HIPAPI thipRuntimeGetVersion(int* runtimeVersion);
|
||||
typedef hipError_t HIPAPI thipGetDevice(int* device);
|
||||
typedef hipError_t HIPAPI thipGetDeviceCount(int* count);
|
||||
typedef hipError_t HIPAPI thipGetDeviceProperties(hipDeviceProp_t* props, int deviceId);
|
||||
@@ -1310,6 +1325,7 @@ extern thipGetErrorString* hipGetErrorString;
|
||||
extern thipGetLastError* hipGetLastError;
|
||||
extern thipInit *hipInit;
|
||||
extern thipDriverGetVersion *hipDriverGetVersion;
|
||||
+extern thipRuntimeGetVersion *hipRuntimeGetVersion;
|
||||
extern thipGetDevice *hipGetDevice;
|
||||
extern thipGetDeviceCount *hipGetDeviceCount;
|
||||
extern thipGetDeviceProperties *hipGetDeviceProperties;
|
||||
diff --git a/extern/hipew/src/hipew.c b/extern/hipew/src/hipew.c
|
||||
index 4927f86b804..74b2ef111d6 100644
|
||||
--- a/extern/hipew/src/hipew.c
|
||||
+++ b/extern/hipew/src/hipew.c
|
||||
@@ -35,6 +35,7 @@ thipGetErrorString *hipGetErrorString;
|
||||
thipGetLastError *hipGetLastError;
|
||||
thipInit *hipInit;
|
||||
thipDriverGetVersion *hipDriverGetVersion;
|
||||
+thipRuntimeGetVersion *hipRuntimeGetVersion;
|
||||
thipGetDevice *hipGetDevice;
|
||||
thipGetDeviceCount *hipGetDeviceCount;
|
||||
thipGetDeviceProperties *hipGetDeviceProperties;
|
||||
@@ -285,6 +286,7 @@ static int hipewHipInit(void) {
|
||||
HIP_LIBRARY_FIND_CHECKED(hipGetLastError);
|
||||
HIP_LIBRARY_FIND_CHECKED(hipInit);
|
||||
HIP_LIBRARY_FIND_CHECKED(hipDriverGetVersion);
|
||||
+ HIP_LIBRARY_FIND_CHECKED(hipRuntimeGetVersion);
|
||||
HIP_LIBRARY_FIND_CHECKED(hipGetDevice);
|
||||
HIP_LIBRARY_FIND_CHECKED(hipGetDeviceCount);
|
||||
HIP_LIBRARY_FIND_CHECKED(hipGetDeviceProperties);
|
||||
@@ -410,7 +412,28 @@ static int hipewHipInit(void) {
|
||||
return result;
|
||||
}
|
||||
|
||||
+hipMemoryType get_hip_memory_type(hipMemoryType mem_type, int runtime_version) {
|
||||
+ /** Convert hipMemoryType for backwards compatibility with rocm5/6.
|
||||
+ * This can be removed when support for ROCm 5 is removed. */
|
||||
|
||||
+ /* If version is 5 we need to use the old enum vals (60000000 is start of ROCm 6) */
|
||||
+ if (runtime_version > 60000000) {
|
||||
+ return mem_type;
|
||||
+ }
|
||||
+
|
||||
+ switch (mem_type) {
|
||||
+ case hipMemoryTypeHost:
|
||||
+ return hipMemoryTypeHost_v5;
|
||||
+ case hipMemoryTypeDevice:
|
||||
+ return hipMemoryTypeDevice_v5;
|
||||
+ case hipMemoryTypeArray:
|
||||
+ return hipMemoryTypeArray_v5;
|
||||
+ case hipMemoryTypeUnified:
|
||||
+ return hipMemoryTypeUnified_v5;
|
||||
+ default:
|
||||
+ return hipMemoryTypeUnregistered; /* This should not happen. */
|
||||
+ }
|
||||
+}
|
||||
|
||||
int hipewInit(hipuint32_t flags) {
|
||||
int result = HIPEW_SUCCESS;
|
||||
diff --git a/intern/cycles/device/hip/device_impl.cpp b/intern/cycles/device/hip/device_impl.cpp
|
||||
index 57d82b07631..9a3f6b95143 100644
|
||||
--- a/intern/cycles/device/hip/device_impl.cpp
|
||||
+++ b/intern/cycles/device/hip/device_impl.cpp
|
||||
@@ -116,6 +116,9 @@ HIPDevice::HIPDevice(const DeviceInfo &info, Stats &stats, Profiler &profiler)
|
||||
hipDeviceGetAttribute(&minor, hipDeviceAttributeComputeCapabilityMinor, hipDevId);
|
||||
hipDevArchitecture = major * 100 + minor * 10;
|
||||
|
||||
+ /* Get hip runtime Version needed for memory types. */
|
||||
+ hip_assert(hipRuntimeGetVersion(&hipRuntimeVersion));
|
||||
+
|
||||
/* Pop context set by hipCtxCreate. */
|
||||
hipCtxPopCurrent(NULL);
|
||||
}
|
||||
@@ -745,9 +748,9 @@ void HIPDevice::tex_alloc(device_texture &mem)
|
||||
|
||||
HIP_MEMCPY3D param;
|
||||
memset(¶m, 0, sizeof(HIP_MEMCPY3D));
|
||||
- param.dstMemoryType = hipMemoryTypeArray;
|
||||
+ param.dstMemoryType = get_memory_type(hipMemoryTypeArray);
|
||||
param.dstArray = array_3d;
|
||||
- param.srcMemoryType = hipMemoryTypeHost;
|
||||
+ param.srcMemoryType = get_memory_type(hipMemoryTypeHost);
|
||||
param.srcHost = mem.host_pointer;
|
||||
param.srcPitch = src_pitch;
|
||||
param.WidthInBytes = param.srcPitch;
|
||||
@@ -777,10 +780,10 @@ void HIPDevice::tex_alloc(device_texture &mem)
|
||||
|
||||
hip_Memcpy2D param;
|
||||
memset(¶m, 0, sizeof(param));
|
||||
- param.dstMemoryType = hipMemoryTypeDevice;
|
||||
+ param.dstMemoryType = get_memory_type(hipMemoryTypeDevice);
|
||||
param.dstDevice = mem.device_pointer;
|
||||
param.dstPitch = dst_pitch;
|
||||
- param.srcMemoryType = hipMemoryTypeHost;
|
||||
+ param.srcMemoryType = get_memory_type(hipMemoryTypeHost);
|
||||
param.srcHost = mem.host_pointer;
|
||||
param.srcPitch = src_pitch;
|
||||
param.WidthInBytes = param.srcPitch;
|
||||
@@ -958,6 +961,11 @@ int HIPDevice::get_device_default_attribute(hipDeviceAttribute_t attribute, int
|
||||
return value;
|
||||
}
|
||||
|
||||
+hipMemoryType HIPDevice::get_memory_type(hipMemoryType mem_type)
|
||||
+{
|
||||
+ return get_hip_memory_type(mem_type, hipRuntimeVersion);
|
||||
+}
|
||||
+
|
||||
CCL_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
diff --git a/intern/cycles/device/hip/device_impl.h b/intern/cycles/device/hip/device_impl.h
|
||||
index bded023bd4a..fdbec2e3dbf 100644
|
||||
--- a/intern/cycles/device/hip/device_impl.h
|
||||
+++ b/intern/cycles/device/hip/device_impl.h
|
||||
@@ -32,6 +32,7 @@ class HIPDevice : public GPUDevice {
|
||||
int pitch_alignment;
|
||||
int hipDevId;
|
||||
int hipDevArchitecture;
|
||||
+ int hipRuntimeVersion;
|
||||
bool first_error;
|
||||
|
||||
HIPDeviceKernels kernels;
|
||||
@@ -102,6 +103,7 @@ class HIPDevice : public GPUDevice {
|
||||
protected:
|
||||
bool get_device_attribute(hipDeviceAttribute_t attribute, int *value);
|
||||
int get_device_default_attribute(hipDeviceAttribute_t attribute, int default_value);
|
||||
+ hipMemoryType get_memory_type(hipMemoryType mem_type);
|
||||
};
|
||||
|
||||
CCL_NAMESPACE_END
|
Loading…
Reference in a new issue