1 /* 2 * Copyright 2003 VMware, Inc. 3 * All Rights Reserved. 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the 7 * "Software"), to deal in the Software without restriction, including 8 * without limitation the rights to use, copy, modify, merge, publish, 9 * distribute, sublicense, and/or sell copies of the Software, and to 10 * permit persons to whom the Software is furnished to do so, subject to 11 * the following conditions: 12 * 13 * The above copyright notice and this permission notice (including the 14 * next paragraph) shall be included in all copies or substantial portions 15 * of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 21 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 */ 25 26 #ifndef _INTEL_TEX_OBJ_H 27 #define _INTEL_TEX_OBJ_H 28 29 #include "swrast/s_context.h" 30 31 32 struct intel_texture_object 33 { 34 struct gl_texture_object base; 35 36 /* This is a mirror of base._MaxLevel, updated at validate time, 37 * except that we don't bother with the non-base levels for 38 * non-mipmapped textures. 39 */ 40 unsigned int _MaxLevel; 41 42 unsigned int validated_first_level; 43 unsigned int validated_last_level; 44 45 /* The miptree of pixel data for the texture (if !needs_validate). After 46 * validation, the images will also have references to the same mt. 47 */ 48 struct intel_mipmap_tree *mt; 49 50 /** 51 * Set when mipmap trees in the texture images of this texture object 52 * might not all be the mipmap tree above. 53 */ 54 bool needs_validate; 55 56 /* Mesa format for the validated texture object. For non-views this 57 * will always be the same as mt->format. For views, it may differ 58 * since the mt is shared across views with differing formats. 59 */ 60 mesa_format _Format; 61 62 const struct intel_image_format *planar_format; 63 }; 64 65 66 /** 67 * intel_texture_image is a subclass of swrast_texture_image because we 68 * sometimes fall back to using the swrast module for software rendering. 69 */ 70 struct intel_texture_image 71 { 72 struct swrast_texture_image base; 73 74 /* If intelImage->mt != NULL, image data is stored here. 75 * Else if intelImage->base.Buffer != NULL, image is stored there. 76 * Else there is no image data. 77 */ 78 struct intel_mipmap_tree *mt; 79 }; 80 81 static inline struct intel_texture_object * 82 intel_texture_object(struct gl_texture_object *obj) 83 { 84 return (struct intel_texture_object *) obj; 85 } 86 87 static inline struct intel_texture_image * 88 intel_texture_image(struct gl_texture_image *img) 89 { 90 return (struct intel_texture_image *) img; 91 } 92 93 #endif /* _INTEL_TEX_OBJ_H */ 94