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>
This commit is contained in:
Nanley Chery
2022-11-30 14:47:47 -08:00
committed by Marge Bot
parent d307655e52
commit 822687f4c0
2 changed files with 10 additions and 1 deletions
+5 -1
View File
@@ -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 = {
+5
View File
@@ -134,6 +134,11 @@ struct intel_device_info
bool supports_simd16_3src;
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.