This is the actual mesa_format to use. In non-view cases this is always the same as the mt's format.
Signed-off-by: Chris Forbes <chr...@ijw.co.nz> --- src/mesa/drivers/dri/i965/intel_tex.c | 8 ++++++++ src/mesa/drivers/dri/i965/intel_tex_obj.h | 5 +++++ src/mesa/drivers/dri/i965/intel_tex_validate.c | 1 + 3 files changed, 14 insertions(+) diff --git a/src/mesa/drivers/dri/i965/intel_tex.c b/src/mesa/drivers/dri/i965/intel_tex.c index 3b14796..0bbeeb7 100644 --- a/src/mesa/drivers/dri/i965/intel_tex.c +++ b/src/mesa/drivers/dri/i965/intel_tex.c @@ -168,6 +168,7 @@ intel_alloc_texture_storage(struct gl_context *ctx, intel_texobj->needs_validate = false; intel_texobj->validated_first_level = 0; intel_texobj->validated_last_level = levels - 1; + intel_texobj->_Format = intel_texobj->mt->format; return true; } @@ -242,6 +243,7 @@ intel_texture_view(struct gl_context *ctx, struct gl_texture_object *texObj, struct gl_texture_object *origTexObj) { + struct brw_context *brw = brw_context(ctx); struct intel_texture_object *intel_tex = intel_texture_object(texObj); struct intel_texture_object *intel_orig_tex = intel_texture_object(origTexObj); @@ -274,6 +276,12 @@ intel_texture_view(struct gl_context *ctx, intel_tex->validated_first_level = 0; intel_tex->validated_last_level = numLevels - 1; + /* Set the validated texture format, with the same adjustments that + * would have been applied to determine the underlying texture's + * mt->format. */ + intel_tex->_Format = intel_depth_format_for_depthstencil_format( + intel_lower_compressed_format(brw, texObj->Image[0][0]->TexFormat)); + return GL_TRUE; } diff --git a/src/mesa/drivers/dri/i965/intel_tex_obj.h b/src/mesa/drivers/dri/i965/intel_tex_obj.h index 78a0990..8f20858 100644 --- a/src/mesa/drivers/dri/i965/intel_tex_obj.h +++ b/src/mesa/drivers/dri/i965/intel_tex_obj.h @@ -54,6 +54,11 @@ struct intel_texture_object * might not all be the mipmap tree above. */ bool needs_validate; + + /* Mesa format for the validated texture object. For non-views this + * will always be the same as mt->format. For views, it may differ + * since the mt is shared across views with differing formats. */ + mesa_format _Format; }; diff --git a/src/mesa/drivers/dri/i965/intel_tex_validate.c b/src/mesa/drivers/dri/i965/intel_tex_validate.c index 48a4158..07f3174 100644 --- a/src/mesa/drivers/dri/i965/intel_tex_validate.c +++ b/src/mesa/drivers/dri/i965/intel_tex_validate.c @@ -173,6 +173,7 @@ intel_finalize_mipmap_tree(struct brw_context *brw, GLuint unit) intelObj->validated_first_level = validate_first_level; intelObj->validated_last_level = validate_last_level; + intelObj->_Format = intelObj->mt->format; intelObj->needs_validate = false; return true; -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev