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>
This commit is contained in:
Marek Olšák 2022-02-24 10:25:23 -05:00 committed by Marge Bot
parent 48046d5bd8
commit f8cf5ea982
8 changed files with 42 additions and 1 deletions

View File

@ -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

View File

@ -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:

View File

@ -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;

View File

@ -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:

View File

@ -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");
}

View File

@ -114,6 +114,7 @@ enum radeon_family
CHIP_DIMGREY_CAVEFISH,
CHIP_BEIGE_GOBY,
CHIP_YELLOW_CARP,
CHIP_GFX1036,
CHIP_LAST,
};

View File

@ -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 "";

View File

@ -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;