1*35238bceSAndroid Build Coastguard Worker #ifndef _GLUDRAWUTIL_HPP 2*35238bceSAndroid Build Coastguard Worker #define _GLUDRAWUTIL_HPP 3*35238bceSAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL Utilities 5*35238bceSAndroid Build Coastguard Worker * --------------------------------------------- 6*35238bceSAndroid Build Coastguard Worker * 7*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project 8*35238bceSAndroid Build Coastguard Worker * 9*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 10*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 11*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at 12*35238bceSAndroid Build Coastguard Worker * 13*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 14*35238bceSAndroid Build Coastguard Worker * 15*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 16*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 17*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 19*35238bceSAndroid Build Coastguard Worker * limitations under the License. 20*35238bceSAndroid Build Coastguard Worker * 21*35238bceSAndroid Build Coastguard Worker *//*! 22*35238bceSAndroid Build Coastguard Worker * \file 23*35238bceSAndroid Build Coastguard Worker * \brief Draw call utilities. 24*35238bceSAndroid Build Coastguard Worker * 25*35238bceSAndroid Build Coastguard Worker * Draw call utilities provide an abstraction for commonly used draw calls. 26*35238bceSAndroid Build Coastguard Worker * The objective of that abstraction is to allow moving data to buffers 27*35238bceSAndroid Build Coastguard Worker * and state to VAOs automatically if target context doesn't support 28*35238bceSAndroid Build Coastguard Worker * user pointers or default VAOs. 29*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/ 30*35238bceSAndroid Build Coastguard Worker 31*35238bceSAndroid Build Coastguard Worker #include "gluDefs.hpp" 32*35238bceSAndroid Build Coastguard Worker 33*35238bceSAndroid Build Coastguard Worker #include <string> 34*35238bceSAndroid Build Coastguard Worker 35*35238bceSAndroid Build Coastguard Worker namespace glu 36*35238bceSAndroid Build Coastguard Worker { 37*35238bceSAndroid Build Coastguard Worker 38*35238bceSAndroid Build Coastguard Worker class RenderContext; 39*35238bceSAndroid Build Coastguard Worker 40*35238bceSAndroid Build Coastguard Worker enum VertexComponentType 41*35238bceSAndroid Build Coastguard Worker { 42*35238bceSAndroid Build Coastguard Worker // Standard types: all conversion types apply. 43*35238bceSAndroid Build Coastguard Worker VTX_COMP_UNSIGNED_INT8 = 0, 44*35238bceSAndroid Build Coastguard Worker VTX_COMP_UNSIGNED_INT16, 45*35238bceSAndroid Build Coastguard Worker VTX_COMP_UNSIGNED_INT32, 46*35238bceSAndroid Build Coastguard Worker VTX_COMP_SIGNED_INT8, 47*35238bceSAndroid Build Coastguard Worker VTX_COMP_SIGNED_INT16, 48*35238bceSAndroid Build Coastguard Worker VTX_COMP_SIGNED_INT32, 49*35238bceSAndroid Build Coastguard Worker 50*35238bceSAndroid Build Coastguard Worker // Special types: only CONVERT_NONE is allowed. 51*35238bceSAndroid Build Coastguard Worker VTX_COMP_FIXED, 52*35238bceSAndroid Build Coastguard Worker VTX_COMP_HALF_FLOAT, 53*35238bceSAndroid Build Coastguard Worker VTX_COMP_FLOAT, 54*35238bceSAndroid Build Coastguard Worker 55*35238bceSAndroid Build Coastguard Worker VTX_COMP_TYPE_LAST 56*35238bceSAndroid Build Coastguard Worker }; 57*35238bceSAndroid Build Coastguard Worker 58*35238bceSAndroid Build Coastguard Worker enum VertexComponentConversion 59*35238bceSAndroid Build Coastguard Worker { 60*35238bceSAndroid Build Coastguard Worker VTX_COMP_CONVERT_NONE = 0, //!< No conversion: integer types, or floating-point values. 61*35238bceSAndroid Build Coastguard Worker VTX_COMP_CONVERT_NORMALIZE_TO_FLOAT, //!< Normalize integers to range [0,1] or [-1,1] depending on type. 62*35238bceSAndroid Build Coastguard Worker VTX_COMP_CONVERT_CAST_TO_FLOAT, //!< Convert to floating-point directly. 63*35238bceSAndroid Build Coastguard Worker 64*35238bceSAndroid Build Coastguard Worker VTX_COMP_CONVERT_LAST 65*35238bceSAndroid Build Coastguard Worker }; 66*35238bceSAndroid Build Coastguard Worker 67*35238bceSAndroid Build Coastguard Worker enum IndexType 68*35238bceSAndroid Build Coastguard Worker { 69*35238bceSAndroid Build Coastguard Worker INDEXTYPE_UINT8, 70*35238bceSAndroid Build Coastguard Worker INDEXTYPE_UINT16, 71*35238bceSAndroid Build Coastguard Worker INDEXTYPE_UINT32, 72*35238bceSAndroid Build Coastguard Worker 73*35238bceSAndroid Build Coastguard Worker INDEXTYPE_LAST 74*35238bceSAndroid Build Coastguard Worker }; 75*35238bceSAndroid Build Coastguard Worker 76*35238bceSAndroid Build Coastguard Worker enum PrimitiveType 77*35238bceSAndroid Build Coastguard Worker { 78*35238bceSAndroid Build Coastguard Worker PRIMITIVETYPE_TRIANGLES = 0, 79*35238bceSAndroid Build Coastguard Worker PRIMITIVETYPE_TRIANGLE_STRIP, 80*35238bceSAndroid Build Coastguard Worker PRIMITIVETYPE_TRIANGLE_FAN, 81*35238bceSAndroid Build Coastguard Worker 82*35238bceSAndroid Build Coastguard Worker PRIMITIVETYPE_LINES, 83*35238bceSAndroid Build Coastguard Worker PRIMITIVETYPE_LINE_STRIP, 84*35238bceSAndroid Build Coastguard Worker PRIMITIVETYPE_LINE_LOOP, 85*35238bceSAndroid Build Coastguard Worker 86*35238bceSAndroid Build Coastguard Worker PRIMITIVETYPE_POINTS, 87*35238bceSAndroid Build Coastguard Worker 88*35238bceSAndroid Build Coastguard Worker PRIMITIVETYPE_PATCHES, 89*35238bceSAndroid Build Coastguard Worker 90*35238bceSAndroid Build Coastguard Worker PRIMITIVETYPE_LAST 91*35238bceSAndroid Build Coastguard Worker }; 92*35238bceSAndroid Build Coastguard Worker 93*35238bceSAndroid Build Coastguard Worker struct BindingPoint 94*35238bceSAndroid Build Coastguard Worker { 95*35238bceSAndroid Build Coastguard Worker enum Type 96*35238bceSAndroid Build Coastguard Worker { 97*35238bceSAndroid Build Coastguard Worker BPTYPE_LOCATION = 0, //!< Binding by numeric location. 98*35238bceSAndroid Build Coastguard Worker BPTYPE_NAME, //!< Binding by input name. 99*35238bceSAndroid Build Coastguard Worker 100*35238bceSAndroid Build Coastguard Worker BPTYPE_LAST 101*35238bceSAndroid Build Coastguard Worker }; 102*35238bceSAndroid Build Coastguard Worker 103*35238bceSAndroid Build Coastguard Worker Type type; //!< Binding type (name or location). 104*35238bceSAndroid Build Coastguard Worker std::string name; //!< Input name, or empty if is not binding by name. 105*35238bceSAndroid Build Coastguard Worker int location; //!< Input location, or offset to named location if binding by name. 106*35238bceSAndroid Build Coastguard Worker BindingPointglu::BindingPoint107*35238bceSAndroid Build Coastguard Worker BindingPoint(void) : type(BPTYPE_LAST), location(0) 108*35238bceSAndroid Build Coastguard Worker { 109*35238bceSAndroid Build Coastguard Worker } BindingPointglu::BindingPoint110*35238bceSAndroid Build Coastguard Worker explicit BindingPoint(int location_) : type(BPTYPE_LOCATION), location(location_) 111*35238bceSAndroid Build Coastguard Worker { 112*35238bceSAndroid Build Coastguard Worker } BindingPointglu::BindingPoint113*35238bceSAndroid Build Coastguard Worker explicit BindingPoint(const std::string &name_, int location_ = 0) 114*35238bceSAndroid Build Coastguard Worker : type(BPTYPE_NAME) 115*35238bceSAndroid Build Coastguard Worker , name(name_) 116*35238bceSAndroid Build Coastguard Worker , location(location_) 117*35238bceSAndroid Build Coastguard Worker { 118*35238bceSAndroid Build Coastguard Worker } 119*35238bceSAndroid Build Coastguard Worker }; 120*35238bceSAndroid Build Coastguard Worker 121*35238bceSAndroid Build Coastguard Worker struct VertexArrayPointer 122*35238bceSAndroid Build Coastguard Worker { 123*35238bceSAndroid Build Coastguard Worker VertexComponentType componentType; //!< Component type. 124*35238bceSAndroid Build Coastguard Worker VertexComponentConversion convert; //!< Component conversion type. 125*35238bceSAndroid Build Coastguard Worker int numComponents; //!< Number of components per element. 126*35238bceSAndroid Build Coastguard Worker int numElements; //!< Number of elements in total. 127*35238bceSAndroid Build Coastguard Worker int stride; //!< Element stride. 128*35238bceSAndroid Build Coastguard Worker 129*35238bceSAndroid Build Coastguard Worker const void *data; //!< Data pointer. 130*35238bceSAndroid Build Coastguard Worker VertexArrayPointerglu::VertexArrayPointer131*35238bceSAndroid Build Coastguard Worker VertexArrayPointer(VertexComponentType componentType_, VertexComponentConversion convert_, int numComponents_, 132*35238bceSAndroid Build Coastguard Worker int numElements_, int stride_, const void *data_) 133*35238bceSAndroid Build Coastguard Worker : componentType(componentType_) 134*35238bceSAndroid Build Coastguard Worker , convert(convert_) 135*35238bceSAndroid Build Coastguard Worker , numComponents(numComponents_) 136*35238bceSAndroid Build Coastguard Worker , numElements(numElements_) 137*35238bceSAndroid Build Coastguard Worker , stride(stride_) 138*35238bceSAndroid Build Coastguard Worker , data(data_) 139*35238bceSAndroid Build Coastguard Worker { 140*35238bceSAndroid Build Coastguard Worker } 141*35238bceSAndroid Build Coastguard Worker VertexArrayPointerglu::VertexArrayPointer142*35238bceSAndroid Build Coastguard Worker VertexArrayPointer(void) 143*35238bceSAndroid Build Coastguard Worker : componentType(VTX_COMP_TYPE_LAST) 144*35238bceSAndroid Build Coastguard Worker , convert(VTX_COMP_CONVERT_LAST) 145*35238bceSAndroid Build Coastguard Worker , numComponents(0) 146*35238bceSAndroid Build Coastguard Worker , numElements(0) 147*35238bceSAndroid Build Coastguard Worker , stride(0) 148*35238bceSAndroid Build Coastguard Worker , data(0) 149*35238bceSAndroid Build Coastguard Worker { 150*35238bceSAndroid Build Coastguard Worker } 151*35238bceSAndroid Build Coastguard Worker } DE_WARN_UNUSED_TYPE; 152*35238bceSAndroid Build Coastguard Worker 153*35238bceSAndroid Build Coastguard Worker struct VertexArrayBinding 154*35238bceSAndroid Build Coastguard Worker { 155*35238bceSAndroid Build Coastguard Worker BindingPoint binding; 156*35238bceSAndroid Build Coastguard Worker VertexArrayPointer pointer; 157*35238bceSAndroid Build Coastguard Worker VertexArrayBindingglu::VertexArrayBinding158*35238bceSAndroid Build Coastguard Worker VertexArrayBinding(const BindingPoint &binding_, const VertexArrayPointer &pointer_) 159*35238bceSAndroid Build Coastguard Worker : binding(binding_) 160*35238bceSAndroid Build Coastguard Worker , pointer(pointer_) 161*35238bceSAndroid Build Coastguard Worker { 162*35238bceSAndroid Build Coastguard Worker } 163*35238bceSAndroid Build Coastguard Worker VertexArrayBindingglu::VertexArrayBinding164*35238bceSAndroid Build Coastguard Worker VertexArrayBinding(void) 165*35238bceSAndroid Build Coastguard Worker { 166*35238bceSAndroid Build Coastguard Worker } 167*35238bceSAndroid Build Coastguard Worker } DE_WARN_UNUSED_TYPE; 168*35238bceSAndroid Build Coastguard Worker 169*35238bceSAndroid Build Coastguard Worker struct PrimitiveList 170*35238bceSAndroid Build Coastguard Worker { 171*35238bceSAndroid Build Coastguard Worker PrimitiveType type; //!< Primitive type. 172*35238bceSAndroid Build Coastguard Worker int numElements; //!< Number of elements to be drawn. 173*35238bceSAndroid Build Coastguard Worker IndexType indexType; //!< Index type or INDEXTYPE_LAST if not used 174*35238bceSAndroid Build Coastguard Worker const void *indices; //!< Index list or DE_NULL if not used. 175*35238bceSAndroid Build Coastguard Worker PrimitiveListglu::PrimitiveList176*35238bceSAndroid Build Coastguard Worker PrimitiveList(PrimitiveType type_, int numElements_) 177*35238bceSAndroid Build Coastguard Worker : type(type_) 178*35238bceSAndroid Build Coastguard Worker , numElements(numElements_) 179*35238bceSAndroid Build Coastguard Worker , indexType(INDEXTYPE_LAST) 180*35238bceSAndroid Build Coastguard Worker , indices(0) 181*35238bceSAndroid Build Coastguard Worker { 182*35238bceSAndroid Build Coastguard Worker } 183*35238bceSAndroid Build Coastguard Worker PrimitiveListglu::PrimitiveList184*35238bceSAndroid Build Coastguard Worker PrimitiveList(PrimitiveType type_, int numElements_, IndexType indexType_, const void *indices_) 185*35238bceSAndroid Build Coastguard Worker : type(type_) 186*35238bceSAndroid Build Coastguard Worker , numElements(numElements_) 187*35238bceSAndroid Build Coastguard Worker , indexType(indexType_) 188*35238bceSAndroid Build Coastguard Worker , indices(indices_) 189*35238bceSAndroid Build Coastguard Worker { 190*35238bceSAndroid Build Coastguard Worker } 191*35238bceSAndroid Build Coastguard Worker PrimitiveListglu::PrimitiveList192*35238bceSAndroid Build Coastguard Worker PrimitiveList(void) : type(PRIMITIVETYPE_LAST), numElements(0), indexType(INDEXTYPE_LAST), indices(0) 193*35238bceSAndroid Build Coastguard Worker { 194*35238bceSAndroid Build Coastguard Worker } 195*35238bceSAndroid Build Coastguard Worker } DE_WARN_UNUSED_TYPE; 196*35238bceSAndroid Build Coastguard Worker 197*35238bceSAndroid Build Coastguard Worker class DrawUtilCallback 198*35238bceSAndroid Build Coastguard Worker { 199*35238bceSAndroid Build Coastguard Worker public: beforeDrawCall(void)200*35238bceSAndroid Build Coastguard Worker virtual void beforeDrawCall(void) 201*35238bceSAndroid Build Coastguard Worker { 202*35238bceSAndroid Build Coastguard Worker } afterDrawCall(void)203*35238bceSAndroid Build Coastguard Worker virtual void afterDrawCall(void) 204*35238bceSAndroid Build Coastguard Worker { 205*35238bceSAndroid Build Coastguard Worker } 206*35238bceSAndroid Build Coastguard Worker }; 207*35238bceSAndroid Build Coastguard Worker 208*35238bceSAndroid Build Coastguard Worker void draw(const RenderContext &context, uint32_t program, int numVertexArrays, const VertexArrayBinding *vertexArrays, 209*35238bceSAndroid Build Coastguard Worker const PrimitiveList &primitives, DrawUtilCallback *callback = DE_NULL); 210*35238bceSAndroid Build Coastguard Worker 211*35238bceSAndroid Build Coastguard Worker void drawFromUserPointers(const RenderContext &context, uint32_t program, int numVertexArrays, 212*35238bceSAndroid Build Coastguard Worker const VertexArrayBinding *vertexArrays, const PrimitiveList &primitives, 213*35238bceSAndroid Build Coastguard Worker DrawUtilCallback *callback = DE_NULL); 214*35238bceSAndroid Build Coastguard Worker void drawFromBuffers(const RenderContext &context, uint32_t program, int numVertexArrays, 215*35238bceSAndroid Build Coastguard Worker const VertexArrayBinding *vertexArrays, const PrimitiveList &primitives, 216*35238bceSAndroid Build Coastguard Worker DrawUtilCallback *callback = DE_NULL); 217*35238bceSAndroid Build Coastguard Worker void drawFromVAOBuffers(const RenderContext &context, uint32_t program, int numVertexArrays, 218*35238bceSAndroid Build Coastguard Worker const VertexArrayBinding *vertexArrays, const PrimitiveList &primitives, 219*35238bceSAndroid Build Coastguard Worker DrawUtilCallback *callback = DE_NULL); 220*35238bceSAndroid Build Coastguard Worker 221*35238bceSAndroid Build Coastguard Worker // Shorthands for PrimitiveList 222*35238bceSAndroid Build Coastguard Worker namespace pr 223*35238bceSAndroid Build Coastguard Worker { 224*35238bceSAndroid Build Coastguard Worker 225*35238bceSAndroid Build Coastguard Worker #define DECLARE_PR_CTOR(NAME, TYPE) \ 226*35238bceSAndroid Build Coastguard Worker inline PrimitiveList NAME(int numElements) \ 227*35238bceSAndroid Build Coastguard Worker { \ 228*35238bceSAndroid Build Coastguard Worker return PrimitiveList(TYPE, numElements); \ 229*35238bceSAndroid Build Coastguard Worker } \ 230*35238bceSAndroid Build Coastguard Worker inline PrimitiveList NAME(int numElements, const uint8_t *indices) \ 231*35238bceSAndroid Build Coastguard Worker { \ 232*35238bceSAndroid Build Coastguard Worker return PrimitiveList(TYPE, numElements, INDEXTYPE_UINT8, indices); \ 233*35238bceSAndroid Build Coastguard Worker } \ 234*35238bceSAndroid Build Coastguard Worker inline PrimitiveList NAME(int numElements, const uint16_t *indices) \ 235*35238bceSAndroid Build Coastguard Worker { \ 236*35238bceSAndroid Build Coastguard Worker return PrimitiveList(TYPE, numElements, INDEXTYPE_UINT16, indices); \ 237*35238bceSAndroid Build Coastguard Worker } \ 238*35238bceSAndroid Build Coastguard Worker inline PrimitiveList NAME(int numElements, const uint32_t *indices) \ 239*35238bceSAndroid Build Coastguard Worker { \ 240*35238bceSAndroid Build Coastguard Worker return PrimitiveList(TYPE, numElements, INDEXTYPE_UINT32, indices); \ 241*35238bceSAndroid Build Coastguard Worker } \ 242*35238bceSAndroid Build Coastguard Worker struct DeclarePRCtor##NAME##Unused_s \ 243*35238bceSAndroid Build Coastguard Worker { \ 244*35238bceSAndroid Build Coastguard Worker int unused; \ 245*35238bceSAndroid Build Coastguard Worker } 246*35238bceSAndroid Build Coastguard Worker 247*35238bceSAndroid Build Coastguard Worker DECLARE_PR_CTOR(Triangles, PRIMITIVETYPE_TRIANGLES); 248*35238bceSAndroid Build Coastguard Worker DECLARE_PR_CTOR(TriangleStrip, PRIMITIVETYPE_TRIANGLE_STRIP); 249*35238bceSAndroid Build Coastguard Worker DECLARE_PR_CTOR(TriangleFan, PRIMITIVETYPE_TRIANGLE_FAN); 250*35238bceSAndroid Build Coastguard Worker 251*35238bceSAndroid Build Coastguard Worker DECLARE_PR_CTOR(Lines, PRIMITIVETYPE_LINES); 252*35238bceSAndroid Build Coastguard Worker DECLARE_PR_CTOR(LineStrip, PRIMITIVETYPE_LINE_STRIP); 253*35238bceSAndroid Build Coastguard Worker DECLARE_PR_CTOR(LineLineLoop, PRIMITIVETYPE_LINE_LOOP); 254*35238bceSAndroid Build Coastguard Worker 255*35238bceSAndroid Build Coastguard Worker DECLARE_PR_CTOR(Points, PRIMITIVETYPE_POINTS); 256*35238bceSAndroid Build Coastguard Worker 257*35238bceSAndroid Build Coastguard Worker DECLARE_PR_CTOR(Patches, PRIMITIVETYPE_PATCHES); 258*35238bceSAndroid Build Coastguard Worker 259*35238bceSAndroid Build Coastguard Worker } // namespace pr 260*35238bceSAndroid Build Coastguard Worker 261*35238bceSAndroid Build Coastguard Worker // Shorthands for VertexArrayBinding 262*35238bceSAndroid Build Coastguard Worker namespace va 263*35238bceSAndroid Build Coastguard Worker { 264*35238bceSAndroid Build Coastguard Worker 265*35238bceSAndroid Build Coastguard Worker #define DECLARE_VA_CTOR(NAME, DATATYPE, TYPE, CONVERT) \ 266*35238bceSAndroid Build Coastguard Worker inline VertexArrayBinding NAME(const std::string &name, int offset, int numComponents, int numElements, \ 267*35238bceSAndroid Build Coastguard Worker int stride, const DATATYPE *data) \ 268*35238bceSAndroid Build Coastguard Worker { \ 269*35238bceSAndroid Build Coastguard Worker return VertexArrayBinding(BindingPoint(name, offset), \ 270*35238bceSAndroid Build Coastguard Worker VertexArrayPointer(TYPE, CONVERT, numComponents, numElements, stride, data)); \ 271*35238bceSAndroid Build Coastguard Worker } \ 272*35238bceSAndroid Build Coastguard Worker inline VertexArrayBinding NAME(const std::string &name, int numComponents, int numElements, int stride, \ 273*35238bceSAndroid Build Coastguard Worker const DATATYPE *data) \ 274*35238bceSAndroid Build Coastguard Worker { \ 275*35238bceSAndroid Build Coastguard Worker return NAME(name, 0, numComponents, numElements, stride, data); \ 276*35238bceSAndroid Build Coastguard Worker } \ 277*35238bceSAndroid Build Coastguard Worker inline VertexArrayBinding NAME(int location, int numComponents, int numElements, int stride, const DATATYPE *data) \ 278*35238bceSAndroid Build Coastguard Worker { \ 279*35238bceSAndroid Build Coastguard Worker return VertexArrayBinding(BindingPoint(location), \ 280*35238bceSAndroid Build Coastguard Worker VertexArrayPointer(TYPE, CONVERT, numComponents, numElements, stride, data)); \ 281*35238bceSAndroid Build Coastguard Worker } \ 282*35238bceSAndroid Build Coastguard Worker struct DeclareVACtor##NAME##Unused_s \ 283*35238bceSAndroid Build Coastguard Worker { \ 284*35238bceSAndroid Build Coastguard Worker int unused; \ 285*35238bceSAndroid Build Coastguard Worker } 286*35238bceSAndroid Build Coastguard Worker 287*35238bceSAndroid Build Coastguard Worker // Integer types 288*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Uint8, uint8_t, VTX_COMP_UNSIGNED_INT8, VTX_COMP_CONVERT_NONE); 289*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Uint16, uint16_t, VTX_COMP_UNSIGNED_INT16, VTX_COMP_CONVERT_NONE); 290*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Uint32, uint32_t, VTX_COMP_UNSIGNED_INT32, VTX_COMP_CONVERT_NONE); 291*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Int8, int8_t, VTX_COMP_SIGNED_INT8, VTX_COMP_CONVERT_NONE); 292*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Int16, int16_t, VTX_COMP_SIGNED_INT16, VTX_COMP_CONVERT_NONE); 293*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Int32, int32_t, VTX_COMP_SIGNED_INT32, VTX_COMP_CONVERT_NONE); 294*35238bceSAndroid Build Coastguard Worker 295*35238bceSAndroid Build Coastguard Worker // Normalized integers. 296*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Unorm8, uint8_t, VTX_COMP_UNSIGNED_INT8, VTX_COMP_CONVERT_NORMALIZE_TO_FLOAT); 297*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Unorm16, uint16_t, VTX_COMP_UNSIGNED_INT16, VTX_COMP_CONVERT_NORMALIZE_TO_FLOAT); 298*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Unorm32, uint32_t, VTX_COMP_UNSIGNED_INT32, VTX_COMP_CONVERT_NORMALIZE_TO_FLOAT); 299*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Snorm8, int8_t, VTX_COMP_SIGNED_INT8, VTX_COMP_CONVERT_NORMALIZE_TO_FLOAT); 300*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Snorm16, int16_t, VTX_COMP_SIGNED_INT16, VTX_COMP_CONVERT_NORMALIZE_TO_FLOAT); 301*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Snorm32, int32_t, VTX_COMP_SIGNED_INT32, VTX_COMP_CONVERT_NORMALIZE_TO_FLOAT); 302*35238bceSAndroid Build Coastguard Worker 303*35238bceSAndroid Build Coastguard Worker // Integers converted to float. 304*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Uint8Float, uint8_t, VTX_COMP_UNSIGNED_INT8, VTX_COMP_CONVERT_CAST_TO_FLOAT); 305*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Uint16Float, uint16_t, VTX_COMP_UNSIGNED_INT16, VTX_COMP_CONVERT_CAST_TO_FLOAT); 306*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Uint32Float, uint32_t, VTX_COMP_UNSIGNED_INT32, VTX_COMP_CONVERT_CAST_TO_FLOAT); 307*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Int8Float, int8_t, VTX_COMP_SIGNED_INT8, VTX_COMP_CONVERT_CAST_TO_FLOAT); 308*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Int16Float, int16_t, VTX_COMP_SIGNED_INT16, VTX_COMP_CONVERT_CAST_TO_FLOAT); 309*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Int32Float, int32_t, VTX_COMP_SIGNED_INT32, VTX_COMP_CONVERT_CAST_TO_FLOAT); 310*35238bceSAndroid Build Coastguard Worker 311*35238bceSAndroid Build Coastguard Worker // Special types. 312*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Fixed, void, VTX_COMP_FIXED, VTX_COMP_CONVERT_NONE); 313*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Half, void, VTX_COMP_HALF_FLOAT, VTX_COMP_CONVERT_NONE); 314*35238bceSAndroid Build Coastguard Worker DECLARE_VA_CTOR(Float, float, VTX_COMP_FLOAT, VTX_COMP_CONVERT_NONE); 315*35238bceSAndroid Build Coastguard Worker 316*35238bceSAndroid Build Coastguard Worker #undef DECLARE_VA_CTOR 317*35238bceSAndroid Build Coastguard Worker 318*35238bceSAndroid Build Coastguard Worker } // namespace va 319*35238bceSAndroid Build Coastguard Worker 320*35238bceSAndroid Build Coastguard Worker } // namespace glu 321*35238bceSAndroid Build Coastguard Worker 322*35238bceSAndroid Build Coastguard Worker #endif // _GLUDRAWUTIL_HPP 323