[Mesa-dev] [PATCH 3/8] i965: Faking the ETC2 compression on Gen < 8 GPUs using two miptrees.
Eleni Maria Stea
estea at igalia.com
Sat Jan 26 15:22:06 UTC 2019
Hi Nanley,
On Fri, 18 Jan 2019 15:32:02 -0800
Nanley Chery <nanleychery at gmail.com> wrote:
> > diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> > b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index
> > e214fae140..4d1eafac91 100644 ---
> > a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++
> > b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -329,6
[...]
> > @@ -474,6 +485,11 @@ static void brw_update_texture_surface(struct
> > gl_context *ctx, struct intel_texture_object *intel_obj =
> > intel_texture_object(obj); struct intel_mipmap_tree *mt =
> > intel_obj->mt;
> > + if (mt->needs_fake_etc) {
> > + assert(mt->shadow_mt);
> > + mt = mt->shadow_mt;
> > + }
> > +
> > if (plane > 0) {
> > if (mt->plane[plane - 1] == NULL)
> > return;
> > @@ -512,7 +528,7 @@ static void brw_update_texture_surface(struct
> > gl_context *ctx,
> > * is safe because texture views aren't allowed on
> > depth/stencil. */
> > mesa_fmt = mt->format;
> > - } else if (mt->etc_format != MESA_FORMAT_NONE) {
> > + } else if (intel_obj->mt->etc_format != MESA_FORMAT_NONE) {
> > mesa_fmt = mt->format;
>
> For uniformity, lets access mt->shadow_mt->format here and move the
> mt->needs_fake_etc check from above to below this condition:
>
> } else if (devinfo->gen <= 7 && mt->format ==
> MESA_FORMAT_S_UINT8) {
I'd like to ask you one more question on this change: if I do the check
for the fake etc later, the following code will run for the main
miptree that contains the compressed data and has ETC2 format:
> > if (plane > 0) {
> > if (mt->plane[plane - 1] == NULL)
> > return;
> > @@ -512,7 +528,7 @@ static void brw_update_texture_surface(struct
> > gl_context *ctx,
> > * is safe because texture views aren't allowed on
> > depth/stencil. */
> > mesa_fmt = mt->format;
Wouldn't this be a problem?
Thank you in advance,
Eleni
More information about the mesa-dev
mailing list