summaryrefslogtreecommitdiff
path: root/src/intel
diff options
context:
space:
mode:
authorNanley Chery <nanley.g.chery@intel.com>2022-11-30 14:47:47 -0800
committerMarge Bot <emma+marge@anholt.net>2022-12-06 00:49:17 +0000
commit822687f4c06fd178a64295d45780bdc962b2939c (patch)
treef61b26894e514699d632b69fd75197472d7e5e96 /src/intel
parentd307655e528389d0918546b452c2961a85a9d9ad (diff)
intel/dev: Add a has_illegal_ccs_values flag
Whether or not CCS can be used without initialization depends on the platform: - On gfx7-8, each CCS element is 1-bit and encodes "fast-cleared" or "pass-through". So, those platforms have no illegal values. - On gfx9-11, each CCS element is 2-bits and some bit combinations are invalid. - On gfx12+, each CCS element is 4-bits but they have no truly illegal values. Unused encodings are interpreted as "pass-through". Refer to the "MCS/CCS Buffers for Render Target(s)" sections of the PRMs for more info. Reviewed-by: Ivan Briano <ivan.briano@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20118>
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/dev/intel_device_info.c6
-rw-r--r--src/intel/dev/intel_device_info.h5
2 files changed, 10 insertions, 1 deletions
diff --git a/src/intel/dev/intel_device_info.c b/src/intel/dev/intel_device_info.c
index 5d32853be91..2dc93006bbd 100644
--- a/src/intel/dev/intel_device_info.c
+++ b/src/intel/dev/intel_device_info.c
@@ -563,6 +563,7 @@ static const struct intel_device_info intel_device_info_chv = {
.gt = 1, \
.has_llc = false, \
.has_sample_with_hiz = true, \
+ .has_illegal_ccs_values = true, \
.num_slices = 1, \
.num_thread_per_eu = 6, \
.max_vs_threads = 112, \
@@ -614,7 +615,8 @@ static const struct intel_device_info intel_device_info_chv = {
#define GFX9_FEATURES \
GFX8_FEATURES, \
GFX9_HW_INFO, \
- .has_sample_with_hiz = true
+ .has_sample_with_hiz = true, \
+ .has_illegal_ccs_values = true
static const struct intel_device_info intel_device_info_skl_gt1 = {
GFX9_FEATURES, .gt = 1,
@@ -837,6 +839,7 @@ static const struct intel_device_info intel_device_info_cfl_gt3 = {
.has_64bit_int = false, \
.has_integer_dword_mul = false, \
.has_sample_with_hiz = false, \
+ .has_illegal_ccs_values = true, \
.gt = _gt, .num_slices = _slices, .l3_banks = _l3, \
.num_subslices = _subslices, \
.max_eus_per_subslice = 8
@@ -890,6 +893,7 @@ static const struct intel_device_info intel_device_info_icl_gt0_5 = {
GFX11_URB_MIN_MAX_ENTRIES, \
}, \
.disable_ccs_repack = true, \
+ .has_illegal_ccs_values = true, \
.simulator_id = 28
static const struct intel_device_info intel_device_info_ehl_4x8 = {
diff --git a/src/intel/dev/intel_device_info.h b/src/intel/dev/intel_device_info.h
index 48ac149ab2c..ded43553cc7 100644
--- a/src/intel/dev/intel_device_info.h
+++ b/src/intel/dev/intel_device_info.h
@@ -135,6 +135,11 @@ struct intel_device_info
bool disable_ccs_repack;
/**
+ * True if CCS needs to be initialized before use.
+ */
+ bool has_illegal_ccs_values;
+
+ /**
* True if CCS uses a flat virtual address translation to a memory
* carve-out, rather than aux map translations, or additional surfaces.
*/