Cycles: Disable HIP-RT and MNEE on RDNA1 generation GPUs
These have bugs in with the latest HIP-RT and HIP SDK, so just disable them as we do not expect a fix in time, and rolling back would re-introduce other bugs. As RDNA1 does not have hardware raytracing, it is also less important to use HIP-RT. Note that only RDNA2+ is officially supported by HIP, so these GPUs working at all is somewhat lucky. Fix #134979 Fix #134978 Fix #134975 Pull Request: https://projects.blender.org/blender/blender/pulls/135179
This commit is contained in:
@@ -1584,7 +1584,7 @@ class CyclesPreferences(bpy.types.AddonPreferences):
|
||||
|
||||
use_hiprt: BoolProperty(
|
||||
name="HIP RT (Experimental)",
|
||||
description="HIP RT enables AMD hardware ray tracing on RDNA2 and above, with shader fallback on older cards. "
|
||||
description="HIP RT enables AMD hardware ray tracing on RDNA2 and above. "
|
||||
"This feature is experimental and some scenes may render incorrectly",
|
||||
default=False,
|
||||
)
|
||||
|
||||
@@ -168,8 +168,11 @@ void device_hip_info(vector<DeviceInfo> &devices)
|
||||
info.description = string(name);
|
||||
info.num = num;
|
||||
|
||||
const bool is_rdna2_or_newer = hipIsRDNA2OrNewer(num);
|
||||
|
||||
/* Disable on RDNA1 due to apparent bug in HIP SDK 6.3. */
|
||||
info.has_mnee = is_rdna2_or_newer;
|
||||
info.has_nanovdb = true;
|
||||
info.has_mnee = true;
|
||||
|
||||
info.has_gpu_queue = true;
|
||||
/* Check if the device has P2P access to any other device in the system. */
|
||||
@@ -181,7 +184,8 @@ void device_hip_info(vector<DeviceInfo> &devices)
|
||||
}
|
||||
}
|
||||
|
||||
info.use_hardware_raytracing = has_hardware_raytracing;
|
||||
/* Disable on RDNA1 due to bug rendering curves in HIP-RT 2.5 or HIP SDK 6.3. */
|
||||
info.use_hardware_raytracing = has_hardware_raytracing && is_rdna2_or_newer;
|
||||
|
||||
int pci_location[3] = {0, 0, 0};
|
||||
hipDeviceGetAttribute(&pci_location[0], hipDeviceAttributePciDomainID, num);
|
||||
|
||||
@@ -68,6 +68,15 @@ static inline bool hipSupportsDevice(const int hipDevId)
|
||||
return (major >= 10);
|
||||
}
|
||||
|
||||
static inline bool hipIsRDNA2OrNewer(const int hipDevId)
|
||||
{
|
||||
int major, minor;
|
||||
hipDeviceGetAttribute(&major, hipDeviceAttributeComputeCapabilityMajor, hipDevId);
|
||||
hipDeviceGetAttribute(&minor, hipDeviceAttributeComputeCapabilityMinor, hipDevId);
|
||||
|
||||
return (major > 10 || (major == 10 && minor >= 3));
|
||||
}
|
||||
|
||||
static inline bool hipSupportsDeviceOIDN(const int hipDevId)
|
||||
{
|
||||
/* Matches HIPDevice::getArch in HIP. */
|
||||
|
||||
Reference in New Issue
Block a user