v3d: handle new TEXTURE_SHADER_STATE v71 YCbCr fields
authorAlejandro Piñeiro <apinheiro@igalia.com>
Fri, 22 Oct 2021 08:54:24 +0000 (10:54 +0200)
committerMarge Bot <emma+marge@anholt.net>
Fri, 13 Oct 2023 22:37:43 +0000 (22:37 +0000)
commit9be4d4def6f801e08c1007ae9d3ea95c972d8488
treed6fdd5a9049bfb9965ea44b327318a6f6158bc14
parent80923c889a030c0afa37e2f6cd718793ce56cac2
v3d: handle new TEXTURE_SHADER_STATE v71 YCbCr fields

There are some new fields for YCbCr with pointers for the various
planes in multi-planar formats. These need to match the base address
pointer in the texture state, or the hardware will assume this is a
multi-planar texture.

Notice we don't use an address type for these fields in the XML
description. This is because the addresses are 64-bit aligned (even
though the PRM doesn't say it) which means the 6 LSB bits are
implicitly 0, but the fields are encoded before the 6th bit of their
starting byte, so we can't use the usual trick we do with address
types where the first 6 bits in the byte are implicitly overwritten by
other fields and we have to encode this manually as a uint field. This
would mean that if we had an actual BO we would also need to add it
manually to the job's list, but since we don't have one, we don't have
to do anything about it.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25450>
src/gallium/drivers/v3d/v3dx_state.c