root/drivers/gpu/drm/panfrost/panfrost_features.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. panfrost_has_hw_feature

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /* (C) COPYRIGHT 2014-2018 ARM Limited. All rights reserved. */
   3 /* Copyright 2019 Linaro, Ltd., Rob Herring <robh@kernel.org> */
   4 #ifndef __PANFROST_FEATURES_H__
   5 #define __PANFROST_FEATURES_H__
   6 
   7 #include <linux/bitops.h>
   8 
   9 #include "panfrost_device.h"
  10 
  11 enum panfrost_hw_feature {
  12         HW_FEATURE_JOBCHAIN_DISAMBIGUATION,
  13         HW_FEATURE_PWRON_DURING_PWROFF_TRANS,
  14         HW_FEATURE_XAFFINITY,
  15         HW_FEATURE_OUT_OF_ORDER_EXEC,
  16         HW_FEATURE_MRT,
  17         HW_FEATURE_BRNDOUT_CC,
  18         HW_FEATURE_INTERPIPE_REG_ALIASING,
  19         HW_FEATURE_LD_ST_TILEBUFFER,
  20         HW_FEATURE_MSAA_16X,
  21         HW_FEATURE_32_BIT_UNIFORM_ADDRESS,
  22         HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL,
  23         HW_FEATURE_OPTIMIZED_COVERAGE_MASK,
  24         HW_FEATURE_T7XX_PAIRING_RULES,
  25         HW_FEATURE_LD_ST_LEA_TEX,
  26         HW_FEATURE_LINEAR_FILTER_FLOAT,
  27         HW_FEATURE_WORKGROUP_ROUND_MULTIPLE_OF_4,
  28         HW_FEATURE_IMAGES_IN_FRAGMENT_SHADERS,
  29         HW_FEATURE_TEST4_DATUM_MODE,
  30         HW_FEATURE_NEXT_INSTRUCTION_TYPE,
  31         HW_FEATURE_BRNDOUT_KILL,
  32         HW_FEATURE_WARPING,
  33         HW_FEATURE_V4,
  34         HW_FEATURE_FLUSH_REDUCTION,
  35         HW_FEATURE_PROTECTED_MODE,
  36         HW_FEATURE_COHERENCY_REG,
  37         HW_FEATURE_PROTECTED_DEBUG_MODE,
  38         HW_FEATURE_AARCH64_MMU,
  39         HW_FEATURE_TLS_HASHING,
  40         HW_FEATURE_THREAD_GROUP_SPLIT,
  41         HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG,
  42 };
  43 
  44 #define hw_features_t600 (\
  45         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
  46         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
  47         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
  48         BIT_ULL(HW_FEATURE_V4))
  49 
  50 #define hw_features_t620 (\
  51         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
  52         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
  53         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
  54         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
  55         BIT_ULL(HW_FEATURE_V4))
  56 
  57 #define hw_features_t720 (\
  58         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
  59         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
  60         BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
  61         BIT_ULL(HW_FEATURE_OPTIMIZED_COVERAGE_MASK) | \
  62         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
  63         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
  64         BIT_ULL(HW_FEATURE_WORKGROUP_ROUND_MULTIPLE_OF_4) | \
  65         BIT_ULL(HW_FEATURE_WARPING) | \
  66         BIT_ULL(HW_FEATURE_V4))
  67 
  68 
  69 #define hw_features_t760 (\
  70         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
  71         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
  72         BIT_ULL(HW_FEATURE_XAFFINITY) | \
  73         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
  74         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
  75         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
  76         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
  77         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
  78         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
  79         BIT_ULL(HW_FEATURE_MRT) | \
  80         BIT_ULL(HW_FEATURE_MSAA_16X) | \
  81         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
  82         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
  83         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
  84         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
  85 
  86 // T860
  87 #define hw_features_t860 (\
  88         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
  89         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
  90         BIT_ULL(HW_FEATURE_XAFFINITY) | \
  91         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
  92         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
  93         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
  94         BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
  95         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
  96         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
  97         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
  98         BIT_ULL(HW_FEATURE_MRT) | \
  99         BIT_ULL(HW_FEATURE_MSAA_16X) | \
 100         BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
 101         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 102         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 103         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 104         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
 105 
 106 #define hw_features_t880 hw_features_t860
 107 
 108 #define hw_features_t830 (\
 109         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 110         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 111         BIT_ULL(HW_FEATURE_XAFFINITY) | \
 112         BIT_ULL(HW_FEATURE_WARPING) | \
 113         BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
 114         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 115         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 116         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 117         BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
 118         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 119         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 120         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 121         BIT_ULL(HW_FEATURE_MRT) | \
 122         BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
 123         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 124         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 125         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 126         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
 127 
 128 #define hw_features_t820 (\
 129         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 130         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 131         BIT_ULL(HW_FEATURE_XAFFINITY) | \
 132         BIT_ULL(HW_FEATURE_WARPING) | \
 133         BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
 134         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 135         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 136         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 137         BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
 138         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 139         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 140         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 141         BIT_ULL(HW_FEATURE_MRT) | \
 142         BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
 143         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 144         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 145         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 146         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
 147 
 148 #define hw_features_g71 (\
 149         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 150         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 151         BIT_ULL(HW_FEATURE_XAFFINITY) | \
 152         BIT_ULL(HW_FEATURE_WARPING) | \
 153         BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
 154         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 155         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 156         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 157         BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
 158         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 159         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 160         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 161         BIT_ULL(HW_FEATURE_MRT) | \
 162         BIT_ULL(HW_FEATURE_MSAA_16X) | \
 163         BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
 164         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 165         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 166         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 167         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
 168         BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
 169         BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
 170         BIT_ULL(HW_FEATURE_COHERENCY_REG))
 171 
 172 #define hw_features_g72 (\
 173         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 174         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 175         BIT_ULL(HW_FEATURE_XAFFINITY) | \
 176         BIT_ULL(HW_FEATURE_WARPING) | \
 177         BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
 178         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 179         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 180         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 181         BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
 182         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 183         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 184         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 185         BIT_ULL(HW_FEATURE_MRT) | \
 186         BIT_ULL(HW_FEATURE_MSAA_16X) | \
 187         BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
 188         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 189         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 190         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 191         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
 192         BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
 193         BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
 194         BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
 195         BIT_ULL(HW_FEATURE_COHERENCY_REG))
 196 
 197 #define hw_features_g51 (\
 198         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 199         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 200         BIT_ULL(HW_FEATURE_XAFFINITY) | \
 201         BIT_ULL(HW_FEATURE_WARPING) | \
 202         BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
 203         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 204         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 205         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 206         BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
 207         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 208         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 209         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 210         BIT_ULL(HW_FEATURE_MRT) | \
 211         BIT_ULL(HW_FEATURE_MSAA_16X) | \
 212         BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
 213         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 214         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 215         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 216         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
 217         BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
 218         BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
 219         BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
 220         BIT_ULL(HW_FEATURE_COHERENCY_REG))
 221 
 222 #define hw_features_g52 (\
 223         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 224         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 225         BIT_ULL(HW_FEATURE_XAFFINITY) | \
 226         BIT_ULL(HW_FEATURE_WARPING) | \
 227         BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
 228         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 229         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 230         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 231         BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
 232         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 233         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 234         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 235         BIT_ULL(HW_FEATURE_MRT) | \
 236         BIT_ULL(HW_FEATURE_MSAA_16X) | \
 237         BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
 238         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 239         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 240         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 241         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
 242         BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
 243         BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
 244         BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
 245         BIT_ULL(HW_FEATURE_COHERENCY_REG))
 246 
 247 #define hw_features_g76 (\
 248         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 249         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 250         BIT_ULL(HW_FEATURE_XAFFINITY) | \
 251         BIT_ULL(HW_FEATURE_WARPING) | \
 252         BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
 253         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 254         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 255         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 256         BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
 257         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 258         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 259         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 260         BIT_ULL(HW_FEATURE_MRT) | \
 261         BIT_ULL(HW_FEATURE_MSAA_16X) | \
 262         BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
 263         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 264         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 265         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 266         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
 267         BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
 268         BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
 269         BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
 270         BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
 271         BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
 272         BIT_ULL(HW_FEATURE_TLS_HASHING) | \
 273         BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG))
 274 
 275 #define hw_features_g31 (\
 276         BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 277         BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 278         BIT_ULL(HW_FEATURE_XAFFINITY) | \
 279         BIT_ULL(HW_FEATURE_WARPING) | \
 280         BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
 281         BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 282         BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 283         BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 284         BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
 285         BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 286         BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 287         BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 288         BIT_ULL(HW_FEATURE_MRT) | \
 289         BIT_ULL(HW_FEATURE_MSAA_16X) | \
 290         BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
 291         BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 292         BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 293         BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 294         BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
 295         BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
 296         BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
 297         BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
 298         BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
 299         BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
 300         BIT_ULL(HW_FEATURE_TLS_HASHING) | \
 301         BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG))
 302 
 303 static inline bool panfrost_has_hw_feature(struct panfrost_device *pfdev,
 304                                            enum panfrost_hw_feature feat)
 305 {
 306         return test_bit(feat, pfdev->features.hw_features);
 307 }
 308 
 309 #endif

/* [<][>][^][v][top][bottom][index][help] */