1a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul/* 2a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * Mesa 3-D graphics library 3a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * 4a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * Copyright (C) 2011 VMware, Inc. All Rights Reserved. 5a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * 6a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 7a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * copy of this software and associated documentation files (the "Software"), 8a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * to deal in the Software without restriction, including without limitation 9a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * and/or sell copies of the Software, and to permit persons to whom the 11a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * Software is furnished to do so, subject to the following conditions: 12a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * 13a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * The above copyright notice and this permission notice shall be included 14a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * in all copies or substantial portions of the Software. 15a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * 16a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 193d8d5b298a268b119d840bc9bae0ee9e0c9244a9Kenneth Graunke * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 203d8d5b298a268b119d840bc9bae0ee9e0c9244a9Kenneth Graunke * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 213d8d5b298a268b119d840bc9bae0ee9e0c9244a9Kenneth Graunke * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 223d8d5b298a268b119d840bc9bae0ee9e0c9244a9Kenneth Graunke * OTHER DEALINGS IN THE SOFTWARE. 23a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul */ 24a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 25a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 26a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul#ifndef TEXSTORAGE_H 27a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul#define TEXSTORAGE_H 28a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 295a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand/** 305a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand * \name Internal functions 315a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand */ 325a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand/*@{*/ 335a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand 345a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrandextern void 355a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand_mesa_texture_storage(struct gl_context *ctx, GLuint dims, 365a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand struct gl_texture_object *texObj, 375a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand GLenum target, GLsizei levels, 385a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand GLenum internalformat, GLsizei width, 395a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand GLsizei height, GLsizei depth, bool dsa); 405a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand 41a342becc490b38436396e98ee653a6b81c037663Tapani Pälli/** 42a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * Texture width, height and depth check shared with the 43a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * multisample variants of TexStorage functions. 44a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * 45a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * From OpenGL 4.5 Core spec, page 260 (section 8.19) 46a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * 47a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * "An INVALID_VALUE error is generated if width, height, depth 48a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * or levels are less than 1, for commands with the corresponding 49a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * parameters." 50a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * 51a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * (referring to TextureStorage* commands, these also match values 52a342becc490b38436396e98ee653a6b81c037663Tapani Pälli * specified for OpenGL ES 3.1.) 53a342becc490b38436396e98ee653a6b81c037663Tapani Pälli */ 54a342becc490b38436396e98ee653a6b81c037663Tapani Pällistatic inline bool 55a342becc490b38436396e98ee653a6b81c037663Tapani Pälli_mesa_valid_tex_storage_dim(GLsizei width, GLsizei height, GLsizei depth) 56a342becc490b38436396e98ee653a6b81c037663Tapani Pälli{ 57a342becc490b38436396e98ee653a6b81c037663Tapani Pälli if (width < 1 || height < 1 || depth < 1) 58a342becc490b38436396e98ee653a6b81c037663Tapani Pälli return false; 59a342becc490b38436396e98ee653a6b81c037663Tapani Pälli return true; 60a342becc490b38436396e98ee653a6b81c037663Tapani Pälli} 61a342becc490b38436396e98ee653a6b81c037663Tapani Pälli 625a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand/*@}*/ 635a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand 645a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand/** 655a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand * \name API functions 665a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand */ 675a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand/*@{*/ 68a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 69a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paulextern void GLAPIENTRY 70a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul_mesa_TexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, 71a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul GLsizei width); 72a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 73a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 74a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paulextern void GLAPIENTRY 75a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul_mesa_TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, 76a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul GLsizei width, GLsizei height); 77a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 78a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 79a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paulextern void GLAPIENTRY 80a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul_mesa_TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, 81a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul GLsizei width, GLsizei height, GLsizei depth); 82a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 835a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrandextern void GLAPIENTRY 845a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand_mesa_TextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, 855a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand GLsizei width); 865a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand 875a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand 885a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrandextern void GLAPIENTRY 895a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand_mesa_TextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, 905a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand GLsizei width, GLsizei height); 915a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand 925a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand 935a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrandextern void GLAPIENTRY 945a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand_mesa_TextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, 955a5fe9f308908a6c09f910429d0d3021fdbf7872Laura Ekstrand GLsizei width, GLsizei height, GLsizei depth); 96a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 97a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 98a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paulextern void GLAPIENTRY 99a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul_mesa_TextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, 100a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul GLenum internalformat, 101a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul GLsizei width); 102a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 103a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paulextern void GLAPIENTRY 104a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul_mesa_TextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, 105a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul GLenum internalformat, 106a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul GLsizei width, GLsizei height); 107a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 108a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paulextern void GLAPIENTRY 109a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul_mesa_TextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, 110a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul GLenum internalformat, 111a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul GLsizei width, GLsizei height, GLsizei depth); 112a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 1137f32b9560b63ffa6967bbc0c8e61d2cc30081ab3Chris Forbesextern GLboolean 114b590ffd0f95bfe5ff7d44412e4916bba40630be9Brian Paul_mesa_is_legal_tex_storage_format(const struct gl_context *ctx, 115b590ffd0f95bfe5ff7d44412e4916bba40630be9Brian Paul GLenum internalformat); 1167f32b9560b63ffa6967bbc0c8e61d2cc30081ab3Chris Forbes 1171842dd08b83269816fe8eb8f2dcc1252f606fe48Eric Anholtextern GLboolean 11816f6d9cf5f93eb6cdd80e2b5f6cdd7dcfb30ea89Laura Ekstrand_mesa_AllocTextureStorage_sw(struct gl_context *ctx, 11916f6d9cf5f93eb6cdd80e2b5f6cdd7dcfb30ea89Laura Ekstrand struct gl_texture_object *texObj, 12016f6d9cf5f93eb6cdd80e2b5f6cdd7dcfb30ea89Laura Ekstrand GLsizei levels, GLsizei width, 12116f6d9cf5f93eb6cdd80e2b5f6cdd7dcfb30ea89Laura Ekstrand GLsizei height, GLsizei depth); 122a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul 123a8fcb7927b2f50886eb33e81aa7feeb96bc300e4Brian Paul#endif /* TEXSTORAGE_H */ 124