On snb and ilk, this patch breaks piglit.spec.ext_image_dma_buf_import.ext_image_dma_buf_import-sample_nv1
https://bugs.freedesktop.org/show_bug.cgi?id=96674 Jordan Justen <jordan.l.jus...@intel.com> writes: > Reported-by: Grazvydas Ignotas <nota...@gmail.com> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96607 > Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> > Cc: Kristian Høgsberg <k...@bitplanet.net> > Cc: "12.0" <mesa-sta...@lists.freedesktop.org> > --- > src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 15 ++++++--------- > src/mesa/drivers/dri/i965/gen7_wm_surface_state.c | 21 ++++++++++----------- > src/mesa/drivers/dri/i965/gen8_surface_state.c | 19 ++++++++++--------- > 3 files changed, 26 insertions(+), 29 deletions(-) > > 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 133a944..e93847b 100644 > --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c > +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c > @@ -332,21 +332,18 @@ brw_update_texture_surface(struct gl_context *ctx, > return; > } > > + if (plane > 0) { > + if (mt->plane[plane - 1] == NULL) > + return; > + mt = mt->plane[plane - 1]; > + } > + > surf = brw_state_batch(brw, AUB_TRACE_SURFACE_STATE, > 6 * 4, 32, surf_offset); > > uint32_t tex_format = translate_tex_format(brw, mt->format, > sampler->sRGBDecode); > > - if (tObj->Target == GL_TEXTURE_EXTERNAL_OES) { > - if (plane > 0) > - mt = mt->plane[plane - 1]; > - if (mt == NULL) > - return; > - > - tex_format = translate_tex_format(brw, mt->format, > sampler->sRGBDecode); > - } > - > if (for_gather) { > /* Sandybridge's gather4 message is broken for integer formats. > * To work around this, we pretend the surface is UNORM for > diff --git a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c > b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c > index 60589bc..b8f9740 100644 > --- a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c > +++ b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c > @@ -365,6 +365,13 @@ gen7_update_texture_surface(struct gl_context *ctx, > } else { > struct intel_texture_object *intel_obj = intel_texture_object(obj); > struct intel_mipmap_tree *mt = intel_obj->mt; > + > + if (plane > 0) { > + if (mt->plane[plane - 1] == NULL) > + return; > + mt = mt->plane[plane - 1]; > + } > + > struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit); > /* If this is a view with restricted NumLayers, then our effective > depth > * is not just the miptree depth. > @@ -383,17 +390,9 @@ gen7_update_texture_surface(struct gl_context *ctx, > const unsigned swizzle = (unlikely(alpha_depth) ? SWIZZLE_XYZW : > brw_get_texture_swizzle(&brw->ctx, obj)); > > - unsigned format = translate_tex_format( > - brw, intel_obj->_Format, sampler->sRGBDecode); > - > - if (obj->Target == GL_TEXTURE_EXTERNAL_OES) { > - if (plane > 0) > - mt = mt->plane[plane - 1]; > - if (mt == NULL) > - return; > - > - format = translate_tex_format(brw, mt->format, sampler->sRGBDecode); > - } > + mesa_format mesa_fmt = plane == 0 ? intel_obj->_Format : mt->format; > + unsigned format = translate_tex_format(brw, mesa_fmt, > + sampler->sRGBDecode); > > if (for_gather && format == BRW_SURFACEFORMAT_R32G32_FLOAT) > format = BRW_SURFACEFORMAT_R32G32_FLOAT_LD; > diff --git a/src/mesa/drivers/dri/i965/gen8_surface_state.c > b/src/mesa/drivers/dri/i965/gen8_surface_state.c > index ee4781b..e2af9c9 100644 > --- a/src/mesa/drivers/dri/i965/gen8_surface_state.c > +++ b/src/mesa/drivers/dri/i965/gen8_surface_state.c > @@ -374,6 +374,13 @@ gen8_update_texture_surface(struct gl_context *ctx, > struct gl_texture_image *firstImage = obj->Image[0][obj->BaseLevel]; > struct intel_texture_object *intel_obj = intel_texture_object(obj); > struct intel_mipmap_tree *mt = intel_obj->mt; > + > + if (plane > 0) { > + if (mt->plane[plane - 1] == NULL) > + return; > + mt = mt->plane[plane - 1]; > + } > + > struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit); > /* If this is a view with restricted NumLayers, then our effective > depth > * is not just the miptree depth. > @@ -391,19 +398,13 @@ gen8_update_texture_surface(struct gl_context *ctx, > const unsigned swizzle = (unlikely(alpha_depth) ? SWIZZLE_XYZW : > brw_get_texture_swizzle(&brw->ctx, obj)); > > - unsigned format = translate_tex_format(brw, intel_obj->_Format, > + mesa_format mesa_fmt = plane == 0 ? intel_obj->_Format : mt->format; > + unsigned format = translate_tex_format(brw, mesa_fmt, > sampler->sRGBDecode); > + > if (obj->StencilSampling && firstImage->_BaseFormat == > GL_DEPTH_STENCIL) { > mt = mt->stencil_mt; > format = BRW_SURFACEFORMAT_R8_UINT; > - } else if (obj->Target == GL_TEXTURE_EXTERNAL_OES) { > - if (plane > 0) > - mt = mt->plane[plane - 1]; > - if (mt == NULL) > - return; > - > - format = translate_tex_format(brw, mt->format, sampler->sRGBDecode); > - > } > > const int surf_index = surf_offset - &brw->wm.base.surf_offset[0]; > -- > 2.8.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev