1 /**
2  * \file teximage.h
3  * Texture images manipulation functions.
4  */
5 
6 /*
7  * Mesa 3-D graphics library
8  *
9  * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining a
12  * copy of this software and associated documentation files (the "Software"),
13  * to deal in the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15  * and/or sell copies of the Software, and to permit persons to whom the
16  * Software is furnished to do so, subject to the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be included
19  * in all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27  * OTHER DEALINGS IN THE SOFTWARE.
28  */
29 
30 
31 #ifndef TEXIMAGE_H
32 #define TEXIMAGE_H
33 
34 
35 #include "mtypes.h"
36 #include "formats.h"
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 /** Is the given value one of the 6 cube faces? */
43 static inline GLboolean
_mesa_is_cube_face(GLenum target)44 _mesa_is_cube_face(GLenum target)
45 {
46    return (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
47            target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z);
48 }
49 
50 
51 /**
52  * Return number of faces for a texture target.  This will be 6 for
53  * cube maps and 1 otherwise.
54  * NOTE: this function is not used for cube map arrays which operate
55  * more like 2D arrays than cube maps.
56  */
57 static inline GLuint
_mesa_num_tex_faces(GLenum target)58 _mesa_num_tex_faces(GLenum target)
59 {
60    switch (target) {
61    case GL_TEXTURE_CUBE_MAP:
62    case GL_PROXY_TEXTURE_CUBE_MAP:
63       return 6;
64    default:
65       return 1;
66    }
67 }
68 
69 
70 /**
71  * If the target is GL_TEXTURE_CUBE_MAP, return one of the
72  * GL_TEXTURE_CUBE_MAP_POSITIVE/NEGATIVE_X/Y/Z targets corresponding to
73  * the face parameter.
74  * Else, return target as-is.
75  */
76 static inline GLenum
_mesa_cube_face_target(GLenum target,unsigned face)77 _mesa_cube_face_target(GLenum target, unsigned face)
78 {
79    if (target == GL_TEXTURE_CUBE_MAP) {
80       assert(face < 6);
81       return GL_TEXTURE_CUBE_MAP_POSITIVE_X + face;
82    }
83    else {
84       return target;
85    }
86 }
87 
88 
89 /**
90  * For cube map faces, return a face index in [0,5].
91  * For other targets return 0;
92  */
93 static inline GLuint
_mesa_tex_target_to_face(GLenum target)94 _mesa_tex_target_to_face(GLenum target)
95 {
96    if (_mesa_is_cube_face(target))
97       return (GLuint) target - (GLuint) GL_TEXTURE_CUBE_MAP_POSITIVE_X;
98    else
99       return 0;
100 }
101 
102 
103 /** Are any of the dimensions of given texture equal to zero? */
104 static inline GLboolean
_mesa_is_zero_size_texture(const struct gl_texture_image * texImage)105 _mesa_is_zero_size_texture(const struct gl_texture_image *texImage)
106 {
107    return (texImage->Width == 0 ||
108            texImage->Height == 0 ||
109            texImage->Depth == 0);
110 }
111 
112 /** \name Internal functions */
113 /*@{*/
114 
115 extern GLboolean
116 _mesa_is_proxy_texture(GLenum target);
117 
118 extern bool
119 _mesa_is_array_texture(GLenum target);
120 
121 
122 extern void
123 _mesa_delete_texture_image( struct gl_context *ctx,
124                             struct gl_texture_image *teximage );
125 
126 
127 extern void
128 _mesa_init_teximage_fields(struct gl_context *ctx,
129                            struct gl_texture_image *img,
130                            GLsizei width, GLsizei height, GLsizei depth,
131                            GLint border, GLenum internalFormat,
132                            mesa_format format);
133 extern void
134 _mesa_init_teximage_fields_ms(struct gl_context *ctx,
135                               struct gl_texture_image *img,
136                               GLsizei width, GLsizei height, GLsizei depth,
137                               GLint border, GLenum internalFormat,
138                               mesa_format format,
139                               GLuint numSamples,
140                               GLboolean fixedSampleLocations);
141 
142 
143 extern mesa_format
144 _mesa_choose_texture_format(struct gl_context *ctx,
145                             struct gl_texture_object *texObj,
146                             GLenum target, GLint level,
147                             GLenum internalFormat, GLenum format, GLenum type);
148 
149 extern void
150 _mesa_update_fbo_texture(struct gl_context *ctx,
151                          struct gl_texture_object *texObj,
152                          GLuint face, GLuint level);
153 
154 extern void
155 _mesa_clear_texture_image(struct gl_context *ctx,
156                           struct gl_texture_image *texImage);
157 
158 
159 extern struct gl_texture_image *
160 _mesa_select_tex_image(const struct gl_texture_object *texObj,
161                        GLenum target, GLint level);
162 
163 
164 extern struct gl_texture_image *
165 _mesa_get_tex_image(struct gl_context *ctx, struct gl_texture_object *texObj,
166                     GLenum target, GLint level);
167 
168 mesa_format
169 _mesa_get_texbuffer_format(const struct gl_context *ctx, GLenum internalFormat);
170 
171 /**
172  * Return the base-level texture image for the given texture object.
173  */
174 static inline const struct gl_texture_image *
_mesa_base_tex_image(const struct gl_texture_object * texObj)175 _mesa_base_tex_image(const struct gl_texture_object *texObj)
176 {
177    return texObj->Image[0][texObj->BaseLevel];
178 }
179 
180 
181 extern GLint
182 _mesa_max_texture_levels(const struct gl_context *ctx, GLenum target);
183 
184 
185 extern GLboolean
186 _mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target,
187                           GLuint numLevels, GLint level,
188                           mesa_format format, GLuint numSamples,
189                           GLint width, GLint height, GLint depth);
190 
191 extern GLboolean
192 _mesa_target_can_be_compressed(const struct gl_context *ctx, GLenum target,
193                                GLenum intFormat, GLenum *error);
194 
195 extern GLint
196 _mesa_get_texture_dimensions(GLenum target);
197 
198 extern GLboolean
199 _mesa_tex_target_is_layered(GLenum target);
200 
201 extern GLuint
202 _mesa_get_texture_layers(const struct gl_texture_object *texObj, GLint level);
203 
204 extern GLsizei
205 _mesa_get_tex_max_num_levels(GLenum target, GLsizei width, GLsizei height,
206                              GLsizei depth);
207 
208 extern GLboolean
209 _mesa_legal_texture_dimensions(struct gl_context *ctx, GLenum target,
210                                GLint level, GLint width, GLint height,
211                                GLint depth, GLint border);
212 
213 extern mesa_format
214 _mesa_validate_texbuffer_format(const struct gl_context *ctx,
215                                 GLenum internalFormat);
216 
217 
218 bool
219 _mesa_legal_texture_base_format_for_target(struct gl_context *ctx,
220                                            GLenum target,
221                                            GLenum internalFormat);
222 
223 bool
224 _mesa_format_no_online_compression(GLenum format);
225 
226 GLboolean
227 _mesa_is_renderable_texture_format(const struct gl_context *ctx,
228                                    GLenum internalformat);
229 
230 extern void
231 _mesa_texture_sub_image(struct gl_context *ctx, GLuint dims,
232                         struct gl_texture_object *texObj,
233                         struct gl_texture_image *texImage,
234                         GLenum target, GLint level,
235                         GLint xoffset, GLint yoffset, GLint zoffset,
236                         GLsizei width, GLsizei height, GLsizei depth,
237                         GLenum format, GLenum type, const GLvoid *pixels,
238                         bool dsa);
239 
240 extern void
241 _mesa_texture_storage_ms_memory(struct gl_context *ctx, GLuint dims,
242                                 struct gl_texture_object *texObj,
243                                 struct gl_memory_object *memObj,
244                                 GLenum target, GLsizei samples,
245                                 GLenum internalFormat, GLsizei width,
246                                 GLsizei height, GLsizei depth,
247                                 GLboolean fixedSampleLocations,
248                                 GLuint64 offset, const char* func);
249 
250 bool
251 _mesa_is_cube_map_texture(GLenum target);
252 
253 /*@}*/
254 
255 
256 /** \name API entry point functions */
257 /*@{*/
258 
259 extern void GLAPIENTRY
260 _mesa_TexImage1D( GLenum target, GLint level, GLint internalformat,
261                   GLsizei width, GLint border,
262                   GLenum format, GLenum type, const GLvoid *pixels );
263 
264 extern void GLAPIENTRY
265 _mesa_TextureImage1DEXT( GLuint texture, GLenum target, GLint level,
266                          GLint internalformat, GLsizei width, GLint border,
267                          GLenum format, GLenum type, const GLvoid *pixels );
268 
269 extern void GLAPIENTRY
270 _mesa_MultiTexImage1DEXT( GLenum texture, GLenum target, GLint level,
271                           GLint internalformat, GLsizei width, GLint border,
272                           GLenum format, GLenum type, const GLvoid *pixels );
273 
274 extern void GLAPIENTRY
275 _mesa_TexImage2D( GLenum target, GLint level, GLint internalformat,
276                   GLsizei width, GLsizei height, GLint border,
277                   GLenum format, GLenum type, const GLvoid *pixels );
278 
279 extern void GLAPIENTRY
280 _mesa_TextureImage2DEXT( GLuint texture, GLenum target, GLint level,
281                          GLint internalformat, GLsizei width, GLsizei height,
282                          GLint border, GLenum format, GLenum type,
283                          const GLvoid *pixels );
284 
285 extern void GLAPIENTRY
286 _mesa_MultiTexImage2DEXT(GLenum texture, GLenum target, GLint level,
287                          GLint internalFormat, GLsizei width, GLsizei height,
288                          GLint border, GLenum format, GLenum type,
289                          const GLvoid *pixels );
290 
291 extern void GLAPIENTRY
292 _mesa_TexImage3D( GLenum target, GLint level, GLint internalformat,
293                   GLsizei width, GLsizei height, GLsizei depth, GLint border,
294                   GLenum format, GLenum type, const GLvoid *pixels );
295 
296 extern void GLAPIENTRY
297 _mesa_TextureImage3DEXT( GLuint texture, GLenum target, GLint level,
298                          GLint internalformat, GLsizei width, GLsizei height,
299                          GLsizei depth, GLint border, GLenum format,
300                          GLenum type, const GLvoid *pixels );
301 
302 extern void GLAPIENTRY
303 _mesa_TexImage3DEXT( GLenum target, GLint level, GLenum internalformat,
304                      GLsizei width, GLsizei height, GLsizei depth,
305                      GLint border, GLenum format, GLenum type,
306                      const GLvoid *pixels );
307 
308 extern void GLAPIENTRY
309 _mesa_MultiTexImage3DEXT(GLenum texture, GLenum target, GLint level,
310                          GLint internalFormat, GLsizei width, GLsizei height,
311                          GLsizei depth, GLint border, GLenum format, GLenum type,
312                          const GLvoid *pixels );
313 
314 extern void GLAPIENTRY
315 _mesa_TexImage1D_no_error(GLenum target, GLint level, GLint internalformat,
316                           GLsizei width, GLint border,
317                           GLenum format, GLenum type, const GLvoid *pixels);
318 
319 extern void GLAPIENTRY
320 _mesa_TexImage2D_no_error(GLenum target, GLint level, GLint internalformat,
321                           GLsizei width, GLsizei height, GLint border,
322                           GLenum format, GLenum type, const GLvoid *pixels);
323 
324 extern void GLAPIENTRY
325 _mesa_TexImage3D_no_error(GLenum target, GLint level, GLint internalformat,
326                           GLsizei width, GLsizei height, GLsizei depth,
327                           GLint border, GLenum format, GLenum type,
328                           const GLvoid *pixels);
329 
330 extern void GLAPIENTRY
331 _mesa_EGLImageTargetTexture2DOES( GLenum target, GLeglImageOES image );
332 
333 extern void GLAPIENTRY
334 _mesa_EGLImageTargetTexStorageEXT(GLenum target, GLeglImageOES image,
335                                   const GLint *attrib_list);
336 extern void GLAPIENTRY
337 _mesa_EGLImageTargetTextureStorageEXT(GLuint texture, GLeglImageOES image,
338                                       const GLint *attrib_list);
339 void GLAPIENTRY
340 _mesa_TexSubImage1D_no_error(GLenum target, GLint level, GLint xoffset,
341                              GLsizei width,
342                              GLenum format, GLenum type,
343                              const GLvoid *pixels);
344 
345 extern void GLAPIENTRY
346 _mesa_TexSubImage1D( GLenum target, GLint level, GLint xoffset,
347                      GLsizei width,
348                      GLenum format, GLenum type,
349                      const GLvoid *pixels );
350 
351 void GLAPIENTRY
352 _mesa_TexSubImage2D_no_error(GLenum target, GLint level,
353                              GLint xoffset, GLint yoffset,
354                              GLsizei width, GLsizei height,
355                              GLenum format, GLenum type,
356                              const GLvoid *pixels);
357 
358 extern void GLAPIENTRY
359 _mesa_TexSubImage2D( GLenum target, GLint level,
360                      GLint xoffset, GLint yoffset,
361                      GLsizei width, GLsizei height,
362                      GLenum format, GLenum type,
363                      const GLvoid *pixels );
364 
365 void GLAPIENTRY
366 _mesa_TexSubImage3D_no_error(GLenum target, GLint level,
367                              GLint xoffset, GLint yoffset, GLint zoffset,
368                              GLsizei width, GLsizei height, GLsizei depth,
369                              GLenum format, GLenum type,
370                              const GLvoid *pixels);
371 
372 extern void GLAPIENTRY
373 _mesa_TexSubImage3D( GLenum target, GLint level,
374                      GLint xoffset, GLint yoffset, GLint zoffset,
375                      GLsizei width, GLsizei height, GLsizei depth,
376                      GLenum format, GLenum type,
377                      const GLvoid *pixels );
378 
379 void GLAPIENTRY
380 _mesa_TextureSubImage1D_no_error(GLuint texture, GLint level, GLint xoffset,
381                                  GLsizei width, GLenum format, GLenum type,
382                                  const GLvoid *pixels);
383 
384 extern void GLAPIENTRY
385 _mesa_TextureSubImage1D(GLuint texture, GLint level, GLint xoffset,
386                         GLsizei width,
387                         GLenum format, GLenum type,
388                         const GLvoid *pixels);
389 
390 extern void GLAPIENTRY
391 _mesa_TextureSubImage1DEXT(GLuint texture, GLenum target, GLint level,
392                         GLint xoffset, GLsizei width,
393                         GLenum format, GLenum type,
394                         const GLvoid *pixels);
395 
396 extern void GLAPIENTRY
397 _mesa_MultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level,
398                             GLint xoffset, GLsizei width,
399                             GLenum format, GLenum type,
400                             const GLvoid *pixels);
401 
402 void GLAPIENTRY
403 _mesa_TextureSubImage2DEXT(GLuint texture, GLenum target, GLint level,
404                            GLint xoffset, GLint yoffset, GLsizei width,
405                            GLsizei height, GLenum format, GLenum type,
406                            const GLvoid *pixels);
407 
408 extern void GLAPIENTRY
409 _mesa_MultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level,
410                             GLint xoffset, GLint yoffset, GLsizei width,
411                             GLsizei height, GLenum format, GLenum type,
412                             const GLvoid *pixels);
413 
414 void GLAPIENTRY
415 _mesa_TextureSubImage2D_no_error(GLuint texture, GLint level, GLint xoffset,
416                                  GLint yoffset, GLsizei width, GLsizei height,
417                                  GLenum format, GLenum type,
418                                  const GLvoid *pixels);
419 
420 extern void GLAPIENTRY
421 _mesa_TextureSubImage2D(GLuint texture, GLint level,
422                         GLint xoffset, GLint yoffset,
423                         GLsizei width, GLsizei height,
424                         GLenum format, GLenum type,
425                         const GLvoid *pixels);
426 
427 void GLAPIENTRY
428 _mesa_TextureSubImage3D_no_error(GLuint texture, GLint level, GLint xoffset,
429                                  GLint yoffset, GLint zoffset, GLsizei width,
430                                  GLsizei height, GLsizei depth, GLenum format,
431                                  GLenum type, const GLvoid *pixels);
432 
433 extern void GLAPIENTRY
434 _mesa_TextureSubImage3D(GLuint texture, GLint level,
435                         GLint xoffset, GLint yoffset, GLint zoffset,
436                         GLsizei width, GLsizei height, GLsizei depth,
437                         GLenum format, GLenum type,
438                         const GLvoid *pixels);
439 
440 extern void GLAPIENTRY
441 _mesa_TextureSubImage3DEXT(GLuint texture, GLenum target,
442                         GLint level, GLint xoffset, GLint yoffset,
443                         GLint zoffset, GLsizei width, GLsizei height,
444                         GLsizei depth, GLenum format, GLenum type,
445                         const GLvoid *pixels);
446 
447 extern void GLAPIENTRY
448 _mesa_MultiTexSubImage3DEXT(GLenum texunit, GLenum target,
449                             GLint level, GLint xoffset, GLint yoffset,
450                             GLint zoffset, GLsizei width, GLsizei height,
451                             GLsizei depth, GLenum format, GLenum type,
452                             const GLvoid *pixels);
453 
454 extern void GLAPIENTRY
455 _mesa_CopyTexImage1D(GLenum target, GLint level, GLenum internalformat,
456                      GLint x, GLint y, GLsizei width, GLint border);
457 
458 extern void GLAPIENTRY
459 _mesa_CopyMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level,
460                              GLenum internalformat, GLint x, GLint y,
461                              GLsizei width, GLint border);
462 
463 extern void GLAPIENTRY
464 _mesa_CopyTexImage2D( GLenum target, GLint level,
465                       GLenum internalformat, GLint x, GLint y,
466                       GLsizei width, GLsizei height, GLint border );
467 
468 extern void GLAPIENTRY
469 _mesa_CopyMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level,
470                              GLenum internalformat, GLint x, GLint y,
471                              GLsizei width, GLsizei hright, GLint border);
472 
473 extern void GLAPIENTRY
474 _mesa_CopyTextureImage1DEXT( GLuint texture, GLenum target, GLint level,
475                              GLenum internalformat, GLint x, GLint y,
476                              GLsizei width, GLint border);
477 
478 extern void GLAPIENTRY
479 _mesa_CopyTextureImage2DEXT( GLuint texture, GLenum target, GLint level,
480                              GLenum internalformat, GLint x, GLint y,
481                              GLsizei width, GLsizei height, GLint border );
482 
483 extern void GLAPIENTRY
484 _mesa_CopyTexImage1D_no_error(GLenum target, GLint level, GLenum internalformat,
485                               GLint x, GLint y, GLsizei width, GLint border);
486 
487 
488 extern void GLAPIENTRY
489 _mesa_CopyTexImage2D_no_error(GLenum target, GLint level, GLenum internalformat,
490                               GLint x, GLint y, GLsizei width, GLsizei height,
491                               GLint border );
492 
493 
494 extern void GLAPIENTRY
495 _mesa_CopyTexSubImage1D( GLenum target, GLint level, GLint xoffset,
496                          GLint x, GLint y, GLsizei width );
497 
498 
499 extern void GLAPIENTRY
500 _mesa_CopyTexSubImage2D( GLenum target, GLint level,
501                          GLint xoffset, GLint yoffset,
502                          GLint x, GLint y, GLsizei width, GLsizei height );
503 
504 
505 extern void GLAPIENTRY
506 _mesa_CopyTexSubImage3D( GLenum target, GLint level,
507                          GLint xoffset, GLint yoffset, GLint zoffset,
508                          GLint x, GLint y, GLsizei width, GLsizei height );
509 
510 extern void GLAPIENTRY
511 _mesa_CopyTextureSubImage1D(GLuint texture, GLint level,
512                             GLint xoffset, GLint x, GLint y, GLsizei width);
513 
514 extern void GLAPIENTRY
515 _mesa_CopyTextureSubImage1DEXT(GLuint texture, GLenum target,
516                                GLint level, GLint xoffset, GLint x, GLint y,
517                                GLsizei width);
518 
519 extern void GLAPIENTRY
520 _mesa_CopyMultiTexSubImage1DEXT(GLenum texunit, GLenum target,
521                                 GLint level, GLint xoffset, GLint x, GLint y,
522                                 GLsizei width);
523 
524 extern void GLAPIENTRY
525 _mesa_CopyTextureSubImage2D(GLuint texture, GLint level,
526                             GLint xoffset, GLint yoffset,
527                             GLint x, GLint y,
528                             GLsizei width, GLsizei height);
529 
530 extern void GLAPIENTRY
531 _mesa_CopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level,
532                                GLint xoffset, GLint yoffset,
533                                GLint x, GLint y,
534                                GLsizei width, GLsizei height);
535 
536 extern void GLAPIENTRY
537 _mesa_CopyMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level,
538                                 GLint xoffset, GLint yoffset,
539                                 GLint x, GLint y,
540                                 GLsizei width, GLsizei height);
541 
542 extern void GLAPIENTRY
543 _mesa_CopyTextureSubImage3D(GLuint texture, GLint level,
544                             GLint xoffset, GLint yoffset, GLint zoffset,
545                             GLint x, GLint y,
546                             GLsizei width, GLsizei height);
547 
548 extern void GLAPIENTRY
549 _mesa_CopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level,
550                                GLint xoffset, GLint yoffset, GLint zoffset,
551                                GLint x, GLint y,
552                                GLsizei width, GLsizei height);
553 
554 extern void GLAPIENTRY
555 _mesa_CopyMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level,
556                                 GLint xoffset, GLint yoffset, GLint zoffset,
557                                 GLint x, GLint y,
558                                 GLsizei width, GLsizei height);
559 
560 extern void GLAPIENTRY
561 _mesa_CopyTexSubImage1D_no_error(GLenum target, GLint level, GLint xoffset,
562                                  GLint x, GLint y, GLsizei width );
563 
564 extern void GLAPIENTRY
565 _mesa_CopyTexSubImage2D_no_error(GLenum target, GLint level, GLint xoffset,
566                                  GLint yoffset, GLint x, GLint y, GLsizei width,
567                                  GLsizei height);
568 
569 extern void GLAPIENTRY
570 _mesa_CopyTexSubImage3D_no_error(GLenum target, GLint level, GLint xoffset,
571                                  GLint yoffset, GLint zoffset, GLint x, GLint y,
572                                  GLsizei width, GLsizei height);
573 
574 extern void GLAPIENTRY
575 _mesa_CopyTextureSubImage1D_no_error(GLuint texture, GLint level, GLint xoffset,
576                                      GLint x, GLint y, GLsizei width);
577 
578 extern void GLAPIENTRY
579 _mesa_CopyTextureSubImage2D_no_error(GLuint texture, GLint level, GLint xoffset,
580                                      GLint yoffset, GLint x, GLint y,
581                                      GLsizei width, GLsizei height);
582 
583 extern void GLAPIENTRY
584 _mesa_CopyTextureSubImage3D_no_error(GLuint texture, GLint level, GLint xoffset,
585                                      GLint yoffset, GLint zoffset, GLint x,
586                                      GLint y, GLsizei width, GLsizei height);
587 
588 extern void GLAPIENTRY
589 _mesa_ClearTexSubImage( GLuint texture, GLint level,
590                         GLint xoffset, GLint yoffset, GLint zoffset,
591                         GLsizei width, GLsizei height, GLsizei depth,
592                         GLenum format, GLenum type, const void *data );
593 
594 extern void GLAPIENTRY
595 _mesa_ClearTexImage( GLuint texture, GLint level,
596                      GLenum format, GLenum type, const void *data );
597 
598 extern void GLAPIENTRY
599 _mesa_CompressedTexImage1D(GLenum target, GLint level,
600                               GLenum internalformat, GLsizei width,
601                               GLint border, GLsizei imageSize,
602                               const GLvoid *data);
603 
604 extern void GLAPIENTRY
605 _mesa_CompressedTextureImage1DEXT(GLuint texture, GLenum target, GLint level,
606                                   GLenum internalFormat, GLsizei width,
607                                   GLint border, GLsizei imageSize,
608                                   const GLvoid *pixels);
609 
610 extern void GLAPIENTRY
611 _mesa_CompressedMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level,
612                                    GLenum internalFormat, GLsizei width,
613                                    GLint border, GLsizei imageSize,
614                                    const GLvoid *pixels);
615 
616 extern void GLAPIENTRY
617 _mesa_CompressedTexImage2D(GLenum target, GLint level,
618                               GLenum internalformat, GLsizei width,
619                               GLsizei height, GLint border, GLsizei imageSize,
620                               const GLvoid *data);
621 
622 extern void GLAPIENTRY
623 _mesa_CompressedTextureImage2DEXT(GLuint texture, GLenum target, GLint level,
624                                   GLenum internalFormat, GLsizei width,
625                                   GLsizei height, GLint border, GLsizei imageSize,
626                                   const GLvoid *pixels);
627 
628 extern void GLAPIENTRY
629 _mesa_CompressedMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level,
630                                    GLenum internalFormat, GLsizei width,
631                                    GLsizei height, GLint border, GLsizei imageSize,
632                                    const GLvoid *pixels);
633 
634 extern void GLAPIENTRY
635 _mesa_CompressedTexImage3D(GLenum target, GLint level,
636                               GLenum internalformat, GLsizei width,
637                               GLsizei height, GLsizei depth, GLint border,
638                               GLsizei imageSize, const GLvoid *data);
639 
640 extern void GLAPIENTRY
641 _mesa_CompressedTextureImage3DEXT(GLuint texture, GLenum target, GLint level,
642                                   GLenum internalFormat, GLsizei width,
643                                   GLsizei height, GLsizei depth, GLint border,
644                                   GLsizei imageSize, const GLvoid *pixels);
645 
646 extern void GLAPIENTRY
647 _mesa_CompressedMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level,
648                                    GLenum internalFormat, GLsizei width,
649                                    GLsizei height, GLsizei depth, GLint border,
650                                    GLsizei imageSize, const GLvoid *pixels);
651 
652 
653 extern void GLAPIENTRY
654 _mesa_CompressedTexImage1D_no_error(GLenum target, GLint level,
655                                     GLenum internalformat, GLsizei width,
656                                     GLint border, GLsizei imageSize,
657                                     const GLvoid *data);
658 
659 extern void GLAPIENTRY
660 _mesa_CompressedTexImage2D_no_error(GLenum target, GLint level,
661                                     GLenum internalformat, GLsizei width,
662                                     GLsizei height, GLint border,
663                                     GLsizei imageSize, const GLvoid *data);
664 
665 extern void GLAPIENTRY
666 _mesa_CompressedTexImage3D_no_error(GLenum target, GLint level,
667                                     GLenum internalformat, GLsizei width,
668                                     GLsizei height, GLsizei depth, GLint border,
669                                     GLsizei imageSize, const GLvoid *data);
670 
671 
672 extern void GLAPIENTRY
673 _mesa_CompressedTexSubImage1D_no_error(GLenum target, GLint level,
674                                        GLint xoffset, GLsizei width,
675                                        GLenum format, GLsizei imageSize,
676                                        const GLvoid *data);
677 extern void GLAPIENTRY
678 _mesa_CompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset,
679                                  GLsizei width, GLenum format,
680                                  GLsizei imageSize, const GLvoid *data);
681 
682 extern void GLAPIENTRY
683 _mesa_CompressedTextureSubImage1D_no_error(GLuint texture, GLint level,
684                                            GLint xoffset, GLsizei width,
685                                            GLenum format, GLsizei imageSize,
686                                            const GLvoid *data);
687 extern void GLAPIENTRY
688 _mesa_CompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset,
689                                   GLsizei width, GLenum format,
690                                   GLsizei imageSize, const GLvoid *data);
691 
692 extern void GLAPIENTRY
693 _mesa_CompressedTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level,
694                                      GLint xoffset, GLsizei width, GLenum format,
695                                      GLsizei imageSize, const GLvoid *data);
696 
697 extern void GLAPIENTRY
698 _mesa_CompressedMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level,
699                                       GLint xoffset, GLsizei width, GLenum format,
700                                       GLsizei imageSize, const GLvoid *data);
701 
702 
703 void GLAPIENTRY
704 _mesa_CompressedTextureSubImage2DEXT(GLuint texture, GLenum target,
705                                      GLint level, GLint xoffset,
706                                      GLint yoffset, GLsizei width,
707                                      GLsizei height, GLenum format,
708                                      GLsizei imageSize, const GLvoid *data);
709 
710 extern void GLAPIENTRY
711 _mesa_CompressedMultiTexSubImage2DEXT(GLenum texunit, GLenum target,
712                                       GLint level, GLint xoffset,
713                                       GLint yoffset, GLsizei width,
714                                       GLsizei height, GLenum format,
715                                       GLsizei imageSize, const GLvoid *data);
716 
717 extern void GLAPIENTRY
718 _mesa_CompressedTextureSubImage3DEXT(GLuint texture, GLenum target,
719                                      GLint level, GLint xoffset,
720                                      GLint yoffset, GLint zoffset,
721                                      GLsizei width, GLsizei height, GLsizei depth,
722                                      GLenum format, GLsizei imageSize,
723                                      const GLvoid *data);
724 
725 extern void GLAPIENTRY
726 _mesa_CompressedMultiTexSubImage3DEXT(GLenum texunit, GLenum target,
727                                       GLint level, GLint xoffset,
728                                       GLint yoffset, GLint zoffset,
729                                       GLsizei width, GLsizei height, GLsizei depth,
730                                       GLenum format, GLsizei imageSize,
731                                       const GLvoid *data);
732 
733 extern void GLAPIENTRY
734 _mesa_CompressedTexSubImage2D_no_error(GLenum target, GLint level,
735                                        GLint xoffset, GLint yoffset,
736                                        GLsizei width, GLsizei height,
737                                        GLenum format, GLsizei imageSize,
738                                        const GLvoid *data);
739 extern void GLAPIENTRY
740 _mesa_CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset,
741                                  GLint yoffset, GLsizei width, GLsizei height,
742                                  GLenum format, GLsizei imageSize,
743                                  const GLvoid *data);
744 
745 extern void GLAPIENTRY
746 _mesa_CompressedTextureSubImage2D_no_error(GLuint texture, GLint level,
747                                            GLint xoffset, GLint yoffset,
748                                            GLsizei width, GLsizei height,
749                                            GLenum format, GLsizei imageSize,
750                                            const GLvoid *data);
751 extern void GLAPIENTRY
752 _mesa_CompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset,
753                                   GLint yoffset,
754                                   GLsizei width, GLsizei height,
755                                   GLenum format, GLsizei imageSize,
756                                   const GLvoid *data);
757 
758 extern void GLAPIENTRY
759 _mesa_CompressedTexSubImage3D_no_error(GLenum target, GLint level,
760                                        GLint xoffset, GLint yoffset,
761                                        GLint zoffset, GLsizei width,
762                                        GLsizei height, GLsizei depth,
763                                        GLenum format, GLsizei imageSize,
764                                        const GLvoid *data);
765 extern void GLAPIENTRY
766 _mesa_CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset,
767                                  GLint yoffset, GLint zoffset, GLsizei width,
768                                  GLsizei height, GLsizei depth, GLenum format,
769                                  GLsizei imageSize, const GLvoid *data);
770 
771 extern void GLAPIENTRY
772 _mesa_CompressedTextureSubImage3D_no_error(GLuint texture, GLint level,
773                                            GLint xoffset, GLint yoffset,
774                                            GLint zoffset, GLsizei width,
775                                            GLsizei height, GLsizei depth,
776                                            GLenum format, GLsizei imageSize,
777                                            const GLvoid *data);
778 extern void GLAPIENTRY
779 _mesa_CompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset,
780                                   GLint yoffset, GLint zoffset,
781                                   GLsizei width, GLsizei height,
782                                   GLsizei depth,
783                                   GLenum format, GLsizei imageSize,
784                                   const GLvoid *data);
785 
786 extern void GLAPIENTRY
787 _mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer);
788 
789 extern void GLAPIENTRY
790 _mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer,
791                      GLintptr offset, GLsizeiptr size);
792 
793 extern void GLAPIENTRY
794 _mesa_TextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalFormat,
795                             GLuint buffer, GLintptr offset, GLsizeiptr size);
796 
797 extern void GLAPIENTRY
798 _mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer);
799 
800 extern void GLAPIENTRY
801 _mesa_TextureBufferEXT(GLuint texture, GLenum target, GLenum internalFormat,
802                        GLuint buffer);
803 
804 extern void GLAPIENTRY
805 _mesa_MultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalFormat,
806                         GLuint buffer);
807 
808 extern void GLAPIENTRY
809 _mesa_TextureBufferRange(GLuint texture, GLenum internalFormat, GLuint buffer,
810                          GLintptr offset, GLsizeiptr size);
811 
812 
813 extern void GLAPIENTRY
814 _mesa_TexImage2DMultisample(GLenum target, GLsizei samples,
815                             GLenum internalformat, GLsizei width,
816                             GLsizei height, GLboolean fixedsamplelocations);
817 
818 extern void GLAPIENTRY
819 _mesa_TexImage3DMultisample(GLenum target, GLsizei samples,
820                             GLenum internalformat, GLsizei width,
821                             GLsizei height, GLsizei depth,
822                             GLboolean fixedsamplelocations);
823 
824 extern void GLAPIENTRY
825 _mesa_TexStorage2DMultisample(GLenum target, GLsizei samples,
826                               GLenum internalformat, GLsizei width,
827                               GLsizei height, GLboolean fixedsamplelocations);
828 
829 extern void GLAPIENTRY
830 _mesa_TexStorage3DMultisample(GLenum target, GLsizei samples,
831                               GLenum internalformat, GLsizei width,
832                               GLsizei height, GLsizei depth,
833                               GLboolean fixedsamplelocations);
834 
835 void GLAPIENTRY
836 _mesa_TextureStorage2DMultisample(GLuint texture, GLsizei samples,
837                                   GLenum internalformat, GLsizei width,
838                                   GLsizei height,
839                                   GLboolean fixedsamplelocations);
840 
841 void GLAPIENTRY
842 _mesa_TextureStorage3DMultisample(GLuint texture, GLsizei samples,
843                                   GLenum internalformat, GLsizei width,
844                                   GLsizei height, GLsizei depth,
845                                   GLboolean fixedsamplelocations);
846 
847 extern void GLAPIENTRY
848 _mesa_TextureStorage2DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples,
849                                      GLenum internalformat, GLsizei width,
850                                      GLsizei height, GLboolean fixedsamplelocations);
851 
852 extern void GLAPIENTRY
853 _mesa_TextureStorage3DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples,
854                                      GLenum internalformat, GLsizei width,
855                                      GLsizei height, GLsizei depth,
856                                      GLboolean fixedsamplelocations);
857 
858 /*@}*/
859 
860 #ifdef __cplusplus
861 }
862 #endif
863 
864 #endif
865