meta.h revision 01e04c3f
1/* 2 * Mesa 3-D graphics library 3 * 4 * Copyright (C) 2009 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 META_H 27#define META_H 28 29#include "main/mtypes.h" 30 31/** 32 * \name Flags for meta operations 33 * \{ 34 * 35 * These flags are passed to _mesa_meta_begin(). 36 */ 37#define MESA_META_ALL ~0x0 38#define MESA_META_ALPHA_TEST 0x1 39#define MESA_META_BLEND 0x2 /**< includes logicop */ 40#define MESA_META_COLOR_MASK 0x4 41#define MESA_META_DEPTH_TEST 0x8 42#define MESA_META_FOG 0x10 43#define MESA_META_PIXEL_STORE 0x20 44#define MESA_META_PIXEL_TRANSFER 0x40 45#define MESA_META_RASTERIZATION 0x80 46#define MESA_META_SCISSOR 0x100 47#define MESA_META_SHADER 0x200 48#define MESA_META_STENCIL_TEST 0x400 49#define MESA_META_TRANSFORM 0x800 /**< modelview/projection matrix state */ 50#define MESA_META_TEXTURE 0x1000 51#define MESA_META_VERTEX 0x2000 52#define MESA_META_VIEWPORT 0x4000 53#define MESA_META_CLAMP_FRAGMENT_COLOR 0x8000 54#define MESA_META_CLAMP_VERTEX_COLOR 0x10000 55#define MESA_META_CONDITIONAL_RENDER 0x20000 56#define MESA_META_CLIP 0x40000 57#define MESA_META_SELECT_FEEDBACK 0x80000 58#define MESA_META_MULTISAMPLE 0x100000 59#define MESA_META_FRAMEBUFFER_SRGB 0x200000 60#define MESA_META_OCCLUSION_QUERY 0x400000 61#define MESA_META_DRAW_BUFFERS 0x800000 62#define MESA_META_DITHER 0x1000000 63/**\}*/ 64 65/** 66 * State which we may save/restore across meta ops. 67 * XXX this may be incomplete... 68 */ 69struct save_state 70{ 71 GLbitfield SavedState; /**< bitmask of MESA_META_* flags */ 72 73 /* Always saved/restored with meta. */ 74 gl_api API; 75 uint8_t ExtensionsVersion; 76 77 /** MESA_META_CLEAR (and others?) */ 78 struct gl_query_object *CurrentOcclusionObject; 79 80 /** MESA_META_ALPHA_TEST */ 81 GLboolean AlphaEnabled; 82 GLenum AlphaFunc; 83 GLclampf AlphaRef; 84 85 /** MESA_META_BLEND */ 86 GLbitfield BlendEnabled; 87 GLboolean ColorLogicOpEnabled; 88 89 /** MESA_META_DITHER */ 90 GLboolean DitherFlag; 91 92 /** MESA_META_COLOR_MASK */ 93 GLbitfield ColorMask; 94 95 /** MESA_META_DEPTH_TEST */ 96 struct gl_depthbuffer_attrib Depth; 97 98 /** MESA_META_FOG */ 99 GLboolean Fog; 100 101 /** MESA_META_PIXEL_STORE */ 102 struct gl_pixelstore_attrib Pack, Unpack; 103 104 /** MESA_META_PIXEL_TRANSFER */ 105 GLfloat RedBias, RedScale; 106 GLfloat GreenBias, GreenScale; 107 GLfloat BlueBias, BlueScale; 108 GLfloat AlphaBias, AlphaScale; 109 GLfloat DepthBias, DepthScale; 110 GLboolean MapColorFlag; 111 112 /** MESA_META_RASTERIZATION */ 113 GLenum FrontPolygonMode, BackPolygonMode; 114 GLboolean PolygonOffset; 115 GLboolean PolygonSmooth; 116 GLboolean PolygonStipple; 117 GLboolean PolygonCull; 118 119 /** MESA_META_SCISSOR */ 120 struct gl_scissor_attrib Scissor; 121 122 /** MESA_META_SHADER */ 123 GLboolean VertexProgramEnabled; 124 struct gl_program *VertexProgram; 125 GLboolean FragmentProgramEnabled; 126 struct gl_program *FragmentProgram; 127 GLboolean ATIFragmentShaderEnabled; 128 struct gl_program *Program[MESA_SHADER_STAGES]; 129 struct gl_shader_program *ActiveShader; 130 struct gl_pipeline_object *Pipeline; 131 132 /** MESA_META_STENCIL_TEST */ 133 struct gl_stencil_attrib Stencil; 134 135 /** MESA_META_TRANSFORM */ 136 GLenum MatrixMode; 137 GLfloat ModelviewMatrix[16]; 138 GLfloat ProjectionMatrix[16]; 139 GLfloat TextureMatrix[16]; 140 /** GL_ARB_clip_control */ 141 GLenum ClipOrigin; /**< GL_LOWER_LEFT or GL_UPPER_LEFT */ 142 GLenum ClipDepthMode; /**< GL_NEGATIVE_ONE_TO_ONE or GL_ZERO_TO_ONE */ 143 144 /** MESA_META_CLIP */ 145 GLbitfield ClipPlanesEnabled; 146 147 /** MESA_META_TEXTURE */ 148 GLuint ActiveUnit; 149 /** for unit[0] only */ 150 struct gl_texture_object *CurrentTexture[NUM_TEXTURE_TARGETS]; 151 /** mask of TEXTURE_2D_BIT, etc */ 152 GLbitfield TexEnabled[MAX_TEXTURE_UNITS]; 153 GLbitfield TexGenEnabled[MAX_TEXTURE_UNITS]; 154 GLuint EnvMode; /* unit[0] only */ 155 156 /** MESA_META_VERTEX */ 157 struct gl_vertex_array_object *VAO; 158 159 /** MESA_META_VIEWPORT */ 160 GLfloat ViewportX, ViewportY, ViewportW, ViewportH; 161 GLclampf DepthNear, DepthFar; 162 163 /** MESA_META_CLAMP_FRAGMENT_COLOR */ 164 GLenum ClampFragmentColor; 165 166 /** MESA_META_CLAMP_VERTEX_COLOR */ 167 GLenum ClampVertexColor; 168 169 /** MESA_META_CONDITIONAL_RENDER */ 170 struct gl_query_object *CondRenderQuery; 171 GLenum CondRenderMode; 172 173 /** MESA_META_SELECT_FEEDBACK */ 174 GLenum RenderMode; 175 struct gl_selection Select; 176 struct gl_feedback Feedback; 177 178 /** MESA_META_MULTISAMPLE */ 179 struct gl_multisample_attrib Multisample; 180 181 /** MESA_META_FRAMEBUFFER_SRGB */ 182 GLboolean sRGBEnabled; 183 184 /** Miscellaneous (always disabled) */ 185 GLboolean Lighting; 186 GLboolean RasterDiscard; 187 GLboolean TransformFeedbackNeedsResume; 188 189 struct gl_framebuffer *DrawBuffer; 190 struct gl_framebuffer *ReadBuffer; 191 192 /** MESA_META_DRAW_BUFFERS */ 193 GLenum16 ColorDrawBuffers[MAX_DRAW_BUFFERS]; 194}; 195 196/** 197 * Temporary texture used for glBlitFramebuffer, glDrawPixels, etc. 198 * This is currently shared by all the meta ops. But we could create a 199 * separate one for each of glDrawPixel, glBlitFramebuffer, glCopyPixels, etc. 200 */ 201struct temp_texture 202{ 203 struct gl_texture_object *tex_obj; 204 GLenum Target; /**< GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE */ 205 GLsizei MinSize; /**< Min texture size to allocate */ 206 GLsizei MaxSize; /**< Max possible texture size */ 207 GLboolean NPOT; /**< Non-power of two size OK? */ 208 GLsizei Width, Height; /**< Current texture size */ 209 GLenum IntFormat; 210 GLfloat Sright, Ttop; /**< right, top texcoords */ 211}; 212 213/** 214 * State for GLSL texture sampler which is used to generate fragment 215 * shader in _mesa_meta_generate_mipmap(). 216 */ 217struct blit_shader { 218 const char *type; 219 const char *func; 220 const char *texcoords; 221 struct gl_shader_program *shader_prog; 222}; 223 224/** 225 * Table of all sampler types and shaders for accessing them. 226 */ 227struct blit_shader_table { 228 struct blit_shader sampler_1d; 229 struct blit_shader sampler_2d; 230 struct blit_shader sampler_3d; 231 struct blit_shader sampler_rect; 232 struct blit_shader sampler_cubemap; 233 struct blit_shader sampler_1d_array; 234 struct blit_shader sampler_2d_array; 235 struct blit_shader sampler_cubemap_array; 236}; 237 238/** 239 * Indices in the blit_state->msaa_shaders[] array 240 * 241 * Note that setup_glsl_msaa_blit_shader() assumes that the _INT enums are five 242 * more than the corresponding non-_INT versions and _UINT are five beyond that. 243 */ 244enum blit_msaa_shader { 245 BLIT_1X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE, 246 BLIT_2X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE, 247 BLIT_4X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE, 248 BLIT_8X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE, 249 BLIT_16X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE, 250 BLIT_1X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_INT, 251 BLIT_2X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_INT, 252 BLIT_4X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_INT, 253 BLIT_8X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_INT, 254 BLIT_16X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_INT, 255 BLIT_1X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_UINT, 256 BLIT_2X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_UINT, 257 BLIT_4X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_UINT, 258 BLIT_8X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_UINT, 259 BLIT_16X_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_UINT, 260 BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY, 261 BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY_INT, 262 BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY_UINT, 263 BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_RESOLVE, 264 BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_COPY, 265 BLIT_1X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE, 266 BLIT_2X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE, 267 BLIT_4X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE, 268 BLIT_8X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE, 269 BLIT_16X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE, 270 BLIT_1X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_INT, 271 BLIT_2X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_INT, 272 BLIT_4X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_INT, 273 BLIT_8X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_INT, 274 BLIT_16X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_INT, 275 BLIT_1X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_UINT, 276 BLIT_2X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_UINT, 277 BLIT_4X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_UINT, 278 BLIT_8X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_UINT, 279 BLIT_16X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_RESOLVE_UINT, 280 BLIT_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_COPY, 281 BLIT_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_COPY_INT, 282 BLIT_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_COPY_UINT, 283 BLIT_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_DEPTH_RESOLVE, 284 BLIT_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_DEPTH_COPY, 285 BLIT_2X_MSAA_SHADER_2D_MULTISAMPLE_SCALED_RESOLVE, 286 BLIT_4X_MSAA_SHADER_2D_MULTISAMPLE_SCALED_RESOLVE, 287 BLIT_8X_MSAA_SHADER_2D_MULTISAMPLE_SCALED_RESOLVE, 288 BLIT_16X_MSAA_SHADER_2D_MULTISAMPLE_SCALED_RESOLVE, 289 BLIT_2X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_SCALED_RESOLVE, 290 BLIT_4X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_SCALED_RESOLVE, 291 BLIT_8X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_SCALED_RESOLVE, 292 BLIT_16X_MSAA_SHADER_2D_MULTISAMPLE_ARRAY_SCALED_RESOLVE, 293 BLIT_MSAA_SHADER_COUNT, 294}; 295 296/** 297 * State for glBlitFramebufer() 298 */ 299struct blit_state 300{ 301 GLuint VAO; 302 struct gl_buffer_object *buf_obj; 303 struct blit_shader_table shaders_with_depth; 304 struct blit_shader_table shaders_without_depth; 305 struct gl_shader_program *msaa_shaders[BLIT_MSAA_SHADER_COUNT]; 306 struct temp_texture depthTex; 307 bool no_ctsi_fallback; 308}; 309 310struct fb_tex_blit_state 311{ 312 GLint baseLevelSave, maxLevelSave; 313 struct gl_sampler_object *samp_obj; 314 struct gl_sampler_object *samp_obj_save; 315 struct gl_texture_object *tex_obj; 316 struct gl_texture_object *temp_tex_obj; 317 GLuint stencilSamplingSave; 318}; 319 320 321/** 322 * State for glClear() 323 */ 324struct clear_state 325{ 326 GLuint VAO; 327 struct gl_buffer_object *buf_obj; 328 struct gl_shader_program *ShaderProg; 329 struct gl_shader_program *IntegerShaderProg; 330}; 331 332 333/** 334 * State for glCopyPixels() 335 */ 336struct copypix_state 337{ 338 GLuint VAO; 339 struct gl_buffer_object *buf_obj; 340}; 341 342 343/** 344 * State for glDrawPixels() 345 */ 346struct drawpix_state 347{ 348 GLuint VAO; 349 struct gl_buffer_object *buf_obj; 350 351 GLuint StencilFP; /**< Fragment program for drawing stencil images */ 352 GLuint DepthFP; /**< Fragment program for drawing depth images */ 353}; 354 355 356/** 357 * State for glBitmap() 358 */ 359struct bitmap_state 360{ 361 GLuint VAO; 362 struct gl_buffer_object *buf_obj; 363 struct temp_texture Tex; /**< separate texture from other meta ops */ 364}; 365 366/** 367 * State for _mesa_meta_generate_mipmap() 368 */ 369struct gen_mipmap_state 370{ 371 GLuint VAO; 372 struct gl_buffer_object *buf_obj; 373 struct gl_framebuffer *fb; 374 struct gl_sampler_object *samp_obj; 375 376 struct blit_shader_table shaders; 377}; 378 379/** 380 * One of the FBO states for decompress_state. There will be one for each 381 * required renderbuffer format. 382 */ 383struct decompress_fbo_state 384{ 385 struct gl_renderbuffer *rb; 386 struct gl_framebuffer *fb; 387 GLint Width, Height; 388}; 389 390/** 391 * State for texture decompression 392 */ 393struct decompress_state 394{ 395 GLuint VAO; 396 struct decompress_fbo_state byteFBO, floatFBO; 397 struct gl_buffer_object *buf_obj; 398 struct gl_sampler_object *samp_obj; 399 400 struct blit_shader_table shaders; 401}; 402 403/** 404 * State for glDrawTex() 405 */ 406struct drawtex_state 407{ 408 GLuint VAO; 409 struct gl_buffer_object *buf_obj; 410}; 411 412#define MAX_META_OPS_DEPTH 8 413/** 414 * All per-context meta state. 415 */ 416struct gl_meta_state 417{ 418 /** Stack of state saved during meta-ops */ 419 struct save_state Save[MAX_META_OPS_DEPTH]; 420 /** Save stack depth */ 421 GLuint SaveStackDepth; 422 423 struct temp_texture TempTex; 424 425 struct blit_state Blit; /**< For _mesa_meta_BlitFramebuffer() */ 426 struct clear_state Clear; /**< For _mesa_meta_Clear() */ 427 struct copypix_state CopyPix; /**< For _mesa_meta_CopyPixels() */ 428 struct drawpix_state DrawPix; /**< For _mesa_meta_DrawPixels() */ 429 struct bitmap_state Bitmap; /**< For _mesa_meta_Bitmap() */ 430 struct gen_mipmap_state Mipmap; /**< For _mesa_meta_GenerateMipmap() */ 431 struct decompress_state Decompress; /**< For texture decompression */ 432 struct drawtex_state DrawTex; /**< For _mesa_meta_DrawTex() */ 433}; 434 435struct vertex { 436 GLfloat x, y, z, tex[4]; 437 GLfloat r, g, b, a; 438}; 439 440extern void 441_mesa_meta_init(struct gl_context *ctx); 442 443extern void 444_mesa_meta_free(struct gl_context *ctx); 445 446extern void 447_mesa_meta_begin(struct gl_context *ctx, GLbitfield state); 448 449extern void 450_mesa_meta_end(struct gl_context *ctx); 451 452static inline bool 453_mesa_meta_in_progress(struct gl_context *ctx) 454{ 455 return ctx->Meta->SaveStackDepth != 0; 456} 457 458extern void 459_mesa_meta_fb_tex_blit_begin(struct gl_context *ctx, 460 struct fb_tex_blit_state *blit); 461 462extern void 463_mesa_meta_fb_tex_blit_end(struct gl_context *ctx, GLenum target, 464 struct fb_tex_blit_state *blit); 465 466extern struct gl_texture_object * 467_mesa_meta_texture_object_from_renderbuffer(struct gl_context *ctx, 468 struct gl_renderbuffer *rb); 469 470struct gl_sampler_object * 471_mesa_meta_setup_sampler(struct gl_context *ctx, 472 struct gl_texture_object *texObj, 473 GLenum target, GLenum filter, GLuint srcLevel); 474 475extern GLbitfield 476_mesa_meta_BlitFramebuffer(struct gl_context *ctx, 477 const struct gl_framebuffer *readFb, 478 const struct gl_framebuffer *drawFb, 479 GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, 480 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, 481 GLbitfield mask, GLenum filter); 482 483extern void 484_mesa_meta_and_swrast_BlitFramebuffer(struct gl_context *ctx, 485 struct gl_framebuffer *readFb, 486 struct gl_framebuffer *drawFb, 487 GLint srcX0, GLint srcY0, 488 GLint srcX1, GLint srcY1, 489 GLint dstX0, GLint dstY0, 490 GLint dstX1, GLint dstY1, 491 GLbitfield mask, GLenum filter); 492 493extern void 494_mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers); 495 496extern void 497_mesa_meta_glsl_Clear(struct gl_context *ctx, GLbitfield buffers); 498 499extern void 500_mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, 501 GLsizei width, GLsizei height, 502 GLint dstx, GLint dsty, GLenum type); 503 504extern void 505_mesa_meta_DrawPixels(struct gl_context *ctx, 506 GLint x, GLint y, GLsizei width, GLsizei height, 507 GLenum format, GLenum type, 508 const struct gl_pixelstore_attrib *unpack, 509 const GLvoid *pixels); 510 511extern void 512_mesa_meta_Bitmap(struct gl_context *ctx, 513 GLint x, GLint y, GLsizei width, GLsizei height, 514 const struct gl_pixelstore_attrib *unpack, 515 const GLubyte *bitmap); 516 517extern void 518_mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, 519 struct gl_texture_object *texObj); 520 521extern void 522_mesa_meta_CopyTexSubImage(struct gl_context *ctx, GLuint dims, 523 struct gl_texture_image *texImage, 524 GLint xoffset, GLint yoffset, GLint slice, 525 struct gl_renderbuffer *rb, 526 GLint x, GLint y, 527 GLsizei width, GLsizei height); 528 529extern void 530_mesa_meta_ClearTexSubImage(struct gl_context *ctx, 531 struct gl_texture_image *texImage, 532 GLint xoffset, GLint yoffset, GLint zoffset, 533 GLsizei width, GLsizei height, GLsizei depth, 534 const GLvoid *clearValue); 535 536extern void 537_mesa_meta_GetTexSubImage(struct gl_context *ctx, 538 GLint xoffset, GLint yoffset, GLint zoffset, 539 GLsizei width, GLsizei height, GLsizei depth, 540 GLenum format, GLenum type, GLvoid *pixels, 541 struct gl_texture_image *texImage); 542 543extern void 544_mesa_meta_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z, 545 GLfloat width, GLfloat height); 546 547/* meta-internal functions */ 548void 549_mesa_meta_drawbuffers_from_bitfield(GLbitfield bits); 550 551void 552_mesa_meta_link_program_with_debug(struct gl_context *ctx, 553 struct gl_shader_program *sh_prog); 554 555void 556_mesa_meta_compile_and_link_program(struct gl_context *ctx, 557 const char *vs_source, 558 const char *fs_source, 559 const char *name, 560 struct gl_shader_program **sh_prog_ptr); 561 562extern void 563_mesa_meta_use_program(struct gl_context *ctx, 564 struct gl_shader_program *sh_prog); 565 566GLboolean 567_mesa_meta_alloc_texture(struct temp_texture *tex, 568 GLsizei width, GLsizei height, GLenum intFormat); 569 570void 571_mesa_meta_setup_texture_coords(GLenum faceTarget, 572 GLint slice, 573 GLint xoffset, 574 GLint yoffset, 575 GLint width, 576 GLint height, 577 GLint total_width, 578 GLint total_height, 579 GLint total_depth, 580 GLfloat coords0[4], 581 GLfloat coords1[4], 582 GLfloat coords2[4], 583 GLfloat coords3[4]); 584 585struct temp_texture * 586_mesa_meta_get_temp_texture(struct gl_context *ctx); 587 588struct temp_texture * 589_mesa_meta_get_temp_depth_texture(struct gl_context *ctx); 590 591void 592_mesa_meta_setup_vertex_objects(struct gl_context *ctx, 593 GLuint *VAO, struct gl_buffer_object **buf_obj, 594 bool use_generic_attributes, 595 unsigned vertex_size, unsigned texcoord_size, 596 unsigned color_size); 597 598void 599_mesa_meta_setup_ff_tnl_for_blit(struct gl_context *ctx, 600 GLuint *VAO, struct gl_buffer_object **buf_obj, 601 unsigned texcoord_size); 602 603void 604_mesa_meta_setup_drawpix_texture(struct gl_context *ctx, 605 struct temp_texture *tex, 606 GLboolean newTex, 607 GLsizei width, GLsizei height, 608 GLenum format, GLenum type, 609 const GLvoid *pixels); 610 611void 612_mesa_meta_setup_copypix_texture(struct gl_context *ctx, 613 struct temp_texture *tex, 614 GLint srcX, GLint srcY, 615 GLsizei width, GLsizei height, 616 GLenum intFormat, 617 GLenum filter); 618 619void 620_mesa_meta_setup_blit_shader(struct gl_context *ctx, 621 GLenum target, 622 bool do_depth, 623 struct blit_shader_table *table); 624 625void 626_mesa_meta_glsl_blit_cleanup(struct gl_context *ctx, struct blit_state *blit); 627 628void 629_mesa_meta_blit_shader_table_cleanup(struct gl_context *ctx, 630 struct blit_shader_table *table); 631 632void 633_mesa_meta_glsl_generate_mipmap_cleanup(struct gl_context *ctx, 634 struct gen_mipmap_state *mipmap); 635 636void 637_mesa_meta_framebuffer_texture_image(struct gl_context *ctx, 638 struct gl_framebuffer *fb, 639 GLenum attachment, 640 struct gl_texture_image *texImage, 641 GLuint layer); 642 643#endif /* META_H */ 644