1/*
2 * Mesa 3-D graphics library
3 * Version:  7.6
4 *
5 * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a
8 * copy of this software and associated documentation files (the "Software"),
9 * to deal in the Software without restriction, including without limitation
10 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11 * and/or sell copies of the Software, and to permit persons to whom the
12 * Software is furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included
15 * in all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR 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/**\}*/
60
61extern void
62_mesa_meta_init(struct gl_context *ctx);
63
64extern void
65_mesa_meta_free(struct gl_context *ctx);
66
67extern void
68_mesa_meta_begin(struct gl_context *ctx, GLbitfield state);
69
70extern void
71_mesa_meta_end(struct gl_context *ctx);
72
73extern GLboolean
74_mesa_meta_in_progress(struct gl_context *ctx);
75
76extern void
77_mesa_meta_BlitFramebuffer(struct gl_context *ctx,
78                           GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
79                           GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
80                           GLbitfield mask, GLenum filter);
81
82extern void
83_mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers);
84
85extern void
86_mesa_meta_glsl_Clear(struct gl_context *ctx, GLbitfield buffers);
87
88extern void
89_mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
90                      GLsizei width, GLsizei height,
91                      GLint dstx, GLint dsty, GLenum type);
92
93extern void
94_mesa_meta_DrawPixels(struct gl_context *ctx,
95                      GLint x, GLint y, GLsizei width, GLsizei height,
96                      GLenum format, GLenum type,
97                      const struct gl_pixelstore_attrib *unpack,
98                      const GLvoid *pixels);
99
100extern void
101_mesa_meta_Bitmap(struct gl_context *ctx,
102                  GLint x, GLint y, GLsizei width, GLsizei height,
103                  const struct gl_pixelstore_attrib *unpack,
104                  const GLubyte *bitmap);
105
106extern GLboolean
107_mesa_meta_check_generate_mipmap_fallback(struct gl_context *ctx, GLenum target,
108                                          struct gl_texture_object *texObj);
109
110extern void
111_mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
112                          struct gl_texture_object *texObj);
113
114extern void
115_mesa_meta_CopyTexSubImage(struct gl_context *ctx, GLuint dims,
116                           struct gl_texture_image *texImage,
117                           GLint xoffset, GLint yoffset, GLint zoffset,
118                           struct gl_renderbuffer *rb,
119                           GLint x, GLint y,
120                           GLsizei width, GLsizei height);
121
122extern void
123_mesa_meta_GetTexImage(struct gl_context *ctx,
124                       GLenum format, GLenum type, GLvoid *pixels,
125                       struct gl_texture_image *texImage);
126
127extern void
128_mesa_meta_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
129                   GLfloat width, GLfloat height);
130
131#endif /* META_H */
132