i965: Add _Format to intel_texobj.
authorChris Forbes <chrisf@ijw.co.nz>
Fri, 21 Feb 2014 18:15:59 +0000 (07:15 +1300)
committerChris Forbes <chrisf@ijw.co.nz>
Thu, 10 Apr 2014 06:27:41 +0000 (18:27 +1200)
This is the actual mesa_format to use. In non-view cases this is always
the same as the mt's format.

V4: Comment style

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/intel_tex.c
src/mesa/drivers/dri/i965/intel_tex_obj.h
src/mesa/drivers/dri/i965/intel_tex_validate.c

index 3b14796d8449317dd04ae05092c780606e2c7e23..b69018e4be79b2c4797affcff9348016dcf18a11 100644 (file)
@@ -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,13 @@ 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;
 }
 
index 78a0990a69916f03f8e505480e2538e866049ba5..2d2211b00450ca982c6409051ac830ac73c68570 100644 (file)
@@ -54,6 +54,12 @@ 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;
 };
 
 
index 48a41584cefcb57661be7646492c7d0398271686..07f317441414ba89490d73ece35b8c09c714a958 100644 (file)
@@ -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;