p_defines.h revision c29905aa318cf9ed782935552fa983b048646984
17234550cf759fdf3ab325465090c7f5eb3b5d320Brian/**************************************************************************
27234550cf759fdf3ab325465090c7f5eb3b5d320Brian *
37234550cf759fdf3ab325465090c7f5eb3b5d320Brian * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
47234550cf759fdf3ab325465090c7f5eb3b5d320Brian * All Rights Reserved.
57234550cf759fdf3ab325465090c7f5eb3b5d320Brian *
67234550cf759fdf3ab325465090c7f5eb3b5d320Brian * Permission is hereby granted, free of charge, to any person obtaining a
77234550cf759fdf3ab325465090c7f5eb3b5d320Brian * copy of this software and associated documentation files (the
87234550cf759fdf3ab325465090c7f5eb3b5d320Brian * "Software"), to deal in the Software without restriction, including
97234550cf759fdf3ab325465090c7f5eb3b5d320Brian * without limitation the rights to use, copy, modify, merge, publish,
107234550cf759fdf3ab325465090c7f5eb3b5d320Brian * distribute, sub license, and/or sell copies of the Software, and to
117234550cf759fdf3ab325465090c7f5eb3b5d320Brian * permit persons to whom the Software is furnished to do so, subject to
127234550cf759fdf3ab325465090c7f5eb3b5d320Brian * the following conditions:
137234550cf759fdf3ab325465090c7f5eb3b5d320Brian *
147234550cf759fdf3ab325465090c7f5eb3b5d320Brian * The above copyright notice and this permission notice (including the
157234550cf759fdf3ab325465090c7f5eb3b5d320Brian * next paragraph) shall be included in all copies or substantial portions
167234550cf759fdf3ab325465090c7f5eb3b5d320Brian * of the Software.
177234550cf759fdf3ab325465090c7f5eb3b5d320Brian *
187234550cf759fdf3ab325465090c7f5eb3b5d320Brian * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
197234550cf759fdf3ab325465090c7f5eb3b5d320Brian * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
207234550cf759fdf3ab325465090c7f5eb3b5d320Brian * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
217234550cf759fdf3ab325465090c7f5eb3b5d320Brian * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
227234550cf759fdf3ab325465090c7f5eb3b5d320Brian * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
237234550cf759fdf3ab325465090c7f5eb3b5d320Brian * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
247234550cf759fdf3ab325465090c7f5eb3b5d320Brian * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
257234550cf759fdf3ab325465090c7f5eb3b5d320Brian *
267234550cf759fdf3ab325465090c7f5eb3b5d320Brian **************************************************************************/
277234550cf759fdf3ab325465090c7f5eb3b5d320Brian
28943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#ifndef PIPE_DEFINES_H
29943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_DEFINES_H
308e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell
3126df9d1a304f03e9692e7bac0a3bc83330f30c6amichal#include "p_format.h"
3226df9d1a304f03e9692e7bac0a3bc83330f30c6amichal
33e4e30089231831339815cccebf3a3a0ea6dcd2a9José Fonseca#ifdef __cplusplus
34e4e30089231831339815cccebf3a3a0ea6dcd2a9José Fonsecaextern "C" {
35e4e30089231831339815cccebf3a3a0ea6dcd2a9José Fonseca#endif
36e4e30089231831339815cccebf3a3a0ea6dcd2a9José Fonseca
37943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_ONE                 0x1
38943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_SRC_COLOR           0x2
39943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_SRC_ALPHA           0x3
40943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_DST_ALPHA           0x4
41943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_DST_COLOR           0x5
42943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE  0x6
43943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_CONST_COLOR         0x7
44943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_CONST_ALPHA         0x8
45943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_SRC1_COLOR          0x9
46943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_SRC1_ALPHA          0x0A
47943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_ZERO                0x11
48943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_INV_SRC_COLOR       0x12
49943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_INV_SRC_ALPHA       0x13
50943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_INV_DST_ALPHA       0x14
51943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_INV_DST_COLOR       0x15
52943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_INV_CONST_COLOR     0x17
53943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_INV_CONST_ALPHA     0x18
54943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_INV_SRC1_COLOR      0x19
55943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLENDFACTOR_INV_SRC1_ALPHA      0x1A
568e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell
57943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLEND_ADD               0
58943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLEND_SUBTRACT          1
59943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLEND_REVERSE_SUBTRACT  2
60943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLEND_MIN               3
61943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_BLEND_MAX               4
628e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell
63943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_CLEAR            0
64943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_NOR              1
65943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_AND_INVERTED     2
66943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_COPY_INVERTED    3
67943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_AND_REVERSE      4
68943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_INVERT           5
69943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_XOR              6
70943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_NAND             7
71943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_AND              8
72943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_EQUIV            9
73943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_NOOP             10
74943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_OR_INVERTED      11
75943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_COPY             12
76943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_OR_REVERSE       13
77943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_OR               14
78943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_LOGICOP_SET              15
798e4a95a93d15a6707a29454cd47e10b08314cda2Keith Whitwell
8086352ff70d8c9a31fe0ebb4d02ce4bb4644fe54aBrian#define PIPE_MASK_R  0x1
8186352ff70d8c9a31fe0ebb4d02ce4bb4644fe54aBrian#define PIPE_MASK_G  0x2
8286352ff70d8c9a31fe0ebb4d02ce4bb4644fe54aBrian#define PIPE_MASK_B  0x4
8386352ff70d8c9a31fe0ebb4d02ce4bb4644fe54aBrian#define PIPE_MASK_A  0x8
845936b439e88308a2eabb8a5570e91dd8fff89397Brian#define PIPE_MASK_RGBA 0xf
855936b439e88308a2eabb8a5570e91dd8fff89397Brian
8686352ff70d8c9a31fe0ebb4d02ce4bb4644fe54aBrian
87efe6c50089e945902917c8091c92ce3a6155caacBrian/**
88efe6c50089e945902917c8091c92ce3a6155caacBrian * Inequality functions.  Used for depth test, stencil compare, alpha
89efe6c50089e945902917c8091c92ce3a6155caacBrian * test, shadow compare, etc.
90efe6c50089e945902917c8091c92ce3a6155caacBrian */
91efe6c50089e945902917c8091c92ce3a6155caacBrian#define PIPE_FUNC_NEVER    0
92efe6c50089e945902917c8091c92ce3a6155caacBrian#define PIPE_FUNC_LESS     1
93efe6c50089e945902917c8091c92ce3a6155caacBrian#define PIPE_FUNC_EQUAL    2
94efe6c50089e945902917c8091c92ce3a6155caacBrian#define PIPE_FUNC_LEQUAL   3
95efe6c50089e945902917c8091c92ce3a6155caacBrian#define PIPE_FUNC_GREATER  4
96efe6c50089e945902917c8091c92ce3a6155caacBrian#define PIPE_FUNC_NOTEQUAL 5
97efe6c50089e945902917c8091c92ce3a6155caacBrian#define PIPE_FUNC_GEQUAL   6
98efe6c50089e945902917c8091c92ce3a6155caacBrian#define PIPE_FUNC_ALWAYS   7
99008fb50174fb6717f3b71836427bc6be4e44613cBrian
1002137e3053ec87e4463fdbd952537d1bbd1a3dbcdBrian/** Polygon fill mode */
1012137e3053ec87e4463fdbd952537d1bbd1a3dbcdBrian#define PIPE_POLYGON_MODE_FILL  0
1022137e3053ec87e4463fdbd952537d1bbd1a3dbcdBrian#define PIPE_POLYGON_MODE_LINE  1
1032137e3053ec87e4463fdbd952537d1bbd1a3dbcdBrian#define PIPE_POLYGON_MODE_POINT 2
1042137e3053ec87e4463fdbd952537d1bbd1a3dbcdBrian
105f79c225d9e5adee6287a9bba35f014c3fe00d3f9Brian/** Polygon front/back window, also for culling */
106f79c225d9e5adee6287a9bba35f014c3fe00d3f9Brian#define PIPE_WINDING_NONE 0
107f79c225d9e5adee6287a9bba35f014c3fe00d3f9Brian#define PIPE_WINDING_CW   1
108f79c225d9e5adee6287a9bba35f014c3fe00d3f9Brian#define PIPE_WINDING_CCW  2
109f79c225d9e5adee6287a9bba35f014c3fe00d3f9Brian#define PIPE_WINDING_BOTH (PIPE_WINDING_CW | PIPE_WINDING_CCW)
1102137e3053ec87e4463fdbd952537d1bbd1a3dbcdBrian
111f79c225d9e5adee6287a9bba35f014c3fe00d3f9Brian/** Stencil ops */
112943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_STENCIL_OP_KEEP       0
113943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_STENCIL_OP_ZERO       1
114943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_STENCIL_OP_REPLACE    2
115943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_STENCIL_OP_INCR       3
116943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_STENCIL_OP_DECR       4
117943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_STENCIL_OP_INCR_WRAP  5
118943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_STENCIL_OP_DECR_WRAP  6
119943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_STENCIL_OP_INVERT     7
120008fb50174fb6717f3b71836427bc6be4e44613cBrian
121eb147ed775bedec9d849cdc817f208b5fe5eade3Brian/** Texture types */
1221c5f27a18b775b3784fcd265d60e0affa0b31581Michel Dänzerenum pipe_texture_target {
1231c5f27a18b775b3784fcd265d60e0affa0b31581Michel Dänzer   PIPE_TEXTURE_1D   = 0,
1241c5f27a18b775b3784fcd265d60e0affa0b31581Michel Dänzer   PIPE_TEXTURE_2D   = 1,
1251c5f27a18b775b3784fcd265d60e0affa0b31581Michel Dänzer   PIPE_TEXTURE_3D   = 2,
1261c5f27a18b775b3784fcd265d60e0affa0b31581Michel Dänzer   PIPE_TEXTURE_CUBE = 3
1271c5f27a18b775b3784fcd265d60e0affa0b31581Michel Dänzer};
128eb147ed775bedec9d849cdc817f208b5fe5eade3Brian
129eb147ed775bedec9d849cdc817f208b5fe5eade3Brian#define PIPE_TEX_FACE_POS_X 0
130eb147ed775bedec9d849cdc817f208b5fe5eade3Brian#define PIPE_TEX_FACE_NEG_X 1
131eb147ed775bedec9d849cdc817f208b5fe5eade3Brian#define PIPE_TEX_FACE_POS_Y 2
132eb147ed775bedec9d849cdc817f208b5fe5eade3Brian#define PIPE_TEX_FACE_NEG_Y 3
133eb147ed775bedec9d849cdc817f208b5fe5eade3Brian#define PIPE_TEX_FACE_POS_Z 4
134eb147ed775bedec9d849cdc817f208b5fe5eade3Brian#define PIPE_TEX_FACE_NEG_Z 5
13595b7771ea705b71bbd8185cd8e39b546e18e09a9Brian Paul#define PIPE_TEX_FACE_MAX   6
136eb147ed775bedec9d849cdc817f208b5fe5eade3Brian
137943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_WRAP_REPEAT                   0
138943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_WRAP_CLAMP                    1
139943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_WRAP_CLAMP_TO_EDGE            2
140943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_WRAP_CLAMP_TO_BORDER          3
141943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_WRAP_MIRROR_REPEAT            4
142943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_WRAP_MIRROR_CLAMP             5
143943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE     6
144943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER   7
14502a47549ad182d28d330063d4f452108e3a4b452Brian
14678b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell/* Between mipmaps, ie mipfilter
14778b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell */
14878b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell#define PIPE_TEX_MIPFILTER_NEAREST  0
14978b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell#define PIPE_TEX_MIPFILTER_LINEAR   1
15078b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell#define PIPE_TEX_MIPFILTER_NONE     2
15178b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell
15278b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell/* Within a mipmap, ie min/mag filter
15378b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell */
15478b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell#define PIPE_TEX_FILTER_NEAREST      0
15578b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell#define PIPE_TEX_FILTER_LINEAR       1
15698ae83d5cc73b61826823c915b5c59746c2e85c7Keith Whitwell#define PIPE_TEX_FILTER_ANISO        2
15778b1a29a0da8d1877408421df5012d37084a96deKeith Whitwell
15802a47549ad182d28d330063d4f452108e3a4b452Brian
159943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_COMPARE_NONE          0
160943964a1e5bad86bdceb0a06d60fb3b302ebce6aKeith Whitwell#define PIPE_TEX_COMPARE_R_TO_TEXTURE  1
1618f2888758129b0a40d71fa4ce10d606b4bcf7631Brian
1621a8ceb3828c64fb758955c85a1d3d06f53f15ed5José Fonseca#define PIPE_TEXTURE_USAGE_RENDER_TARGET   0x1
1631a8ceb3828c64fb758955c85a1d3d06f53f15ed5José Fonseca#define PIPE_TEXTURE_USAGE_DISPLAY_TARGET  0x2 /* ie a backbuffer */
1641a8ceb3828c64fb758955c85a1d3d06f53f15ed5José Fonseca#define PIPE_TEXTURE_USAGE_PRIMARY         0x4 /* ie a frontbuffer */
1651a8ceb3828c64fb758955c85a1d3d06f53f15ed5José Fonseca#define PIPE_TEXTURE_USAGE_DEPTH_STENCIL   0x8
1661a8ceb3828c64fb758955c85a1d3d06f53f15ed5José Fonseca#define PIPE_TEXTURE_USAGE_SAMPLER         0x10
167fbf418d9dc0aa2965ca7673ae20f6e47c4a53c8aYounes Manton#define PIPE_TEXTURE_USAGE_DYNAMIC         0x20
1681c22c0452526aaae13a2e618ec6e46327609d9c2Younes Manton/** Pipe driver custom usage flags should be greater or equal to this value */
1691c22c0452526aaae13a2e618ec6e46327609d9c2Younes Manton#define PIPE_TEXTURE_USAGE_CUSTOM          (1 << 16)
1701a8ceb3828c64fb758955c85a1d3d06f53f15ed5José Fonseca
1718aafc03b260ab8923f1b373f7effa75bcdb40a72José Fonseca#define PIPE_TEXTURE_GEOM_NON_SQUARE       0x1
1728aafc03b260ab8923f1b373f7effa75bcdb40a72José Fonseca#define PIPE_TEXTURE_GEOM_NON_POWER_OF_TWO 0x2
1739ac1a8d416c2bd50ca10186ca09f5e86f6fa4ce6Brian
1749ac1a8d416c2bd50ca10186ca09f5e86f6fa4ce6Brian
1759ac1a8d416c2bd50ca10186ca09f5e86f6fa4ce6Brian/**
1768e6a3807981bb96bb6747683dbc9f92ae7117dd2Keith Whitwell * Surface layout
1778e6a3807981bb96bb6747683dbc9f92ae7117dd2Keith Whitwell */
1788e6a3807981bb96bb6747683dbc9f92ae7117dd2Keith Whitwell#define PIPE_SURFACE_LAYOUT_LINEAR  0
1798e6a3807981bb96bb6747683dbc9f92ae7117dd2Keith Whitwell
1808e6a3807981bb96bb6747683dbc9f92ae7117dd2Keith Whitwell
1818e6a3807981bb96bb6747683dbc9f92ae7117dd2Keith Whitwell/**
182eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer * Clear buffer bits
183eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer */
184eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer/** All color buffers currently bound */
185eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer#define PIPE_CLEAR_COLOR        (1 << 0)
186eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer/** Depth/stencil combined */
187eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer#define PIPE_CLEAR_DEPTHSTENCIL (1 << 1)
188eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer
189eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer
190eb168e26aa63f11a47d70c4555cae30691a2cd57Michel Dänzer/**
1914617981ec72f7985941bee4b03c534d97ff96bc6Michel Dänzer * Transfer object usage flags
1924617981ec72f7985941bee4b03c534d97ff96bc6Michel Dänzer */
1934617981ec72f7985941bee4b03c534d97ff96bc6Michel Dänzerenum pipe_transfer_usage {
194f199dbdb76892ec31d19f114f042bc6ec82d9e46Maarten Maathuis   PIPE_TRANSFER_READ = (1 << 0),
195f199dbdb76892ec31d19f114f042bc6ec82d9e46Maarten Maathuis   PIPE_TRANSFER_WRITE = (1 << 1),
196f199dbdb76892ec31d19f114f042bc6ec82d9e46Maarten Maathuis   PIPE_TRANSFER_READ_WRITE = PIPE_TRANSFER_READ | PIPE_TRANSFER_WRITE /**< Read/modify/write */
1974617981ec72f7985941bee4b03c534d97ff96bc6Michel Dänzer};
1984617981ec72f7985941bee4b03c534d97ff96bc6Michel Dänzer
1994617981ec72f7985941bee4b03c534d97ff96bc6Michel Dänzer
2004617981ec72f7985941bee4b03c534d97ff96bc6Michel Dänzer/**
201fa1a66d7fc4fd7854de7958a48e4992edd154489José Fonseca * Buffer usage flags
202fa1a66d7fc4fd7854de7958a48e4992edd154489José Fonseca */
203756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer#define PIPE_BUFFER_USAGE_CPU_READ  (1 << 0)
204756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer#define PIPE_BUFFER_USAGE_CPU_WRITE (1 << 1)
205756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer#define PIPE_BUFFER_USAGE_GPU_READ  (1 << 2)
206756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer#define PIPE_BUFFER_USAGE_GPU_WRITE (1 << 3)
207756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer#define PIPE_BUFFER_USAGE_PIXEL     (1 << 4)
208756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer#define PIPE_BUFFER_USAGE_VERTEX    (1 << 5)
209756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer#define PIPE_BUFFER_USAGE_INDEX     (1 << 6)
210756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer#define PIPE_BUFFER_USAGE_CONSTANT  (1 << 7)
2110521c2682a3249562ff6a3d6ab6c90d1d63b82a3Younes Manton#define PIPE_BUFFER_USAGE_DISCARD   (1 << 8)
212cfc3d5c219e3ae3190b7700472bdefec028a7a15José Fonseca#define PIPE_BUFFER_USAGE_DONTBLOCK (1 << 9)
2134ffe2844a46bcd69c0f2c95f04da97e83899e831José Fonseca#define PIPE_BUFFER_USAGE_FLUSH_EXPLICIT (1 << 10) /**< See pipe_screen::buffer_flush_mapped_range */
214bd5b99d3890f162ec0928a589b6afbc8e67580b7Brian Paul/** Pipe driver custom usage flags should be greater or equal to this value */
215756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer#define PIPE_BUFFER_USAGE_CUSTOM    (1 << 16)
216756d52ec12c41ee90ee9598dc9028cc134806bd2Michel Dänzer
217d600c805c08288757185ce3af24b5f0a866bb0b2José Fonseca/* Convenient shortcuts */
218d600c805c08288757185ce3af24b5f0a866bb0b2José Fonseca#define PIPE_BUFFER_USAGE_CPU_READ_WRITE \
219d600c805c08288757185ce3af24b5f0a866bb0b2José Fonseca   ( PIPE_BUFFER_USAGE_CPU_READ | PIPE_BUFFER_USAGE_CPU_WRITE )
220d600c805c08288757185ce3af24b5f0a866bb0b2José Fonseca#define PIPE_BUFFER_USAGE_GPU_READ_WRITE \
221d600c805c08288757185ce3af24b5f0a866bb0b2José Fonseca   ( PIPE_BUFFER_USAGE_GPU_READ | PIPE_BUFFER_USAGE_GPU_WRITE )
222d600c805c08288757185ce3af24b5f0a866bb0b2José Fonseca#define PIPE_BUFFER_USAGE_WRITE \
223d600c805c08288757185ce3af24b5f0a866bb0b2José Fonseca   ( PIPE_BUFFER_USAGE_CPU_WRITE | PIPE_BUFFER_USAGE_GPU_WRITE )
224d600c805c08288757185ce3af24b5f0a866bb0b2José Fonseca
22593d5cfd8b7c641c5656aed38ad2f9559e09502f0Keith Whitwell
22693d5cfd8b7c641c5656aed38ad2f9559e09502f0Keith Whitwell/**
22793d5cfd8b7c641c5656aed38ad2f9559e09502f0Keith Whitwell * Flush types:
22893d5cfd8b7c641c5656aed38ad2f9559e09502f0Keith Whitwell */
229ae44a81d1bd40852a7cea9b8025dfa3821adc785Brian#define PIPE_FLUSH_RENDER_CACHE   0x1
23093d5cfd8b7c641c5656aed38ad2f9559e09502f0Keith Whitwell#define PIPE_FLUSH_TEXTURE_CACHE  0x2
2314abe1eb980ed76d2b2d3383eaab520d0aa2ae6f4Michel Dänzer#define PIPE_FLUSH_SWAPBUFFERS    0x4
232daa481a9c0825018d2320dcd8d9e2d7ddcfd46a0José Fonseca#define PIPE_FLUSH_FRAME          0x8 /**< Mark the end of a frame */
23393d5cfd8b7c641c5656aed38ad2f9559e09502f0Keith Whitwell
23440a86b20478024ca7c55400019c536cb5ff631d1Keith Whitwell
23594a4910c9a1ef48470f45c01c379254cb033119fBrian/**
236c0bb4ba9e665e40a325d82aa2ee48d7b8abd603bBrian * Shaders
237c0bb4ba9e665e40a325d82aa2ee48d7b8abd603bBrian */
238c0bb4ba9e665e40a325d82aa2ee48d7b8abd603bBrian#define PIPE_SHADER_VERTEX   0
239c0bb4ba9e665e40a325d82aa2ee48d7b8abd603bBrian#define PIPE_SHADER_FRAGMENT 1
240c0bb4ba9e665e40a325d82aa2ee48d7b8abd603bBrian#define PIPE_SHADER_TYPES    2
241c0bb4ba9e665e40a325d82aa2ee48d7b8abd603bBrian
242c0bb4ba9e665e40a325d82aa2ee48d7b8abd603bBrian
243c0bb4ba9e665e40a325d82aa2ee48d7b8abd603bBrian/**
24494a4910c9a1ef48470f45c01c379254cb033119fBrian * Primitive types:
24594a4910c9a1ef48470f45c01c379254cb033119fBrian */
24694a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_POINTS          0
24794a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_LINES           1
24894a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_LINE_LOOP       2
24994a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_LINE_STRIP      3
25094a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_TRIANGLES       4
25194a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_TRIANGLE_STRIP  5
25294a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_TRIANGLE_FAN    6
25394a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_QUADS           7
25494a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_QUAD_STRIP      8
25594a4910c9a1ef48470f45c01c379254cb033119fBrian#define PIPE_PRIM_POLYGON         9
25667387bf33fb7e92d4fcab1fe7f26b6a0b17048a6José Fonseca#define PIPE_PRIM_MAX             10
25794a4910c9a1ef48470f45c01c379254cb033119fBrian
25840a86b20478024ca7c55400019c536cb5ff631d1Keith Whitwell
25909fbb3837b6aa5dfc6c94f41ab5443820177c569Brian/**
26009fbb3837b6aa5dfc6c94f41ab5443820177c569Brian * Query object types
26109fbb3837b6aa5dfc6c94f41ab5443820177c569Brian */
26209fbb3837b6aa5dfc6c94f41ab5443820177c569Brian#define PIPE_QUERY_OCCLUSION_COUNTER     0
26309fbb3837b6aa5dfc6c94f41ab5443820177c569Brian#define PIPE_QUERY_PRIMITIVES_GENERATED  1
26409fbb3837b6aa5dfc6c94f41ab5443820177c569Brian#define PIPE_QUERY_PRIMITIVES_EMITTED    2
26509fbb3837b6aa5dfc6c94f41ab5443820177c569Brian#define PIPE_QUERY_TYPES                 3
26609fbb3837b6aa5dfc6c94f41ab5443820177c569Brian
26737cf13ed9a429c755f121daa1776b1b30a985ab3Brian
2681b4852345954af9b582b03a91a3d8399b8fb0e92Brian/**
2691b4852345954af9b582b03a91a3d8399b8fb0e92Brian * Point sprite coord modes
2701b4852345954af9b582b03a91a3d8399b8fb0e92Brian */
2711b4852345954af9b582b03a91a3d8399b8fb0e92Brian#define PIPE_SPRITE_COORD_NONE       0
2721b4852345954af9b582b03a91a3d8399b8fb0e92Brian#define PIPE_SPRITE_COORD_UPPER_LEFT 1
2731b4852345954af9b582b03a91a3d8399b8fb0e92Brian#define PIPE_SPRITE_COORD_LOWER_LEFT 2
2741b4852345954af9b582b03a91a3d8399b8fb0e92Brian
275c6499a741c99394e81d1d86ffd066f3d9749875cBrian
276c6499a741c99394e81d1d86ffd066f3d9749875cBrian/**
277aebc08b5ccc6ac2a7c6673e93c63b097c7734e6dBrian Paul * Implementation capabilities/limits which are queried through
278aebc08b5ccc6ac2a7c6673e93c63b097c7734e6dBrian Paul * pipe_screen::get_param() and pipe_screen::get_paramf().
279c6499a741c99394e81d1d86ffd066f3d9749875cBrian */
280c6499a741c99394e81d1d86ffd066f3d9749875cBrian#define PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS 1
281c6499a741c99394e81d1d86ffd066f3d9749875cBrian#define PIPE_CAP_NPOT_TEXTURES           2
282c6499a741c99394e81d1d86ffd066f3d9749875cBrian#define PIPE_CAP_TWO_SIDED_STENCIL       3
283c6499a741c99394e81d1d86ffd066f3d9749875cBrian#define PIPE_CAP_GLSL                    4  /* XXX need something better */
284c29905aa318cf9ed782935552fa983b048646984José Fonseca#define PIPE_CAP_S3TC                    5  /* XXX: deprecated; cap determined via supported sampler formats */
285c6499a741c99394e81d1d86ffd066f3d9749875cBrian#define PIPE_CAP_ANISOTROPIC_FILTER      6
286c6499a741c99394e81d1d86ffd066f3d9749875cBrian#define PIPE_CAP_POINT_SPRITE            7
287c6499a741c99394e81d1d86ffd066f3d9749875cBrian#define PIPE_CAP_MAX_RENDER_TARGETS      8
288c6499a741c99394e81d1d86ffd066f3d9749875cBrian#define PIPE_CAP_OCCLUSION_QUERY         9
289e2feb80a90f3e9300c70a4a4eb3e966131f5c313Brian#define PIPE_CAP_TEXTURE_SHADOW_MAP      10
290e2feb80a90f3e9300c70a4a4eb3e966131f5c313Brian#define PIPE_CAP_MAX_TEXTURE_2D_LEVELS   11
291e2feb80a90f3e9300c70a4a4eb3e966131f5c313Brian#define PIPE_CAP_MAX_TEXTURE_3D_LEVELS   12
292e2feb80a90f3e9300c70a4a4eb3e966131f5c313Brian#define PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS 13
29344254b92480115e5c8a2d5cf78f99195c03701ebBrian#define PIPE_CAP_MAX_LINE_WIDTH          14
29444254b92480115e5c8a2d5cf78f99195c03701ebBrian#define PIPE_CAP_MAX_LINE_WIDTH_AA       15
29544254b92480115e5c8a2d5cf78f99195c03701ebBrian#define PIPE_CAP_MAX_POINT_WIDTH         16
29644254b92480115e5c8a2d5cf78f99195c03701ebBrian#define PIPE_CAP_MAX_POINT_WIDTH_AA      17
29744254b92480115e5c8a2d5cf78f99195c03701ebBrian#define PIPE_CAP_MAX_TEXTURE_ANISOTROPY  18
29844254b92480115e5c8a2d5cf78f99195c03701ebBrian#define PIPE_CAP_MAX_TEXTURE_LOD_BIAS    19
29943b92a6424a4d4f4f29b47c35092264c60822f1bMichal Krol#define PIPE_CAP_GUARD_BAND_LEFT         20  /*< float */
30043b92a6424a4d4f4f29b47c35092264c60822f1bMichal Krol#define PIPE_CAP_GUARD_BAND_TOP          21  /*< float */
30143b92a6424a4d4f4f29b47c35092264c60822f1bMichal Krol#define PIPE_CAP_GUARD_BAND_RIGHT        22  /*< float */
30243b92a6424a4d4f4f29b47c35092264c60822f1bMichal Krol#define PIPE_CAP_GUARD_BAND_BOTTOM       23  /*< float */
303be66a8f43172327e3cdde27281e40377cacbb121Brian Paul#define PIPE_CAP_TEXTURE_MIRROR_CLAMP    24
304be66a8f43172327e3cdde27281e40377cacbb121Brian Paul#define PIPE_CAP_TEXTURE_MIRROR_REPEAT   25
3057eb8b37735a32768487334664d95e98ad06f48dbBrian#define PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS 26
306f5dc352e5fbf9cd84638922e8dfdc4b5fb49538cBrian Paul#define PIPE_CAP_TGSI_CONT_SUPPORTED     27
30754cf63278ff28eb03503f649c46bf24437a1cbf8Patrice Mandin#define PIPE_CAP_BLEND_EQUATION_SEPARATE 28
308be66a8f43172327e3cdde27281e40377cacbb121Brian Paul
30907aaf3a7a730d65052ec34a82cce9b373673b556Brian Paul
3109b75627fab5bf2ea90f27ddd31b60c54895f6de6Thomas Hellstrom/**
3119b75627fab5bf2ea90f27ddd31b60c54895f6de6Thomas Hellstrom * Referenced query flags.
3129b75627fab5bf2ea90f27ddd31b60c54895f6de6Thomas Hellstrom */
3139b75627fab5bf2ea90f27ddd31b60c54895f6de6Thomas Hellstrom
3149b75627fab5bf2ea90f27ddd31b60c54895f6de6Thomas Hellstrom#define PIPE_UNREFERENCED         0
3159b75627fab5bf2ea90f27ddd31b60c54895f6de6Thomas Hellstrom#define PIPE_REFERENCED_FOR_READ  (1 << 0)
3169b75627fab5bf2ea90f27ddd31b60c54895f6de6Thomas Hellstrom#define PIPE_REFERENCED_FOR_WRITE (1 << 1)
317c6499a741c99394e81d1d86ffd066f3d9749875cBrian
318e4e30089231831339815cccebf3a3a0ea6dcd2a9José Fonseca#ifdef __cplusplus
319e4e30089231831339815cccebf3a3a0ea6dcd2a9José Fonseca}
320e4e30089231831339815cccebf3a3a0ea6dcd2a9José Fonseca#endif
321e4e30089231831339815cccebf3a3a0ea6dcd2a9José Fonseca
3227234550cf759fdf3ab325465090c7f5eb3b5d320Brian#endif
323