Mesa (main): amd: add support for gfx1036 and gfx1037 chips

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Mar 1 17:25:14 UTC 2022


Module: Mesa
Branch: main
Commit: f8cf5ea982adc4e1d5b6a531f83eea938583c830
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f8cf5ea982adc4e1d5b6a531f83eea938583c830

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Thu Feb 24 10:25:23 2022 -0500

amd: add support for gfx1036 and gfx1037 chips

Both are identified as GFX1036 for simplicity.

Reviewed-by: Yifan Zhang <yifan1.zhang at amd.com>
Tested-by: Yifan Zhang <yifan1.zhang at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15155>

---

 src/amd/addrlib/src/amdgpu_asic_addr.h      | 10 ++++++++++
 src/amd/addrlib/src/core/addrlib.cpp        |  2 ++
 src/amd/addrlib/src/gfx10/gfx10addrlib.cpp  | 19 ++++++++++++++++++-
 src/amd/common/ac_gpu_info.c                |  7 +++++++
 src/amd/common/amd_family.c                 |  2 ++
 src/amd/common/amd_family.h                 |  1 +
 src/amd/llvm/ac_llvm_util.c                 |  1 +
 src/gallium/drivers/radeon/radeon_vcn_dec.c |  1 +
 8 files changed, 42 insertions(+), 1 deletion(-)

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;



More information about the mesa-commit mailing list