[Mesa-dev] [PATCH 1/2] i965/gen9: Configure rbc buffers as plain for non-rbc tex views
Pohjolainen, Topi
topi.pohjolainen at intel.com
Wed Jun 1 05:33:31 UTC 2016
On Tue, May 31, 2016 at 10:58:47AM -0700, Matt Turner wrote:
> On Tue, May 31, 2016 at 7:16 AM, Topi Pohjolainen
> <topi.pohjolainen at intel.com> wrote:
> > Fixes rendering in Shadow of Mordor with rbc. Application writes
> > RGBA_UNORM texture filling it with values the application wants to
> > later on treat as SRGB_ALPHA.
> > Intel driver enables lossless compression for the buffer by the time
> > of writing. However, the driver fails to make sure the buffer can be
> > sampled as something else later on and unfortunately there is
> > restriction in the hardware for using lossless compression for srgb
> > formats which looks to extend itself to the sampling engine also.
> > Requesting srgb to linear conversion on top of compressed buffer
> > results the color values to be pretty much garbage.
> >
> > Fortunately none of tracked benchmarks showed a regression with
> > this.
> >
> > Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> > CC: Kenneth Graunke <kenneth at whitecape.org
>
> Presumably we want to tag these for stable.
>
> > ---
> > src/mesa/drivers/dri/i965/brw_context.c | 38 ++++++++++++++++++++++++--
> > src/mesa/drivers/dri/i965/gen8_surface_state.c | 13 ++++++++-
> > 2 files changed, 48 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> > index 2504dce..652acbf 100644
> > --- a/src/mesa/drivers/dri/i965/brw_context.c
> > +++ b/src/mesa/drivers/dri/i965/brw_context.c
> > @@ -70,6 +70,7 @@
> > #include "tnl/t_pipeline.h"
> > #include "util/ralloc.h"
> > #include "util/debug.h"
> > +#include "isl/isl.h"
> >
> > /***************************************
> > * Mesa's Driver Functions
> > @@ -166,6 +167,38 @@ intel_update_framebuffer(struct gl_context *ctx,
> > fb->DefaultGeometry.NumSamples);
> > }
> >
> > +/* On Gen9 color buffers may be compressed by the hardware (lossless
> > + * compression). There are, however, format restrictions and care needs to be
> > + * taken that the sampler engine is capable for re-interpreting a buffer with
> > + * format different the buffer was originally written with.
> > + *
> > + * For example, SRGB formats are not compressible and the sampler engine isn't
> > + * capable of treating RGBA_UNORM as SRGB_ALPHA. In such a case the underlying
> > + * color buffer needs to be resolved so that the sampling surface can be
> > + * sampled as non-compressed (i.e., without the auxiliary MCS buffer being
> > + * set).
> > + */
> > +static bool
> > +intel_texture_view_requires_resolve(struct brw_context *brw,
> > + struct intel_texture_object *intel_tex)
> > +{
> > + if (brw->gen < 9 ||
> > + !intel_miptree_is_lossless_compressed(brw, intel_tex->mt))
>
> Needs one more space of indentation.
Thanks, fixed locally.
More information about the mesa-dev
mailing list