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 _BRW_TEX_OBJ_H 27#define _BRW_TEX_OBJ_H 28 29#include "swrast/s_context.h" 30 31#ifdef __cplusplus 32extern "C" { 33#endif 34 35struct brw_texture_object 36{ 37 struct gl_texture_object base; 38 39 /* This is a mirror of base._MaxLevel, updated at validate time, 40 * except that we don't bother with the non-base levels for 41 * non-mipmapped textures. 42 */ 43 unsigned int _MaxLevel; 44 45 unsigned int validated_first_level; 46 unsigned int validated_last_level; 47 48 /* The miptree of pixel data for the texture (if !needs_validate). After 49 * validation, the images will also have references to the same mt. 50 */ 51 struct brw_mipmap_tree *mt; 52 53 /** 54 * Set when mipmap trees in the texture images of this texture object 55 * might not all be the mipmap tree above. 56 */ 57 bool needs_validate; 58 59 /* Mesa format for the validated texture object. For non-views this 60 * will always be the same as texObj->Image[0][0].TexFormat. For views, it 61 * may differ since the mt is shared across views with differing formats. 62 */ 63 mesa_format _Format; 64 65 const struct brw_image_format *planar_format; 66 unsigned int yuv_color_space; 67}; 68 69 70/** 71 * brw_texture_image is a subclass of swrast_texture_image because we 72 * sometimes fall back to using the swrast module for software rendering. 73 */ 74struct brw_texture_image 75{ 76 struct swrast_texture_image base; 77 78 /* If brw_image->mt != NULL, image data is stored here. 79 * Else if brw_image->base.Buffer != NULL, image is stored there. 80 * Else there is no image data. 81 */ 82 struct brw_mipmap_tree *mt; 83}; 84 85static inline struct brw_texture_object * 86brw_texture_object(struct gl_texture_object *obj) 87{ 88 return (struct brw_texture_object *) obj; 89} 90 91static inline struct brw_texture_image * 92brw_texture_image(struct gl_texture_image *img) 93{ 94 return (struct brw_texture_image *) img; 95} 96 97#ifdef __cplusplus 98} 99#endif 100 101#endif /* _BRW_TEX_OBJ_H */ 102