1ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com//
2fd39655df035e8a5f7c6feaa97e950cde85a84aeNicolas Capens// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved.
3ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be
4ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com// found in the LICENSE file.
5ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com//
6ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com
7ef19da5a7d1dfaa91da55d87d70a0cca5d681426daniel@transgaming.com// angletypes.h : Defines a variety of structures and enum types that are used throughout libGLESv2
8ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com
9ef19da5a7d1dfaa91da55d87d70a0cca5d681426daniel@transgaming.com#ifndef LIBGLESV2_ANGLETYPES_H_
10ef19da5a7d1dfaa91da55d87d70a0cca5d681426daniel@transgaming.com#define LIBGLESV2_ANGLETYPES_H_
11ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com
12da507fea063b882095bd54753cabc685ffdb575dGeoff Lang#include "libGLESv2/constants.h"
13950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill#include "common/RefCountObject.h"
14da507fea063b882095bd54753cabc685ffdb575dGeoff Lang
15ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.comnamespace gl
16ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com{
17950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madillclass Buffer;
183078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madillclass ProgramBinary;
195bf98290459ca4ccab2f5be62f5fba2337fe8b7aBrandon Jonesstruct VertexAttribute;
203078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madillstruct VertexAttribCurrentValueData;
21ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com
22ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.comenum SamplerType
23ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com{
24ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com    SAMPLER_PIXEL,
25ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com    SAMPLER_VERTEX
26ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com};
27ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com
282a64ee4479728d804e1ecd8d0d10e83f00cf4f29Geoff Langtemplate <typename T>
29d0db35080360ae03589dd366266eed0a9b1f422bdaniel@transgaming.comstruct Color
30d0db35080360ae03589dd366266eed0a9b1f422bdaniel@transgaming.com{
312a64ee4479728d804e1ecd8d0d10e83f00cf4f29Geoff Lang    T red;
322a64ee4479728d804e1ecd8d0d10e83f00cf4f29Geoff Lang    T green;
332a64ee4479728d804e1ecd8d0d10e83f00cf4f29Geoff Lang    T blue;
342a64ee4479728d804e1ecd8d0d10e83f00cf4f29Geoff Lang    T alpha;
357b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang
367b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    Color() : red(0), green(0), blue(0), alpha(0) { }
377b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    Color(T r, T g, T b, T a) : red(r), green(g), blue(b), alpha(a) { }
38d0db35080360ae03589dd366266eed0a9b1f422bdaniel@transgaming.com};
39c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com
402a64ee4479728d804e1ecd8d0d10e83f00cf4f29Geoff Langtypedef Color<float> ColorF;
412a64ee4479728d804e1ecd8d0d10e83f00cf4f29Geoff Langtypedef Color<int> ColorI;
422a64ee4479728d804e1ecd8d0d10e83f00cf4f29Geoff Langtypedef Color<unsigned int> ColorUI;
432a64ee4479728d804e1ecd8d0d10e83f00cf4f29Geoff Lang
441e34fde54edf4c9f27892ba1f3ceff1ff807bab1daniel@transgaming.comstruct Rectangle
451e34fde54edf4c9f27892ba1f3ceff1ff807bab1daniel@transgaming.com{
461e34fde54edf4c9f27892ba1f3ceff1ff807bab1daniel@transgaming.com    int x;
471e34fde54edf4c9f27892ba1f3ceff1ff807bab1daniel@transgaming.com    int y;
481e34fde54edf4c9f27892ba1f3ceff1ff807bab1daniel@transgaming.com    int width;
491e34fde54edf4c9f27892ba1f3ceff1ff807bab1daniel@transgaming.com    int height;
507b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang
517b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    Rectangle() : x(0), y(0), width(0), height(0) { }
527b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    Rectangle(int x_in, int y_in, int width_in, int height_in) : x(x_in), y(y_in), width(width_in), height(height_in) { }
531e34fde54edf4c9f27892ba1f3ceff1ff807bab1daniel@transgaming.com};
541e34fde54edf4c9f27892ba1f3ceff1ff807bab1daniel@transgaming.com
55125deab6241c659dab0c9bb9f55c08daecc2f534Geoff Langbool ClipRectangle(const Rectangle &source, const Rectangle &clip, Rectangle *intersection);
56125deab6241c659dab0c9bb9f55c08daecc2f534Geoff Lang
577b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.orgstruct Box
587b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.org{
597b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.org    int x;
607b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.org    int y;
617b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.org    int z;
627b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.org    int width;
637b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.org    int height;
647b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.org    int depth;
657b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang
667b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    Box() : x(0), y(0), z(0), width(0), height(0), depth(0) { }
677b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    Box(int x_in, int y_in, int z_in, int width_in, int height_in, int depth_in) : x(x_in), y(y_in), z(z_in), width(width_in), height(height_in), depth(depth_in) { }
687b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang};
697b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang
707b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Langstruct Extents
717b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang{
727b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    int width;
737b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    int height;
747b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    int depth;
757b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang
767b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    Extents() : width(0), height(0), depth(0) { }
777b7bc36ad672c624e04f56b0c3900ff96278c3dfGeoff Lang    Extents(int width_, int height_, int depth_) : width(width_), height(height_), depth(depth_) { }
787b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.org};
797b61d5cebbe98e9aeb322aaa307e9fcd4c7c682bshannonwoods@chromium.org
80c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.comstruct RasterizerState
81c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com{
82c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool cullFace;
83c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum cullMode;
84c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum frontFace;
85c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com
86c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool polygonOffsetFill;
87c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLfloat polygonOffsetFactor;
88c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLfloat polygonOffsetUnits;
89dd2524c46ed4689c27adf3f9959435fd2906b621shannon.woods@transgaming.com
90dd2524c46ed4689c27adf3f9959435fd2906b621shannon.woods@transgaming.com    bool pointDrawMode;
91fd39655df035e8a5f7c6feaa97e950cde85a84aeNicolas Capens    bool multiSample;
920550d0389a59a50a1df0df3484ecefc864715e26Geoff Lang
930550d0389a59a50a1df0df3484ecefc864715e26Geoff Lang    bool rasterizerDiscard;
94c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com};
95c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com
96c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.comstruct BlendState
97c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com{
98c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool blend;
99c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum sourceBlendRGB;
100c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum destBlendRGB;
101c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum sourceBlendAlpha;
102c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum destBlendAlpha;
103c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum blendEquationRGB;
104c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum blendEquationAlpha;
105c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com
106c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool colorMaskRed;
107c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool colorMaskGreen;
108c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool colorMaskBlue;
109c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool colorMaskAlpha;
110c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com
111c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool sampleAlphaToCoverage;
112c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com
113c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool dither;
114c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com};
115c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com
116c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.comstruct DepthStencilState
117c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com{
118c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool depthTest;
119c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum depthFunc;
120c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool depthMask;
121c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com
122c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    bool stencilTest;
123c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum stencilFunc;
124c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLuint stencilMask;
125c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum stencilFail;
126c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum stencilPassDepthFail;
127c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum stencilPassDepthPass;
128c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLuint stencilWritemask;
129c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum stencilBackFunc;
130c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLuint stencilBackMask;
131c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum stencilBackFail;
132c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum stencilBackPassDepthFail;
133c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLenum stencilBackPassDepthPass;
134c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com    GLuint stencilBackWritemask;
135c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com};
136c8b8f2832435209bc3b8969eaf0eec2ccf3d1432daniel@transgaming.com
1378bc304a1c6297dba9c17985e1dbab6a0ece437efdaniel@transgaming.comstruct SamplerState
1388bc304a1c6297dba9c17985e1dbab6a0ece437efdaniel@transgaming.com{
139a328d5698ad6668352187e15a6226cef08640eecBrandon Jones    SamplerState();
140a328d5698ad6668352187e15a6226cef08640eecBrandon Jones
1418bc304a1c6297dba9c17985e1dbab6a0ece437efdaniel@transgaming.com    GLenum minFilter;
1428bc304a1c6297dba9c17985e1dbab6a0ece437efdaniel@transgaming.com    GLenum magFilter;
1438bc304a1c6297dba9c17985e1dbab6a0ece437efdaniel@transgaming.com    GLenum wrapS;
1448bc304a1c6297dba9c17985e1dbab6a0ece437efdaniel@transgaming.com    GLenum wrapT;
1450b3a8dfb1e698f7ba69708f9f1bbe73179dcd07eshannon.woods%transgaming.com@gtempaccount.com    GLenum wrapR;
1468bc304a1c6297dba9c17985e1dbab6a0ece437efdaniel@transgaming.com    float maxAnisotropy;
1478de682870a82cad54f3fffe5c6723e858656f7e2Nicolas Capens
1488de682870a82cad54f3fffe5c6723e858656f7e2Nicolas Capens    GLint baseLevel;
1498de682870a82cad54f3fffe5c6723e858656f7e2Nicolas Capens    GLint maxLevel;
1508de682870a82cad54f3fffe5c6723e858656f7e2Nicolas Capens    GLfloat minLod;
1518de682870a82cad54f3fffe5c6723e858656f7e2Nicolas Capens    GLfloat maxLod;
152c82fc41362dae28c98b16c76dda04e2988a02de1Geoff Lang
153c82fc41362dae28c98b16c76dda04e2988a02de1Geoff Lang    GLenum compareMode;
154c82fc41362dae28c98b16c76dda04e2988a02de1Geoff Lang    GLenum compareFunc;
155bc90a4804f58d2b24babe6f247db57b9a6cdc58fGeoff Lang
156bc90a4804f58d2b24babe6f247db57b9a6cdc58fGeoff Lang    GLenum swizzleRed;
157bc90a4804f58d2b24babe6f247db57b9a6cdc58fGeoff Lang    GLenum swizzleGreen;
158bc90a4804f58d2b24babe6f247db57b9a6cdc58fGeoff Lang    GLenum swizzleBlue;
159bc90a4804f58d2b24babe6f247db57b9a6cdc58fGeoff Lang    GLenum swizzleAlpha;
16076b258f88ebb47cf1022ae6b4392f220a56383d4Nicolas Capens
16176b258f88ebb47cf1022ae6b4392f220a56383d4Nicolas Capens    bool swizzleRequired() const;
1628bc304a1c6297dba9c17985e1dbab6a0ece437efdaniel@transgaming.com};
1638bc304a1c6297dba9c17985e1dbab6a0ece437efdaniel@transgaming.com
1647436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.comstruct ClearParameters
1657436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com{
166da507fea063b882095bd54753cabc685ffdb575dGeoff Lang    bool clearColor[gl::IMPLEMENTATION_MAX_DRAW_BUFFERS];
167da507fea063b882095bd54753cabc685ffdb575dGeoff Lang    ColorF colorFClearValue;
168da507fea063b882095bd54753cabc685ffdb575dGeoff Lang    ColorI colorIClearValue;
169da507fea063b882095bd54753cabc685ffdb575dGeoff Lang    ColorUI colorUIClearValue;
170da507fea063b882095bd54753cabc685ffdb575dGeoff Lang    GLenum colorClearType;
1717436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com    bool colorMaskRed;
1727436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com    bool colorMaskGreen;
1737436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com    bool colorMaskBlue;
1747436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com    bool colorMaskAlpha;
1757436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com
176da507fea063b882095bd54753cabc685ffdb575dGeoff Lang    bool clearDepth;
1777436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com    float depthClearValue;
1787436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com
179da507fea063b882095bd54753cabc685ffdb575dGeoff Lang    bool clearStencil;
1807436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com    GLint stencilClearValue;
1817436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com    GLuint stencilWriteMask;
182da507fea063b882095bd54753cabc685ffdb575dGeoff Lang
183da507fea063b882095bd54753cabc685ffdb575dGeoff Lang    bool scissorEnabled;
184da507fea063b882095bd54753cabc685ffdb575dGeoff Lang    Rectangle scissor;
1857436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com};
1867436971e9cccbd9992cbc7e75356d7e61b8053d9daniel@transgaming.com
187950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madillstruct PixelUnpackState
188950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill{
189950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    BindingPointer<Buffer> pixelBuffer;
190950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    GLint alignment;
191950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill
192950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    PixelUnpackState()
193950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill        : alignment(4)
194950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    {}
195950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill
196950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    explicit PixelUnpackState(GLint alignmentIn)
197950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill        : alignment(alignmentIn)
198950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    {}
199950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill};
200950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill
201950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madillstruct PixelPackState
202950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill{
203950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    BindingPointer<Buffer> pixelBuffer;
204950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    GLint alignment;
205950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    bool reverseRowOrder;
206950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill
207950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    PixelPackState()
208950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill        : alignment(4),
209950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill          reverseRowOrder(false)
210950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    {}
211950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill
212950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    explicit PixelPackState(GLint alignmentIn, bool reverseRowOrderIn)
213950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill        : alignment(alignmentIn),
214950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill          reverseRowOrder(reverseRowOrderIn)
215950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill    {}
216950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill};
217950a775ecc8d7352a5d2f76b719416acdc4706a0Jamie Madill
2183078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madillstruct VertexFormat
2193078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill{
2203078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    GLenum      mType;
2213078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    GLboolean   mNormalized;
2223078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    GLuint      mComponents;
2233078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    bool        mPureInteger;
2243078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill
2253078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    VertexFormat();
2263078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    VertexFormat(GLenum type, GLboolean normalized, GLuint components, bool pureInteger);
2273078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    explicit VertexFormat(const VertexAttribute &attribute);
2283078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    VertexFormat(const VertexAttribute &attribute, GLenum currentValueType);
2293078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill
2303078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    static void GetInputLayout(VertexFormat *inputLayout,
2313078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill                               ProgramBinary *programBinary,
2323078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill                               const VertexAttribute *attributes,
2333078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill                               const gl::VertexAttribCurrentValueData *currentValues);
2343078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill
2353078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    bool operator==(const VertexFormat &other) const;
2363078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    bool operator!=(const VertexFormat &other) const;
2373078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill    bool operator<(const VertexFormat& other) const;
2383078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill};
2393078d0f718b27d541d2314bf9a30bbcc94e7f2e6Jamie Madill
240ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com}
241ba0570efef84d98117e1acb3762b9b58652c516adaniel@transgaming.com
2427ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madillnamespace rx
2437ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill{
2447ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill
2457ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madillenum VertexConversionType
2467ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill{
2477ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill    VERTEX_CONVERT_NONE = 0,
2487ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill    VERTEX_CONVERT_CPU  = 1,
2497ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill    VERTEX_CONVERT_GPU  = 2,
2507ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill    VERTEX_CONVERT_BOTH = 3
2517ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill};
2527ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill
2535f562735860c4415b09db11c27070d3503d687aaJamie Madillenum D3DWorkaroundType
2545f562735860c4415b09db11c27070d3503d687aaJamie Madill{
2555f562735860c4415b09db11c27070d3503d687aaJamie Madill    ANGLE_D3D_WORKAROUND_NONE,
256655fe36e254e7f11e79a4fad4febd5d768194c35Nicolas Capens    ANGLE_D3D_WORKAROUND_SKIP_OPTIMIZATION,
257655fe36e254e7f11e79a4fad4febd5d768194c35Nicolas Capens    ANGLE_D3D_WORKAROUND_MAX_OPTIMIZATION
2585f562735860c4415b09db11c27070d3503d687aaJamie Madill};
2595f562735860c4415b09db11c27070d3503d687aaJamie Madill
2607ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill}
2617ab02fafb5de8cabadaa5eff10e473e79f9b027eJamie Madill
262ef19da5a7d1dfaa91da55d87d70a0cca5d681426daniel@transgaming.com#endif // LIBGLESV2_ANGLETYPES_H_
263