On 09/01/2022 17:09, Alyssa Rosenzweig wrote: > Early versions of the legacy kernel driver included comprehensive > feature lists for every GPU, even though most of the enumerated features > only matter to userspace. For example, HW_FEATURE_INTERPIPE_REG_ALIASING > was a feature bit indicating that a GPU had "interpipe register > aliasing": arithmetic, load/store, and texture instruction all use > common general-purpose registers. GPUs without this feature bit have > dedicated load/store and texture "registers". Whether a GPU has this > feature or not is irrelevant to the kernel; it only matters in the > userspace compiler's register allocator. It's silly to enumerate it in > kernel space, and the information is understandably unused. To > underscore the point, this feature only makes sense in the context of > the Midgard instruction set. Bifrost never had dedicated load/store or > texture registers, so the feature bit was vacuously set for all Bifrost > hardware, even though this conveys no useful information. > > To clean up the feature list, delete feature bits which could not > possibly matter to the kernel, leaving only those which do affect the > register-level operation of the chip. > > Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@xxxxxxxxxxxxx> Reviewed-by: Steven Price <steven.price@xxxxxxx> (although it's a good thing kbase never did this cleanup - it's a useful source of public information ;) ) Steve > --- > drivers/gpu/drm/panfrost/panfrost_features.h | 172 ------------------- > 1 file changed, 172 deletions(-) > > diff --git a/drivers/gpu/drm/panfrost/panfrost_features.h b/drivers/gpu/drm/panfrost/panfrost_features.h > index 5056777c7744..f557fad5d5ff 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_features.h > +++ b/drivers/gpu/drm/panfrost/panfrost_features.h > @@ -12,24 +12,6 @@ enum panfrost_hw_feature { > HW_FEATURE_JOBCHAIN_DISAMBIGUATION, > HW_FEATURE_PWRON_DURING_PWROFF_TRANS, > HW_FEATURE_XAFFINITY, > - HW_FEATURE_OUT_OF_ORDER_EXEC, > - HW_FEATURE_MRT, > - HW_FEATURE_BRNDOUT_CC, > - HW_FEATURE_INTERPIPE_REG_ALIASING, > - HW_FEATURE_LD_ST_TILEBUFFER, > - HW_FEATURE_MSAA_16X, > - HW_FEATURE_32_BIT_UNIFORM_ADDRESS, > - HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL, > - HW_FEATURE_OPTIMIZED_COVERAGE_MASK, > - HW_FEATURE_T7XX_PAIRING_RULES, > - HW_FEATURE_LD_ST_LEA_TEX, > - HW_FEATURE_LINEAR_FILTER_FLOAT, > - HW_FEATURE_WORKGROUP_ROUND_MULTIPLE_OF_4, > - HW_FEATURE_IMAGES_IN_FRAGMENT_SHADERS, > - HW_FEATURE_TEST4_DATUM_MODE, > - HW_FEATURE_NEXT_INSTRUCTION_TYPE, > - HW_FEATURE_BRNDOUT_KILL, > - HW_FEATURE_WARPING, > HW_FEATURE_V4, > HW_FEATURE_FLUSH_REDUCTION, > HW_FEATURE_PROTECTED_MODE, > @@ -42,27 +24,15 @@ enum panfrost_hw_feature { > }; > > #define hw_features_t600 (\ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ > BIT_ULL(HW_FEATURE_V4)) > > #define hw_features_t620 (\ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ > BIT_ULL(HW_FEATURE_V4)) > > #define hw_features_t720 (\ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ > - BIT_ULL(HW_FEATURE_OPTIMIZED_COVERAGE_MASK) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ > - BIT_ULL(HW_FEATURE_WORKGROUP_ROUND_MULTIPLE_OF_4) | \ > - BIT_ULL(HW_FEATURE_WARPING) | \ > BIT_ULL(HW_FEATURE_V4)) > > > @@ -70,17 +40,6 @@ enum panfrost_hw_feature { > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_MSAA_16X) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT)) > > // T860 > @@ -88,19 +47,6 @@ enum panfrost_hw_feature { > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_MSAA_16X) | \ > - BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT)) > > #define hw_features_t880 hw_features_t860 > @@ -109,61 +55,18 @@ enum panfrost_hw_feature { > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_WARPING) | \ > - BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT)) > > #define hw_features_t820 (\ > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_WARPING) | \ > - BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT)) > > #define hw_features_g71 (\ > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_WARPING) | \ > - BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_MSAA_16X) | \ > - BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ > BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ > BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ > @@ -173,21 +76,6 @@ enum panfrost_hw_feature { > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_WARPING) | \ > - BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_MSAA_16X) | \ > - BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ > BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ > BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ > @@ -198,21 +86,6 @@ enum panfrost_hw_feature { > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_WARPING) | \ > - BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_MSAA_16X) | \ > - BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ > BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ > BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ > @@ -223,21 +96,6 @@ enum panfrost_hw_feature { > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_WARPING) | \ > - BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_MSAA_16X) | \ > - BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ > BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ > BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ > @@ -248,21 +106,6 @@ enum panfrost_hw_feature { > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_WARPING) | \ > - BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_MSAA_16X) | \ > - BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ > BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ > BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ > @@ -276,21 +119,6 @@ enum panfrost_hw_feature { > BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ > BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ > BIT_ULL(HW_FEATURE_XAFFINITY) | \ > - BIT_ULL(HW_FEATURE_WARPING) | \ > - BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ > - BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ > - BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ > - BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ > - BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ > - BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ > - BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ > - BIT_ULL(HW_FEATURE_MRT) | \ > - BIT_ULL(HW_FEATURE_MSAA_16X) | \ > - BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ > - BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ > - BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ > - BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ > BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ > BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ > BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ >