X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fteximage.h;h=266a9f3d83db242467983234fe113e5e03938b36;hb=fc9c4f89b85c0116c0dc22a3eaf25f5df88ad657;hp=bf729daf534a72cd2d07b800dfdc755b00ca5d0d;hpb=8dffa89e013b611cdafbb2cc5216450fa248cb7c;p=mesa.git diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h index bf729daf534..266a9f3d83d 100644 --- a/src/mesa/main/teximage.h +++ b/src/mesa/main/teximage.h @@ -43,10 +43,63 @@ extern "C" { static inline GLboolean _mesa_is_cube_face(GLenum target) { - return (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB); + return (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X && + target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z); } + +/** + * Return number of faces for a texture target. This will be 6 for + * cube maps and 1 otherwise. + * NOTE: this function is not used for cube map arrays which operate + * more like 2D arrays than cube maps. + */ +static inline GLuint +_mesa_num_tex_faces(GLenum target) +{ + switch (target) { + case GL_TEXTURE_CUBE_MAP: + case GL_PROXY_TEXTURE_CUBE_MAP: + return 6; + default: + return 1; + } +} + + +/** + * If the target is GL_TEXTURE_CUBE_MAP, return one of the + * GL_TEXTURE_CUBE_MAP_POSITIVE/NEGATIVE_X/Y/Z targets corresponding to + * the face parameter. + * Else, return target as-is. + */ +static inline GLenum +_mesa_cube_face_target(GLenum target, unsigned face) +{ + if (target == GL_TEXTURE_CUBE_MAP) { + assert(face < 6); + return GL_TEXTURE_CUBE_MAP_POSITIVE_X + face; + } + else { + return target; + } +} + + +/** + * For cube map faces, return a face index in [0,5]. + * For other targets return 0; + */ +static inline GLuint +_mesa_tex_target_to_face(GLenum target) +{ + if (_mesa_is_cube_face(target)) + return (GLuint) target - (GLuint) GL_TEXTURE_CUBE_MAP_POSITIVE_X; + else + return 0; +} + + /** Are any of the dimensions of given texture equal to zero? */ static inline GLboolean _mesa_is_zero_size_texture(const struct gl_texture_image *texImage) @@ -59,19 +112,12 @@ _mesa_is_zero_size_texture(const struct gl_texture_image *texImage) /** \name Internal functions */ /*@{*/ -extern GLint -_mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ); - - extern GLboolean _mesa_is_proxy_texture(GLenum target); extern bool _mesa_is_array_texture(GLenum target); -extern struct gl_texture_image * -_mesa_new_texture_image( struct gl_context *ctx ); - extern void _mesa_delete_texture_image( struct gl_context *ctx, @@ -84,6 +130,14 @@ _mesa_init_teximage_fields(struct gl_context *ctx, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum internalFormat, mesa_format format); +extern void +_mesa_init_teximage_fields_ms(struct gl_context *ctx, + struct gl_texture_image *img, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLenum internalFormat, + mesa_format format, + GLuint numSamples, + GLboolean fixedSampleLocations); extern mesa_format @@ -111,6 +165,8 @@ extern struct gl_texture_image * _mesa_get_tex_image(struct gl_context *ctx, struct gl_texture_object *texObj, GLenum target, GLint level); +mesa_format +_mesa_get_texbuffer_format(const struct gl_context *ctx, GLenum internalFormat); /** * Return the base-level texture image for the given texture object. @@ -127,16 +183,14 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target); extern GLboolean -_mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, - mesa_format format, - GLint width, GLint height, GLint depth, GLint border); +_mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, + GLuint numLevels, GLint level, + mesa_format format, GLuint numSamples, + GLint width, GLint height, GLint depth); extern GLboolean _mesa_target_can_be_compressed(const struct gl_context *ctx, GLenum target, - GLenum intFormat); - -extern GLuint -_mesa_tex_target_to_face(GLenum target); + GLenum intFormat, GLenum *error); extern GLint _mesa_get_texture_dimensions(GLenum target); @@ -164,9 +218,14 @@ _mesa_validate_texbuffer_format(const struct gl_context *ctx, bool _mesa_legal_texture_base_format_for_target(struct gl_context *ctx, GLenum target, - GLenum internalFormat, - unsigned dimensions, - const char *caller); + GLenum internalFormat); + +bool +_mesa_format_no_online_compression(GLenum format); + +GLboolean +_mesa_is_renderable_texture_format(const struct gl_context *ctx, + GLenum internalformat); extern void _mesa_texture_sub_image(struct gl_context *ctx, GLuint dims, @@ -179,33 +238,18 @@ _mesa_texture_sub_image(struct gl_context *ctx, GLuint dims, bool dsa); extern void -_mesa_compressed_texture_sub_image(struct gl_context *ctx, GLuint dims, - struct gl_texture_object *texObj, - struct gl_texture_image *texImage, - GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, - GLsizei width, GLsizei height, - GLsizei depth, - GLenum format, GLsizei imageSize, - const GLvoid *data); +_mesa_texture_storage_ms_memory(struct gl_context *ctx, GLuint dims, + struct gl_texture_object *texObj, + struct gl_memory_object *memObj, + GLenum target, GLsizei samples, + GLenum internalFormat, GLsizei width, + GLsizei height, GLsizei depth, + GLboolean fixedSampleLocations, + GLuint64 offset, const char* func); -extern void -_mesa_copy_texture_sub_image(struct gl_context *ctx, GLuint dims, - struct gl_texture_object *texObj, - GLenum target, GLint level, - GLint xoffset, GLint yoffset, GLint zoffset, - GLint x, GLint y, - GLsizei width, GLsizei height, - const char *caller); +bool +_mesa_is_cube_map_texture(GLenum target); -extern void -_mesa_texture_buffer_range(struct gl_context *ctx, - struct gl_texture_object *texObj, - GLenum internalFormat, - struct gl_buffer_object *bufObj, - GLintptr offset, GLsizeiptr size, - const char *caller); /*@}*/ @@ -236,15 +280,43 @@ _mesa_TexImage3DEXT( GLenum target, GLint level, GLenum internalformat, GLint border, GLenum format, GLenum type, const GLvoid *pixels ); +extern void GLAPIENTRY +_mesa_TexImage1D_no_error(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLint border, + GLenum format, GLenum type, const GLvoid *pixels); + +extern void GLAPIENTRY +_mesa_TexImage2D_no_error(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLint border, + GLenum format, GLenum type, const GLvoid *pixels); + +extern void GLAPIENTRY +_mesa_TexImage3D_no_error(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLenum format, GLenum type, + const GLvoid *pixels); + extern void GLAPIENTRY _mesa_EGLImageTargetTexture2DOES( GLenum target, GLeglImageOES image ); +void GLAPIENTRY +_mesa_TexSubImage1D_no_error(GLenum target, GLint level, GLint xoffset, + GLsizei width, + GLenum format, GLenum type, + const GLvoid *pixels); + extern void GLAPIENTRY _mesa_TexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels ); +void GLAPIENTRY +_mesa_TexSubImage2D_no_error(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels); extern void GLAPIENTRY _mesa_TexSubImage2D( GLenum target, GLint level, @@ -253,6 +325,12 @@ _mesa_TexSubImage2D( GLenum target, GLint level, GLenum format, GLenum type, const GLvoid *pixels ); +void GLAPIENTRY +_mesa_TexSubImage3D_no_error(GLenum target, GLint level, + GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, + const GLvoid *pixels); extern void GLAPIENTRY _mesa_TexSubImage3D( GLenum target, GLint level, @@ -261,12 +339,22 @@ _mesa_TexSubImage3D( GLenum target, GLint level, GLenum format, GLenum type, const GLvoid *pixels ); +void GLAPIENTRY +_mesa_TextureSubImage1D_no_error(GLuint texture, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, + const GLvoid *pixels); + extern void GLAPIENTRY _mesa_TextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +void GLAPIENTRY +_mesa_TextureSubImage2D_no_error(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels); extern void GLAPIENTRY _mesa_TextureSubImage2D(GLuint texture, GLint level, @@ -275,6 +363,12 @@ _mesa_TextureSubImage2D(GLuint texture, GLint level, GLenum format, GLenum type, const GLvoid *pixels); +void GLAPIENTRY +_mesa_TextureSubImage3D_no_error(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const GLvoid *pixels); + extern void GLAPIENTRY _mesa_TextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, @@ -294,6 +388,17 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLsizei width, GLsizei height, GLint border ); +extern void GLAPIENTRY +_mesa_CopyTexImage1D_no_error(GLenum target, GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, GLint border); + + +extern void GLAPIENTRY +_mesa_CopyTexImage2D_no_error(GLenum target, GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, GLsizei height, + GLint border ); + + extern void GLAPIENTRY _mesa_CopyTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ); @@ -326,6 +431,34 @@ _mesa_CopyTextureSubImage3D(GLuint texture, GLint level, GLint x, GLint y, GLsizei width, GLsizei height); +extern void GLAPIENTRY +_mesa_CopyTexSubImage1D_no_error(GLenum target, GLint level, GLint xoffset, + GLint x, GLint y, GLsizei width ); + +extern void GLAPIENTRY +_mesa_CopyTexSubImage2D_no_error(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, GLsizei width, + GLsizei height); + +extern void GLAPIENTRY +_mesa_CopyTexSubImage3D_no_error(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, GLint y, + GLsizei width, GLsizei height); + +extern void GLAPIENTRY +_mesa_CopyTextureSubImage1D_no_error(GLuint texture, GLint level, GLint xoffset, + GLint x, GLint y, GLsizei width); + +extern void GLAPIENTRY +_mesa_CopyTextureSubImage2D_no_error(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); + +extern void GLAPIENTRY +_mesa_CopyTextureSubImage3D_no_error(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, + GLint y, GLsizei width, GLsizei height); + extern void GLAPIENTRY _mesa_ClearTexSubImage( GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, @@ -355,22 +488,63 @@ _mesa_CompressedTexImage3D(GLenum target, GLint level, GLsizei imageSize, const GLvoid *data); extern void GLAPIENTRY +_mesa_CompressedTexImage1D_no_error(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLint border, GLsizei imageSize, + const GLvoid *data); + +extern void GLAPIENTRY +_mesa_CompressedTexImage2D_no_error(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLint border, + GLsizei imageSize, const GLvoid *data); + +extern void GLAPIENTRY +_mesa_CompressedTexImage3D_no_error(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLsizei imageSize, const GLvoid *data); + + +extern void GLAPIENTRY +_mesa_CompressedTexSubImage1D_no_error(GLenum target, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, + const GLvoid *data); +extern void GLAPIENTRY _mesa_CompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); extern void GLAPIENTRY +_mesa_CompressedTextureSubImage1D_no_error(GLuint texture, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, + const GLvoid *data); +extern void GLAPIENTRY _mesa_CompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); extern void GLAPIENTRY +_mesa_CompressedTexSubImage2D_no_error(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, + const GLvoid *data); +extern void GLAPIENTRY _mesa_CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); extern void GLAPIENTRY +_mesa_CompressedTextureSubImage2D_no_error(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, + const GLvoid *data); +extern void GLAPIENTRY _mesa_CompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, @@ -378,12 +552,26 @@ _mesa_CompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, const GLvoid *data); extern void GLAPIENTRY +_mesa_CompressedTexSubImage3D_no_error(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLenum format, GLsizei imageSize, + const GLvoid *data); +extern void GLAPIENTRY _mesa_CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); extern void GLAPIENTRY +_mesa_CompressedTextureSubImage3D_no_error(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLenum format, GLsizei imageSize, + const GLvoid *data); +extern void GLAPIENTRY _mesa_CompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height,