[Mesa-dev] [PATCH v6 0/5] improved the support for ETC2 formats on Gen 7
Nanley Chery
nanleychery at gmail.com
Fri Feb 15 22:40:17 UTC 2019
On Fri, Feb 15, 2019 at 03:29:39PM +0200, Eleni Maria Stea wrote:
> Intel Gen7 GPUs don't support the ETC2 formats natively and in order to
> show the pixels properly we decompress them and create decompressed
> miptrees. The problem with that is that the functions that map the
> miptrees for reading (for example the GetCompressed* calls), and would
> be supposed to read compressed pixel values, would read decompressed
> values instead unless if we prevented this with assertions that make
> the user programs either crash or misfunction.
>
> These patches are an attempt to give a solution to this problem by using 2
> miptrees: the main to store the ETC values and the generic shadow
> (mt->shadow) to store the decompressed values. Each time that the main
> miptree is mapped for writing we set a flag that the shadow will need
> update and we check this flag before every draw call to update the
> shadow miptree. (We perform the check right before drawing to avoid
> missing changes from functions like the CopyImageSubData in the next
> frame). Then we map the shadow for sampling. This way, we can render the
> images using the decompressed pixels of the shadow but we return the
> compressed ones from the main when the texture is mapped for reading.
>
> Also, the OES_copy_image extension that couldn't work on Gen 7 due to the
> lack of the ETC support is now enabled back.
>
> Finally, the following glcts and piglit tests pass:
>
> On HSW (previously failing):
> ----------------------------
> KHR-GL46.direct_state_access.textures_compressed_subimage
>
> On HSW and IVB (previously skipped):
> -------------------------------------
> dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_alpha8_etc2_eac.*
> (6 tests)
> dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_etc2.*
> (6 tests)
> dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_punchthrough_alpha1_etc2.*
> (6 tests)
>
> On HSW, IVB, SNB (previously skipped):
> ---------------------------------------
> dEQP-GLES3.functional.texture.format.compressed.*
> (12 tests)
> dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8.*
> (36 tests)
> dEQP-GLES3.functional.texture.wrap.etc2_srgb8.*
> (36 tests)
> dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1.*
> (36 tests)
>
> piglit.spec.!opengl es 3_0.oes_compressed_etc2_texture-miptree_gles3
> (srgb8, srgb8-alpha, srgb8-punchthrough-alpha1)
> piglit.spec.arb_es3_compatibility.oes_compressed_etc2_texture-miptree
> (srgb8 compat, srgb8 core, srgb8-alpha8 compat, srgb8-alpha8 core,
> srgb8-punchthrough-alpha1 compat, srgb8-punchthrough-alpha1 core)
> (9 tests)
>
> Total tests passing: 148
>
> Eleni Maria Stea (4):
> i965: Faking the ETC2 compression on Gen < 8 GPUs using two miptrees.
> i965: Fixed the CopyImageSubData for ETC2 on Gen < 8
> i965: Enabled the OES_copy_image extension on Gen 7 GPUs
> i965: Removed the field etc_format from the struct intel_mipmap_tree
>
These patches are
Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>
I like how this series turned out. Thank you!
> Nanley Chery (1):
> i965: Rename intel_mipmap_tree::r8stencil_* -> ::shadow_*
>
> src/mesa/drivers/dri/i965/brw_draw.c | 5 +
> .../drivers/dri/i965/brw_wm_surface_state.c | 15 +-
> src/mesa/drivers/dri/i965/intel_extensions.c | 16 +-
> src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 170 ++++++++++--------
> src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 48 +++--
> 5 files changed, 149 insertions(+), 105 deletions(-)
>
> --
> 2.20.1
>
More information about the mesa-dev
mailing list