summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2022-02-24 10:25:23 -0500
committerMarge Bot <emma+marge@anholt.net>2022-03-01 17:03:00 +0000
commitf8cf5ea982adc4e1d5b6a531f83eea938583c830 (patch)
tree0a89d42ea9a8beb1535cabf0ff91321a3b81fd93
parent48046d5bd83e51bb203c70fc0c51a5b8177395bf (diff)
amd: add support for gfx1036 and gfx1037 chips
Both are identified as GFX1036 for simplicity. Reviewed-by: Yifan Zhang <yifan1.zhang@amd.com> Tested-by: Yifan Zhang <yifan1.zhang@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15155>
-rw-r--r--src/amd/addrlib/src/amdgpu_asic_addr.h10
-rw-r--r--src/amd/addrlib/src/core/addrlib.cpp2
-rw-r--r--src/amd/addrlib/src/gfx10/gfx10addrlib.cpp19
-rw-r--r--src/amd/common/ac_gpu_info.c7
-rw-r--r--src/amd/common/amd_family.c2
-rw-r--r--src/amd/common/amd_family.h1
-rw-r--r--src/amd/llvm/ac_llvm_util.c1
-rwxr-xr-xsrc/gallium/drivers/radeon/radeon_vcn_dec.c1
8 files changed, 42 insertions, 1 deletions
diff --git a/src/amd/addrlib/src/amdgpu_asic_addr.h b/src/amd/addrlib/src/amdgpu_asic_addr.h
index 1133fd02f45..a17201d7157 100644
--- a/src/amd/addrlib/src/amdgpu_asic_addr.h
+++ b/src/amd/addrlib/src/amdgpu_asic_addr.h
@@ -47,6 +47,8 @@
#define FAMILY_NV 0x8F
#define FAMILY_VGH 0x90
#define FAMILY_YC 0x92
+#define FAMILY_GC_10_3_6 0x95
+#define FAMILY_GC_10_3_7 0x97
// AMDGPU_FAMILY_IS(familyId, familyName)
#define FAMILY_IS(f, fn) (f == FAMILY_##fn)
@@ -111,6 +113,10 @@
#define AMDGPU_YELLOW_CARP_RANGE 0x01, 0xFF
+#define AMDGPU_GFX1036_RANGE 0x01, 0xFF
+
+#define AMDGPU_GFX1037_RANGE 0x01, 0xFF
+
#define AMDGPU_EXPAND_FIX(x) x
#define AMDGPU_RANGE_HELPER(val, min, max) ((val >= min) && (val < max))
#define AMDGPU_IN_RANGE(val, ...) AMDGPU_EXPAND_FIX(AMDGPU_RANGE_HELPER(val, __VA_ARGS__))
@@ -168,4 +174,8 @@
#define ASICREV_IS_YELLOW_CARP(r) ASICREV_IS(r, YELLOW_CARP)
+#define ASICREV_IS_GFX1036(r) ASICREV_IS(r, GFX1036)
+
+#define ASICREV_IS_GFX1037(r) ASICREV_IS(r, GFX1037)
+
#endif // _AMDGPU_ASIC_ADDR_H
diff --git a/src/amd/addrlib/src/core/addrlib.cpp b/src/amd/addrlib/src/core/addrlib.cpp
index 38ede59ec8b..6266426e218 100644
--- a/src/amd/addrlib/src/core/addrlib.cpp
+++ b/src/amd/addrlib/src/core/addrlib.cpp
@@ -230,6 +230,8 @@ ADDR_E_RETURNCODE Lib::Create(
case FAMILY_NV:
case FAMILY_VGH:
case FAMILY_YC:
+ case FAMILY_GC_10_3_6:
+ case FAMILY_GC_10_3_7:
pLib = Gfx10HwlInit(&client);
break;
default:
diff --git a/src/amd/addrlib/src/gfx10/gfx10addrlib.cpp b/src/amd/addrlib/src/gfx10/gfx10addrlib.cpp
index 81675288bdb..a4b48f466cd 100644
--- a/src/amd/addrlib/src/gfx10/gfx10addrlib.cpp
+++ b/src/amd/addrlib/src/gfx10/gfx10addrlib.cpp
@@ -1087,7 +1087,24 @@ ChipFamily Gfx10Lib::HwlConvertChipFamily(
}
break;
-
+ case FAMILY_GC_10_3_6:
+ if (ASICREV_IS_GFX1036(chipRevision))
+ {
+ m_settings.supportRbPlus = 1;
+ m_settings.dccUnsup3DSwDis = 0;
+ }
+ break;
+ case FAMILY_GC_10_3_7:
+ if (ASICREV_IS_GFX1037(chipRevision))
+ {
+ m_settings.supportRbPlus = 1;
+ m_settings.dccUnsup3DSwDis = 0;
+ }
+ else
+ {
+ ADDR_ASSERT(!"Unknown chip revision");
+ }
+ break;
default:
ADDR_ASSERT(!"Unknown chip family");
break;
diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c
index cf1e579ef50..5f5a39b4a1b 100644
--- a/src/amd/common/ac_gpu_info.c
+++ b/src/amd/common/ac_gpu_info.c
@@ -764,6 +764,12 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info,
case FAMILY_YC:
identify_chip(YELLOW_CARP);
break;
+ case FAMILY_GC_10_3_6:
+ identify_chip(GFX1036);
+ break;
+ case FAMILY_GC_10_3_7:
+ identify_chip2(GFX1037, GFX1036);
+ break;
}
if (!info->name) {
@@ -1194,6 +1200,7 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info,
break;
case CHIP_VANGOGH:
case CHIP_YELLOW_CARP:
+ case CHIP_GFX1036:
pc_lines = 256;
break;
default:
diff --git a/src/amd/common/amd_family.c b/src/amd/common/amd_family.c
index 804f2f0c51d..e73471f5a43 100644
--- a/src/amd/common/amd_family.c
+++ b/src/amd/common/amd_family.c
@@ -100,6 +100,8 @@ const char *ac_get_family_name(enum radeon_family family)
return "BEIGE_GOBY";
case CHIP_YELLOW_CARP:
return "YELLOW_CARP";
+ case CHIP_GFX1036:
+ return "GFX1036";
default:
unreachable("Unknown GPU family");
}
diff --git a/src/amd/common/amd_family.h b/src/amd/common/amd_family.h
index 1165c64d853..f8aa2b0539c 100644
--- a/src/amd/common/amd_family.h
+++ b/src/amd/common/amd_family.h
@@ -114,6 +114,7 @@ enum radeon_family
CHIP_DIMGREY_CAVEFISH,
CHIP_BEIGE_GOBY,
CHIP_YELLOW_CARP,
+ CHIP_GFX1036,
CHIP_LAST,
};
diff --git a/src/amd/llvm/ac_llvm_util.c b/src/amd/llvm/ac_llvm_util.c
index 575b6e45567..781562eedc1 100644
--- a/src/amd/llvm/ac_llvm_util.c
+++ b/src/amd/llvm/ac_llvm_util.c
@@ -179,6 +179,7 @@ const char *ac_get_llvm_processor_name(enum radeon_family family)
case CHIP_BEIGE_GOBY:
case CHIP_VANGOGH:
case CHIP_YELLOW_CARP:
+ case CHIP_GFX1036:
return "gfx1030";
default:
return "";
diff --git a/src/gallium/drivers/radeon/radeon_vcn_dec.c b/src/gallium/drivers/radeon/radeon_vcn_dec.c
index 1a5015f63cf..fb3b90dc220 100755
--- a/src/gallium/drivers/radeon/radeon_vcn_dec.c
+++ b/src/gallium/drivers/radeon/radeon_vcn_dec.c
@@ -2626,6 +2626,7 @@ struct pipe_video_codec *radeon_create_decoder(struct pipe_context *context,
case CHIP_BEIGE_GOBY:
case CHIP_VANGOGH:
case CHIP_YELLOW_CARP:
+ case CHIP_GFX1036:
dec->reg.data0 = RDECODE_VCN2_5_GPCOM_VCPU_DATA0;
dec->reg.data1 = RDECODE_VCN2_5_GPCOM_VCPU_DATA1;
dec->reg.cmd = RDECODE_VCN2_5_GPCOM_VCPU_CMD;