1 /* 2 * Mesa 3-D graphics library 3 * 4 * Copyright (C) 2011 VMware, Inc. All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation 9 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 * and/or sell copies of the Software, and to permit persons to whom the 11 * Software is furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included 14 * in all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 * OTHER DEALINGS IN THE SOFTWARE. 23 */ 24 25 26 #ifndef TEXSTORAGE_H 27 #define TEXSTORAGE_H 28 29 /** 30 * \name Internal functions 31 */ 32 /*@{*/ 33 34 extern void 35 _mesa_texture_storage(struct gl_context *ctx, GLuint dims, 36 struct gl_texture_object *texObj, 37 GLenum target, GLsizei levels, 38 GLenum internalformat, GLsizei width, 39 GLsizei height, GLsizei depth, bool dsa); 40 41 /** 42 * Texture width, height and depth check shared with the 43 * multisample variants of TexStorage functions. 44 * 45 * From OpenGL 4.5 Core spec, page 260 (section 8.19) 46 * 47 * "An INVALID_VALUE error is generated if width, height, depth 48 * or levels are less than 1, for commands with the corresponding 49 * parameters." 50 * 51 * (referring to TextureStorage* commands, these also match values 52 * specified for OpenGL ES 3.1.) 53 */ 54 static inline bool 55 _mesa_valid_tex_storage_dim(GLsizei width, GLsizei height, GLsizei depth) 56 { 57 if (width < 1 || height < 1 || depth < 1) 58 return false; 59 return true; 60 } 61 62 /*@}*/ 63 64 /** 65 * \name API functions 66 */ 67 /*@{*/ 68 69 extern void GLAPIENTRY 70 _mesa_TexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, 71 GLsizei width); 72 73 74 extern void GLAPIENTRY 75 _mesa_TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, 76 GLsizei width, GLsizei height); 77 78 79 extern void GLAPIENTRY 80 _mesa_TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, 81 GLsizei width, GLsizei height, GLsizei depth); 82 83 extern void GLAPIENTRY 84 _mesa_TextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, 85 GLsizei width); 86 87 88 extern void GLAPIENTRY 89 _mesa_TextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, 90 GLsizei width, GLsizei height); 91 92 93 extern void GLAPIENTRY 94 _mesa_TextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, 95 GLsizei width, GLsizei height, GLsizei depth); 96 97 98 extern void GLAPIENTRY 99 _mesa_TextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, 100 GLenum internalformat, 101 GLsizei width); 102 103 extern void GLAPIENTRY 104 _mesa_TextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, 105 GLenum internalformat, 106 GLsizei width, GLsizei height); 107 108 extern void GLAPIENTRY 109 _mesa_TextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, 110 GLenum internalformat, 111 GLsizei width, GLsizei height, GLsizei depth); 112 113 extern GLboolean 114 _mesa_is_legal_tex_storage_format(const struct gl_context *ctx, 115 GLenum internalformat); 116 117 extern GLboolean 118 _mesa_AllocTextureStorage_sw(struct gl_context *ctx, 119 struct gl_texture_object *texObj, 120 GLsizei levels, GLsizei width, 121 GLsizei height, GLsizei depth); 122 123 #endif /* TEXSTORAGE_H */ 124