13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef _SGLRCONTEXT_HPP 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define _SGLRCONTEXT_HPP 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program OpenGL ES Utilities 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ------------------------------------------------ 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Simplified GLES reference context. 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuDefs.hpp" 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuSurface.hpp" 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluRenderContext.hpp" 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "sglrShaderProgram.hpp" 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*--------------------------------------------------------------------*//*! 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Reference OpenGL API implementation 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace sglr 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// Abstract drawing context with GL-style API 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass Context 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic: 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry Context (glu::ContextType type) : m_type(type) {} 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual ~Context (void) {} 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual int getWidth (void) const = DE_NULL; 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual int getHeight (void) const = DE_NULL; 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void activeTexture (deUint32 texture) = DE_NULL; 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void viewport (int x, int y, int width, int height) = DE_NULL; 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void bindTexture (deUint32 target, deUint32 texture) = DE_NULL; 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void genTextures (int numTextures, deUint32* textures) = DE_NULL; 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void deleteTextures (int numTextures, const deUint32* textures) = DE_NULL; 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void bindFramebuffer (deUint32 target, deUint32 framebuffer) = DE_NULL; 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void genFramebuffers (int numFramebuffers, deUint32* framebuffers) = DE_NULL; 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void deleteFramebuffers (int numFramebuffers, const deUint32* framebuffers) = DE_NULL; 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void bindRenderbuffer (deUint32 target, deUint32 renderbuffer) = DE_NULL; 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void genRenderbuffers (int numRenderbuffers, deUint32* renderbuffers) = DE_NULL; 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void deleteRenderbuffers (int numRenderbuffers, const deUint32* renderbuffers) = DE_NULL; 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void pixelStorei (deUint32 pname, int param) = DE_NULL; 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texImage1D (deUint32 target, int level, deUint32 internalFormat, int width, int border, deUint32 format, deUint32 type, const void* data) = DE_NULL; 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texImage2D (deUint32 target, int level, deUint32 internalFormat, int width, int height, int border, deUint32 format, deUint32 type, const void* data) = DE_NULL; 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texImage3D (deUint32 target, int level, deUint32 internalFormat, int width, int height, int depth, int border, deUint32 format, deUint32 type, const void* data) = DE_NULL; 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texSubImage1D (deUint32 target, int level, int xoffset, int width, deUint32 format, deUint32 type, const void* data) = DE_NULL; 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texSubImage2D (deUint32 target, int level, int xoffset, int yoffset, int width, int height, deUint32 format, deUint32 type, const void* data) = DE_NULL; 703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texSubImage3D (deUint32 target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, deUint32 format, deUint32 type, const void* data) = DE_NULL; 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void copyTexImage1D (deUint32 target, int level, deUint32 internalFormat, int x, int y, int width, int border) = DE_NULL; 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void copyTexImage2D (deUint32 target, int level, deUint32 internalFormat, int x, int y, int width, int height, int border) = DE_NULL; 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void copyTexSubImage1D (deUint32 target, int level, int xoffset, int x, int y, int width) = DE_NULL; 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void copyTexSubImage2D (deUint32 target, int level, int xoffset, int yoffset, int x, int y, int width, int height) = DE_NULL; 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void copyTexSubImage3D (deUint32 target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) = DE_NULL; 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texStorage2D (deUint32 target, int levels, deUint32 internalFormat, int width, int height) = DE_NULL; 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texStorage3D (deUint32 target, int levels, deUint32 internalFormat, int width, int height, int depth) = DE_NULL; 793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texParameteri (deUint32 target, deUint32 pname, int value) = DE_NULL; 813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void framebufferTexture2D (deUint32 target, deUint32 attachment, deUint32 textarget, deUint32 texture, int level) = DE_NULL; 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void framebufferTextureLayer (deUint32 target, deUint32 attachment, deUint32 texture, int level, int layer) = DE_NULL; 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void framebufferRenderbuffer (deUint32 target, deUint32 attachment, deUint32 renderbuffertarget, deUint32 renderbuffer) = DE_NULL; 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual deUint32 checkFramebufferStatus (deUint32 target) = DE_NULL; 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void getFramebufferAttachmentParameteriv (deUint32 target, deUint32 attachment, deUint32 pname, int* params) = DE_NULL; 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void renderbufferStorage (deUint32 target, deUint32 internalformat, int width, int height) = DE_NULL; 903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void renderbufferStorageMultisample (deUint32 target, int samples, deUint32 internalFormat, int width, int height) = DE_NULL; 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void bindBuffer (deUint32 target, deUint32 buffer) = DE_NULL; 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void genBuffers (int numBuffers, deUint32* buffers) = DE_NULL; 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void deleteBuffers (int numBuffers, const deUint32* buffers) = DE_NULL; 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void bufferData (deUint32 target, deIntptr size, const void* data, deUint32 usage) = DE_NULL; 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void bufferSubData (deUint32 target, deIntptr offset, deIntptr size, const void* data) = DE_NULL; 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void clearColor (float red, float green, float blue, float alpha) = DE_NULL; 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void clearDepthf (float depth) = DE_NULL; 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void clearStencil (int stencil) = DE_NULL; 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void clear (deUint32 buffers) = DE_NULL; 1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void clearBufferiv (deUint32 buffer, int drawbuffer, const int* value) = DE_NULL; 1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void clearBufferfv (deUint32 buffer, int drawbuffer, const float* value) = DE_NULL; 1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void clearBufferuiv (deUint32 buffer, int drawbuffer, const deUint32* value) = DE_NULL; 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void clearBufferfi (deUint32 buffer, int drawbuffer, float depth, int stencil) = DE_NULL; 1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void scissor (int x, int y, int width, int height) = DE_NULL; 1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void enable (deUint32 cap) = DE_NULL; 1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void disable (deUint32 cap) = DE_NULL; 1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void stencilFunc (deUint32 func, int ref, deUint32 mask) = DE_NULL; 1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void stencilOp (deUint32 sfail, deUint32 dpfail, deUint32 dppass) = DE_NULL; 1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void stencilFuncSeparate (deUint32 face, deUint32 func, int ref, deUint32 mask) = DE_NULL; 1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void stencilOpSeparate (deUint32 face, deUint32 sfail, deUint32 dpfail, deUint32 dppass) = DE_NULL; 1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void depthFunc (deUint32 func) = DE_NULL; 1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void depthRangef (float n, float f) = DE_NULL; 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void depthRange (double n, double f) = DE_NULL; 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void polygonOffset (float factor, float units) = DE_NULL; 1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void provokingVertex (deUint32 convention) = DE_NULL; 1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void primitiveRestartIndex (deUint32 index) = DE_NULL; 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void blendEquation (deUint32 mode) = DE_NULL; 1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void blendEquationSeparate (deUint32 modeRGB, deUint32 modeAlpha) = DE_NULL; 1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void blendFunc (deUint32 src, deUint32 dst) = DE_NULL; 1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void blendFuncSeparate (deUint32 srcRGB, deUint32 dstRGB, deUint32 srcAlpha, deUint32 dstAlpha) = DE_NULL; 1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void blendColor (float red, float green, float blue, float alpha) = DE_NULL; 1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void colorMask (deBool r, deBool g, deBool b, deBool a) = DE_NULL; 1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void depthMask (deBool mask) = DE_NULL; 1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void stencilMask (deUint32 mask) = DE_NULL; 1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void stencilMaskSeparate (deUint32 face, deUint32 mask) = DE_NULL; 1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void blitFramebuffer (int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, deUint32 mask, deUint32 filter) = DE_NULL; 1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void invalidateSubFramebuffer(deUint32 target, int numAttachments, const deUint32* attachments, int x, int y, int width, int height) = DE_NULL; 1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void invalidateFramebuffer (deUint32 target, int numAttachments, const deUint32* attachments) = DE_NULL; 1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void bindVertexArray (deUint32 array) = DE_NULL; 1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void genVertexArrays (int numArrays, deUint32* vertexArrays) = DE_NULL; 1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void deleteVertexArrays (int numArrays, const deUint32* vertexArrays) = DE_NULL; 1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void vertexAttribPointer (deUint32 index, int size, deUint32 type, deBool normalized, int stride, const void *pointer) = DE_NULL; 1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void vertexAttribIPointer (deUint32 index, int size, deUint32 type, int stride, const void *pointer) = DE_NULL; 1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void enableVertexAttribArray (deUint32 index) = DE_NULL; 1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void disableVertexAttribArray(deUint32 index) = DE_NULL; 1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void vertexAttribDivisor (deUint32 index, deUint32 divisor) = DE_NULL; 1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void vertexAttrib1f (deUint32 index, float) = DE_NULL; 1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void vertexAttrib2f (deUint32 index, float, float) = DE_NULL; 1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void vertexAttrib3f (deUint32 index, float, float, float) = DE_NULL; 1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void vertexAttrib4f (deUint32 index, float, float, float, float) = DE_NULL; 1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void vertexAttribI4i (deUint32 index, deInt32, deInt32, deInt32, deInt32) = DE_NULL; 1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void vertexAttribI4ui (deUint32 index, deUint32, deUint32, deUint32, deUint32) = DE_NULL; 1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual deInt32 getAttribLocation (deUint32 program, const char *name) = DE_NULL; 1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform1f (deInt32 index, float) = DE_NULL; 1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform1i (deInt32 index, deInt32) = DE_NULL; 1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform1fv (deInt32 index, deInt32 count, const float*) = DE_NULL; 1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform2fv (deInt32 index, deInt32 count, const float*) = DE_NULL; 1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform3fv (deInt32 index, deInt32 count, const float*) = DE_NULL; 1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform4fv (deInt32 index, deInt32 count, const float*) = DE_NULL; 1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform1iv (deInt32 index, deInt32 count, const deInt32*) = DE_NULL; 1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform2iv (deInt32 index, deInt32 count, const deInt32*) = DE_NULL; 1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform3iv (deInt32 index, deInt32 count, const deInt32*) = DE_NULL; 1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniform4iv (deInt32 index, deInt32 count, const deInt32*) = DE_NULL; 1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniformMatrix3fv (deInt32 location, deInt32 count, deInt32 transpose, const float *value) = DE_NULL; 1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void uniformMatrix4fv (deInt32 location, deInt32 count, deInt32 transpose, const float *value) = DE_NULL; 1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual deInt32 getUniformLocation (deUint32 program, const char *name) = DE_NULL; 1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void lineWidth (float) = DE_NULL; 1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawArrays (deUint32 mode, int first, int count) = DE_NULL; 1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawArraysInstanced (deUint32 mode, int first, int count, int instanceCount) = DE_NULL; 1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawElements (deUint32 mode, int count, deUint32 type, const void *indices) = DE_NULL; 1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawElementsInstanced (deUint32 mode, int count, deUint32 type, const void *indices, int instanceCount) = DE_NULL; 1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawElementsBaseVertex (deUint32 mode, int count, deUint32 type, const void *indices, int baseVertex) = DE_NULL; 1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawElementsInstancedBaseVertex (deUint32 mode, int count, deUint32 type, const void *indices, int instanceCount, int baseVertex) = DE_NULL; 1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawRangeElements (deUint32 mode, deUint32 start, deUint32 end, int count, deUint32 type, const void *indices) = DE_NULL; 1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawRangeElementsBaseVertex (deUint32 mode, deUint32 start, deUint32 end, int count, deUint32 type, const void *indices, int baseVertex) = DE_NULL; 1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawArraysIndirect (deUint32 mode, const void *indirect) = DE_NULL; 1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void drawElementsIndirect (deUint32 mode, deUint32 type, const void *indirect) = DE_NULL; 1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void multiDrawArrays (deUint32 mode, const int* first, const int* count, int primCount) = DE_NULL; 1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void multiDrawElements (deUint32 mode, const int* count, deUint32 type, const void** indices, int primCount) = DE_NULL; 1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void multiDrawElementsBaseVertex (deUint32 mode, const int* count, deUint32 type, const void** indices, int primCount, const int* baseVertex) = DE_NULL; 1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual deUint32 createProgram (ShaderProgram* program) = DE_NULL; 1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void useProgram (deUint32 program) = DE_NULL; 1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void deleteProgram (deUint32 program) = DE_NULL; 1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void readPixels (int x, int y, int width, int height, deUint32 format, deUint32 type, void* data) = DE_NULL; 1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual deUint32 getError (void) = DE_NULL; 1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void finish (void) = DE_NULL; 2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void getIntegerv (deUint32 pname, int* params) = DE_NULL; 2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual const char* getString (deUint32 pname) = DE_NULL; 2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Helpers implemented by Context. 2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texImage2D (deUint32 target, int level, deUint32 internalFormat, const tcu::Surface& src); 2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texImage2D (deUint32 target, int level, deUint32 internalFormat, int width, int height); 2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void texSubImage2D (deUint32 target, int level, int xoffset, int yoffset, const tcu::Surface& src); 2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void readPixels (tcu::Surface& dst, int x, int y, int width, int height); 2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry glu::ContextType getType (void) { return m_type; } 2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate: 2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const glu::ContextType m_type; 2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // sglr 2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif // _SGLRCONTEXT_HPP 219