Starting with CannonLake, the sampler no longer decodes the surface state clear color when using an sRGB-formatted texture. This change requires that our driver perform this decode in software instead. We accounted for this change initially by disabling fast-clears when sRGB encode was enabled. This series implements the software decode and re-enables sRGB-encoded fast-clears.
The software decode is performed through a new getter for the miptree clear color. To keep the miptree API balanced and to discourage its users from accessing the clear color field directly, we add a getter for the depth clear value and change the existing setters so that the user no longer needs to know the current clear color to perform an efficient clear operation. Two piglit tests have been modified to test that the linearization of the clear color occurs (when appropriate) for shader texture() calls and on framebuffer blit sources. The modification patches can be found here: https://lists.freedesktop.org/archives/piglit/2018-March/023996.html Jason Ekstrand (1): util/srgb: Add a float sRGB -> linear helper Nanley Chery (13): i965: Use the brw_context for the clear color and value setters i965/miptree: Move the clear color and value setter implementations i965: Make the miptree clear color setter take a gl_color_union i965/miptree: Add and use a getter for the clear color i965/miptree: Extend the sRGB-blending WA to future platforms i965/meta_util: Re-enable sRGB-encoded fast-clears on CNL i965: Add and use a getter for depth miptree clear values i965: Allow failure when setting the depth clear value i965/brw_clear: Don't resolve to change the depth clear value i965/brw_clear: Delete redundant code i965/blorp: Also skip the fast clear if the clear color differs i965/miptree: Allow failure when setting the clear color i965/blorp: Delete redundant code src/mesa/drivers/dri/i965/brw_blorp.c | 60 +++------ src/mesa/drivers/dri/i965/brw_clear.c | 45 +------ src/mesa/drivers/dri/i965/brw_meta_util.c | 11 -- src/mesa/drivers/dri/i965/brw_misc_state.c | 15 --- src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 4 +- src/mesa/drivers/dri/i965/gen6_depth_state.c | 4 +- src/mesa/drivers/dri/i965/gen7_misc_state.c | 3 +- src/mesa/drivers/dri/i965/gen8_depth_state.c | 3 +- src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 165 ++++++++++++++++++++++- src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 53 ++++---- src/util/format_srgb.h | 14 ++ 11 files changed, 233 insertions(+), 144 deletions(-) -- 2.16.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev