lp_texture.h revision 287c94ea4987033f9c99a2f91c5750c9083504ca
1946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca/************************************************************************** 2946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * 3946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. 4946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * All Rights Reserved. 5946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * 6946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * Permission is hereby granted, free of charge, to any person obtaining a 7946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * copy of this software and associated documentation files (the 8946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * "Software"), to deal in the Software without restriction, including 9946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * without limitation the rights to use, copy, modify, merge, publish, 10946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * distribute, sub license, and/or sell copies of the Software, and to 11946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * permit persons to whom the Software is furnished to do so, subject to 12946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * the following conditions: 13946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * 14946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * The above copyright notice and this permission notice (including the 15946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * next paragraph) shall be included in all copies or substantial portions 16946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * of the Software. 17946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * 18946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca * 26946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca **************************************************************************/ 27946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 28c9a5930fe45a0a0299769bd2b672ca516d1bf39eJosé Fonseca#ifndef LP_TEXTURE_H 29c9a5930fe45a0a0299769bd2b672ca516d1bf39eJosé Fonseca#define LP_TEXTURE_H 30946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 31946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 32946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca#include "pipe/p_state.h" 3368df2949971f6a9c0854bdfb2a252cb82fd9b7aaJosé Fonseca#include "util/u_debug.h" 34946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 35946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 36bc50336b6ab40b6f4df7dbe19abe8b1d89938472Brian Paul#define LP_MAX_TEXTURE_2D_LEVELS 12 /* 2K x 2K for now */ 37d73fadf2116f5459f18bd84f48e7ed86773797b0Brian Paul#define LP_MAX_TEXTURE_3D_LEVELS 10 /* 512 x 512 x 512 for now */ 38d73fadf2116f5459f18bd84f48e7ed86773797b0Brian Paul 39d73fadf2116f5459f18bd84f48e7ed86773797b0Brian Paul 40946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonsecastruct pipe_context; 41946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonsecastruct pipe_screen; 42946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonsecastruct llvmpipe_context; 4394ce4eb3c27706d992226d847d123c46b14b1c4fKeith Whitwell 4494ce4eb3c27706d992226d847d123c46b14b1c4fKeith Whitwellstruct sw_displaytarget; 45946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 464414a1a73ca649df12b514daa82381a2dbde2ba4Brian Paul 47287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstruct llvmpipe_resource 48946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca{ 49287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct pipe_resource base; 50946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 51d73fadf2116f5459f18bd84f48e7ed86773797b0Brian Paul unsigned long level_offset[LP_MAX_TEXTURE_2D_LEVELS]; 52d73fadf2116f5459f18bd84f48e7ed86773797b0Brian Paul unsigned stride[LP_MAX_TEXTURE_2D_LEVELS]; 53946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 54e173a9bbd64dc38dba6b881ed7a9faea02861042José Fonseca /** 55287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell * Display target, for textures with the PIPE_BIND_DISPLAY_TARGET 56e173a9bbd64dc38dba6b881ed7a9faea02861042José Fonseca * usage. 57e173a9bbd64dc38dba6b881ed7a9faea02861042José Fonseca */ 5894ce4eb3c27706d992226d847d123c46b14b1c4fKeith Whitwell struct sw_displaytarget *dt; 59e173a9bbd64dc38dba6b881ed7a9faea02861042José Fonseca 60e173a9bbd64dc38dba6b881ed7a9faea02861042José Fonseca /** 61e173a9bbd64dc38dba6b881ed7a9faea02861042José Fonseca * Malloc'ed data for regular textures, or a mapping to dt above. 62946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca */ 63e173a9bbd64dc38dba6b881ed7a9faea02861042José Fonseca void *data; 64946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 65287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell boolean userBuffer; /** Is this a user-space buffer? */ 660f55a95b2faa16cc008143c53a8b82b19c5d750aKeith Whitwell unsigned timestamp; 67946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca}; 68946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 694414a1a73ca649df12b514daa82381a2dbde2ba4Brian Paul 70946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonsecastruct llvmpipe_transfer 71946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca{ 72946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca struct pipe_transfer base; 73946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 74946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca unsigned long offset; 75946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca}; 76946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 77946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 78946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca/** cast wrappers */ 79287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstatic INLINE struct llvmpipe_resource * 80287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellllvmpipe_resource(struct pipe_resource *pt) 81946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca{ 82287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell return (struct llvmpipe_resource *) pt; 83946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca} 84946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 854414a1a73ca649df12b514daa82381a2dbde2ba4Brian Paul 86287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstatic INLINE const struct llvmpipe_resource * 87287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellllvmpipe_resource_const(const struct pipe_resource *pt) 889be1feacf2dbd36fa9fb65b9932a74f04a7d9ccaBrian Paul{ 89287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell return (const struct llvmpipe_resource *) pt; 909be1feacf2dbd36fa9fb65b9932a74f04a7d9ccaBrian Paul} 919be1feacf2dbd36fa9fb65b9932a74f04a7d9ccaBrian Paul 929be1feacf2dbd36fa9fb65b9932a74f04a7d9ccaBrian Paul 93946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonsecastatic INLINE struct llvmpipe_transfer * 94946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonsecallvmpipe_transfer(struct pipe_transfer *pt) 95946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca{ 96946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca return (struct llvmpipe_transfer *) pt; 97946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca} 98946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 99946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 100287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellvoid llvmpipe_init_screen_resource_funcs(struct pipe_screen *screen); 101287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellvoid llvmpipe_init_context_resource_funcs(struct pipe_context *pipe); 102287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell 1033abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonsecastatic INLINE unsigned 104287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellllvmpipe_resource_stride(struct pipe_resource *texture, 1053abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca unsigned level) 1063abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca{ 107287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell struct llvmpipe_resource *lpt = llvmpipe_resource(texture); 1083abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca assert(level < LP_MAX_TEXTURE_2D_LEVELS); 1093abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca return lpt->stride[level]; 1103abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca} 1113abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca 1123abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca 1133abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonsecavoid * 114287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellllvmpipe_resource_map(struct pipe_resource *texture, 115287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell unsigned usage, 116287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell unsigned face, 117287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell unsigned level, 118287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell unsigned zslice); 1193abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca 1203abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonsecavoid 121287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellllvmpipe_resource_unmap(struct pipe_resource *texture, 1223abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca unsigned face, 1233abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca unsigned level, 1243abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca unsigned zslice); 1253abc7b985ce0787c5103d1a86bd0ba07b127a82fJosé Fonseca 126946f432a08112148d743eb9faf6b27bb8cc7fa76José Fonseca 1274414a1a73ca649df12b514daa82381a2dbde2ba4Brian Paul#endif /* LP_TEXTURE_H */ 128