[PATCH i-g-t 10/37] lib/rendercopy: Extract {dg2, lnl}_compression_format()
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Tue Aug 27 15:24:40 UTC 2024
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
On 3.7.2024 2.27, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Extract the code to determine the SURFACE_STATE compression
> format for dg2/lnl+ into helper. We'll need more formats here
> soon.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> lib/rendercopy_gen9.c | 41 ++++++++++++++++++++++++++---------------
> 1 file changed, 26 insertions(+), 15 deletions(-)
>
> diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
> index 11f456a70d2f..eafdf50581d3 100644
> --- a/lib/rendercopy_gen9.c
> +++ b/lib/rendercopy_gen9.c
> @@ -146,6 +146,28 @@ static const uint32_t xe2_render_copy[][4] = {
> { 0x8010c031, 0x00000004, 0x58000c24, 0x00c40000 },
> };
>
> +static uint32_t lnl_compression_format(const struct intel_buf *buf)
> +{
> + switch (buf->bpp) {
> + case 32:
> + return 0x2; /* CMF_R8_G8_B8_A8 */
> + default:
> + igt_assert(0);
> + return 0;
> + }
> +}
> +
> +static uint32_t dg2_compression_format(const struct intel_buf *buf)
> +{
> + switch (buf->bpp) {
> + case 32:
> + return 0x8;
> + default:
> + igt_assert(0);
> + return 0;
> + }
> +}
> +
> /* Mostly copy+paste from gen6, except height, width, pitch moved */
> static uint32_t
> gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
> @@ -272,21 +294,10 @@ gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
> ss->ss7.dg2.disable_support_for_multi_gpu_partial_writes = 1;
> ss->ss7.dg2.disable_support_for_multi_gpu_atomics = 1;
>
> - if (AT_LEAST_GEN(ibb->devid, 20)) {
> - /*
> - * For Xe2+ R8G8B8A8 best compression ratio is
> - * achieved with compression format = '2'
> - */
> - ss->ss12.lnl.compression_format = 2;
> - } else {
> - /*
> - * For now here is coming only 32bpp rgb format
> - * which is marked below as B8G8R8X8_UNORM = '8'
> - * If here ever arrive other formats below need to be
> - * fixed to take that into account.
> - */
> - ss->ss12.dg2.compression_format = 8;
> - }
> + if (AT_LEAST_GEN(ibb->devid, 20))
> + ss->ss12.lnl.compression_format = lnl_compression_format(buf);
> + else
> + ss->ss12.dg2.compression_format = dg2_compression_format(buf);
> }
> }
>
More information about the igt-dev
mailing list