summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp')
-rw-r--r--src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp1390
1 files changed, 746 insertions, 644 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp b/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
index 16d9c1775d..64f67d7d6d 100644
--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
@@ -1,3 +1,4 @@
+#include "precompiled.h"
//
// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
@@ -6,29 +7,19 @@
// libGLESv2.cpp: Implements the exported OpenGL ES 2.0 functions.
-#define GL_APICALL
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-
-#include <exception>
-#include <limits>
-
-#include "common/debug.h"
#include "common/version.h"
#include "libGLESv2/main.h"
-#include "libGLESv2/mathutil.h"
#include "libGLESv2/utilities.h"
#include "libGLESv2/Buffer.h"
-#include "libGLESv2/Context.h"
#include "libGLESv2/Fence.h"
#include "libGLESv2/Framebuffer.h"
+#include "libGLESv2/Renderbuffer.h"
#include "libGLESv2/Program.h"
#include "libGLESv2/ProgramBinary.h"
-#include "libGLESv2/Renderbuffer.h"
-#include "libGLESv2/Shader.h"
#include "libGLESv2/Texture.h"
#include "libGLESv2/Query.h"
+#include "libGLESv2/Context.h"
bool validImageSize(GLint level, GLsizei width, GLsizei height)
{
@@ -71,7 +62,7 @@ bool checkTextureFormatType(GLenum format, GLenum type)
case GL_DEPTH_STENCIL_OES:
break;
default:
- return error(GL_INVALID_ENUM, false);
+ return gl::error(GL_INVALID_ENUM, false);
}
// invalid <type> -> sets INVALID_ENUM
@@ -89,7 +80,7 @@ bool checkTextureFormatType(GLenum format, GLenum type)
case GL_LUMINANCE_ALPHA:
return true;
default:
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
case GL_FLOAT:
@@ -103,7 +94,7 @@ bool checkTextureFormatType(GLenum format, GLenum type)
case GL_LUMINANCE_ALPHA:
return true;
default:
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
case GL_UNSIGNED_SHORT_4_4_4_4:
@@ -113,7 +104,7 @@ bool checkTextureFormatType(GLenum format, GLenum type)
case GL_RGBA:
return true;
default:
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
case GL_UNSIGNED_SHORT_5_6_5:
@@ -122,7 +113,7 @@ bool checkTextureFormatType(GLenum format, GLenum type)
case GL_RGB:
return true;
default:
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
case GL_UNSIGNED_SHORT:
@@ -132,7 +123,7 @@ bool checkTextureFormatType(GLenum format, GLenum type)
case GL_DEPTH_COMPONENT:
return true;
default:
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
case GL_UNSIGNED_INT_24_8_OES:
@@ -141,11 +132,11 @@ bool checkTextureFormatType(GLenum format, GLenum type)
case GL_DEPTH_STENCIL_OES:
return true;
default:
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
default:
- return error(GL_INVALID_ENUM, false);
+ return gl::error(GL_INVALID_ENUM, false);
}
}
@@ -155,12 +146,12 @@ bool validateSubImageParams2D(bool compressed, GLsizei width, GLsizei height,
{
if (!texture)
{
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
if (compressed != texture->isCompressed(level))
{
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
if (format != GL_NONE)
@@ -168,7 +159,7 @@ bool validateSubImageParams2D(bool compressed, GLsizei width, GLsizei height,
GLenum internalformat = gl::ConvertSizedInternalFormat(format, type);
if (internalformat != texture->getInternalFormat(level))
{
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
}
@@ -177,14 +168,14 @@ bool validateSubImageParams2D(bool compressed, GLsizei width, GLsizei height,
if ((width % 4 != 0 && width != texture->getWidth(0)) ||
(height % 4 != 0 && height != texture->getHeight(0)))
{
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
}
if (xoffset + width > texture->getWidth(level) ||
yoffset + height > texture->getHeight(level))
{
- return error(GL_INVALID_VALUE, false);
+ return gl::error(GL_INVALID_VALUE, false);
}
return true;
@@ -196,12 +187,12 @@ bool validateSubImageParamsCube(bool compressed, GLsizei width, GLsizei height,
{
if (!texture)
{
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
if (compressed != texture->isCompressed(target, level))
{
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
if (format != GL_NONE)
@@ -209,7 +200,7 @@ bool validateSubImageParamsCube(bool compressed, GLsizei width, GLsizei height,
GLenum internalformat = gl::ConvertSizedInternalFormat(format, type);
if (internalformat != texture->getInternalFormat(target, level))
{
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
}
@@ -218,14 +209,14 @@ bool validateSubImageParamsCube(bool compressed, GLsizei width, GLsizei height,
if ((width % 4 != 0 && width != texture->getWidth(target, 0)) ||
(height % 4 != 0 && height != texture->getHeight(target, 0)))
{
- return error(GL_INVALID_OPERATION, false);
+ return gl::error(GL_INVALID_OPERATION, false);
}
}
if (xoffset + width > texture->getWidth(target, level) ||
yoffset + height > texture->getHeight(target, level))
{
- return error(GL_INVALID_VALUE, false);
+ return gl::error(GL_INVALID_VALUE, false);
}
return true;
@@ -277,7 +268,7 @@ void __stdcall glActiveTexture(GLenum texture)
{
if (texture < GL_TEXTURE0 || texture > GL_TEXTURE0 + context->getMaximumCombinedTextureImageUnits() - 1)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
context->setActiveSampler(texture - GL_TEXTURE0);
@@ -285,7 +276,7 @@ void __stdcall glActiveTexture(GLenum texture)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -306,11 +297,11 @@ void __stdcall glAttachShader(GLuint program, GLuint shader)
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
@@ -318,23 +309,23 @@ void __stdcall glAttachShader(GLuint program, GLuint shader)
{
if (context->getProgram(shader))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
if (!programObject->attachShader(shaderObject))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -350,12 +341,12 @@ void __stdcall glBeginQueryEXT(GLenum target, GLuint id)
case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (id == 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::Context *context = gl::getNonLostContext();
@@ -367,7 +358,7 @@ void __stdcall glBeginQueryEXT(GLenum target, GLuint id)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -379,7 +370,7 @@ void __stdcall glBindAttribLocation(GLuint program, GLuint index, const GLchar*
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -392,17 +383,17 @@ void __stdcall glBindAttribLocation(GLuint program, GLuint index, const GLchar*
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
if (strncmp(name, "gl_", 3) == 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
programObject->bindAttributeLocation(index, name);
@@ -410,7 +401,7 @@ void __stdcall glBindAttribLocation(GLuint program, GLuint index, const GLchar*
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -433,13 +424,13 @@ void __stdcall glBindBuffer(GLenum target, GLuint buffer)
context->bindElementArrayBuffer(buffer);
return;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -451,7 +442,7 @@ void __stdcall glBindFramebuffer(GLenum target, GLuint framebuffer)
{
if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -471,7 +462,7 @@ void __stdcall glBindFramebuffer(GLenum target, GLuint framebuffer)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -483,7 +474,7 @@ void __stdcall glBindRenderbuffer(GLenum target, GLuint renderbuffer)
{
if (target != GL_RENDERBUFFER)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -495,7 +486,7 @@ void __stdcall glBindRenderbuffer(GLenum target, GLuint renderbuffer)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -513,7 +504,7 @@ void __stdcall glBindTexture(GLenum target, GLuint texture)
if (textureObject && textureObject->getTarget() != target && texture != 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
switch (target)
@@ -525,13 +516,13 @@ void __stdcall glBindTexture(GLenum target, GLuint texture)
context->bindTextureCubeMap(texture);
return;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -551,7 +542,7 @@ void __stdcall glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclamp
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -573,7 +564,7 @@ void __stdcall glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
case GL_FUNC_REVERSE_SUBTRACT:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (modeAlpha)
@@ -583,7 +574,7 @@ void __stdcall glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
case GL_FUNC_REVERSE_SUBTRACT:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -595,7 +586,7 @@ void __stdcall glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -630,7 +621,7 @@ void __stdcall glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha
case GL_SRC_ALPHA_SATURATE:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (dstRGB)
@@ -651,7 +642,7 @@ void __stdcall glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha
case GL_ONE_MINUS_CONSTANT_ALPHA:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (srcAlpha)
@@ -673,7 +664,7 @@ void __stdcall glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha
case GL_SRC_ALPHA_SATURATE:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (dstAlpha)
@@ -694,7 +685,7 @@ void __stdcall glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha
case GL_ONE_MINUS_CONSTANT_ALPHA:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
bool constantColorUsed = (srcRGB == GL_CONSTANT_COLOR || srcRGB == GL_ONE_MINUS_CONSTANT_COLOR ||
@@ -706,7 +697,7 @@ void __stdcall glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha
if (constantColorUsed && constantAlphaUsed)
{
ERR("Simultaneous use of GL_CONSTANT_ALPHA/GL_ONE_MINUS_CONSTANT_ALPHA and GL_CONSTANT_COLOR/GL_ONE_MINUS_CONSTANT_COLOR invalid under WebGL");
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::Context *context = gl::getNonLostContext();
@@ -718,7 +709,7 @@ void __stdcall glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -731,7 +722,7 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data,
{
if (size < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (usage)
@@ -741,7 +732,7 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data,
case GL_DYNAMIC_DRAW:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -759,12 +750,12 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data,
buffer = context->getElementArrayBuffer();
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (!buffer)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
buffer->bufferData(data, size, usage);
@@ -772,7 +763,7 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data,
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -785,7 +776,7 @@ void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
{
if (size < 0 || offset < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (data == NULL)
@@ -808,17 +799,17 @@ void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
buffer = context->getElementArrayBuffer();
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (!buffer)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if ((size_t)size + offset > buffer->size())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
buffer->bufferSubData(data, size, offset);
@@ -826,7 +817,7 @@ void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -838,7 +829,7 @@ GLenum __stdcall glCheckFramebufferStatus(GLenum target)
{
if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE)
{
- return error(GL_INVALID_ENUM, 0);
+ return gl::error(GL_INVALID_ENUM, 0);
}
gl::Context *context = gl::getNonLostContext();
@@ -860,7 +851,7 @@ GLenum __stdcall glCheckFramebufferStatus(GLenum target)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, 0);
+ return gl::error(GL_OUT_OF_MEMORY, 0);
}
return 0;
@@ -881,7 +872,7 @@ void __stdcall glClear(GLbitfield mask)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -901,7 +892,7 @@ void __stdcall glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclamp
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -920,7 +911,7 @@ void __stdcall glClearDepthf(GLclampf depth)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -939,7 +930,7 @@ void __stdcall glClearStencil(GLint s)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -959,7 +950,7 @@ void __stdcall glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboo
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -979,11 +970,11 @@ void __stdcall glCompileShader(GLuint shader)
{
if (context->getProgram(shader))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
@@ -992,7 +983,7 @@ void __stdcall glCompileShader(GLuint shader)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1007,7 +998,7 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
{
if (!validImageSize(level, width, height) || border != 0 || imageSize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (internalformat)
@@ -1018,12 +1009,22 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (border != 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_OPERATION);
+ }
+
+ if (width != 1 && width != 2 && width % 4 != 0)
+ {
+ return gl::error(GL_INVALID_OPERATION);
+ }
+
+ if (height != 1 && height != 2 && height % 4 != 0)
+ {
+ return gl::error(GL_INVALID_OPERATION);
}
gl::Context *context = gl::getNonLostContext();
@@ -1032,7 +1033,7 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
{
if (level > context->getMaximumTextureLevel())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (target)
@@ -1041,7 +1042,7 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
if (width > (context->getMaximumTextureDimension() >> level) ||
height > (context->getMaximumTextureDimension() >> level))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
@@ -1052,17 +1053,17 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
if (width != height)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (width > (context->getMaximumCubeTextureDimension() >> level) ||
height > (context->getMaximumCubeTextureDimension() >> level))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (internalformat) {
@@ -1070,19 +1071,19 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
if (!context->supportsDXT1Textures())
{
- return error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
+ return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
if (!context->supportsDXT3Textures())
{
- return error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
+ return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
if (!context->supportsDXT5Textures())
{
- return error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
+ return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
}
break;
default: UNREACHABLE();
@@ -1090,7 +1091,7 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
if (imageSize != gl::ComputeCompressedSize(width, height, internalformat))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (target == GL_TEXTURE_2D)
@@ -1099,12 +1100,12 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
if (!texture)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (texture->isImmutable())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
texture->setCompressedImage(level, internalformat, width, height, imageSize, data);
@@ -1115,12 +1116,12 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
if (!texture)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (texture->isImmutable())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
switch (target)
@@ -1141,7 +1142,7 @@ void __stdcall glCompressedTexImage2D(GLenum target, GLint level, GLenum interna
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1157,12 +1158,12 @@ void __stdcall glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffs
{
if (!gl::IsInternalTextureTarget(target))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (xoffset < 0 || yoffset < 0 || !validImageSize(level, width, height) || imageSize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (format)
@@ -1173,7 +1174,7 @@ void __stdcall glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffs
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (width == 0 || height == 0 || data == NULL)
@@ -1187,7 +1188,7 @@ void __stdcall glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffs
{
if (level > context->getMaximumTextureLevel())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (format) {
@@ -1195,19 +1196,19 @@ void __stdcall glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffs
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
if (!context->supportsDXT1Textures())
{
- return error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
+ return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
if (!context->supportsDXT3Textures())
{
- return error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
+ return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
if (!context->supportsDXT5Textures())
{
- return error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
+ return gl::error(GL_INVALID_ENUM); // in this case, it's as though the internal format switch failed
}
break;
default: UNREACHABLE();
@@ -1215,12 +1216,12 @@ void __stdcall glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffs
if (imageSize != gl::ComputeCompressedSize(width, height, format))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (xoffset % 4 != 0 || yoffset % 4 != 0)
{
- return error(GL_INVALID_OPERATION); // we wait to check the offsets until this point, because the multiple-of-four restriction
+ return gl::error(GL_INVALID_OPERATION); // we wait to check the offsets until this point, because the multiple-of-four restriction
// does not exist unless DXT textures are supported.
}
@@ -1248,7 +1249,7 @@ void __stdcall glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffs
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1262,12 +1263,12 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
{
if (!validImageSize(level, width, height))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (border != 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -1276,7 +1277,7 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
{
if (level > context->getMaximumTextureLevel())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (target)
@@ -1285,7 +1286,7 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
if (width > (context->getMaximumTextureDimension() >> level) ||
height > (context->getMaximumTextureDimension() >> level))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
@@ -1296,32 +1297,32 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
if (width != height)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (width > (context->getMaximumCubeTextureDimension() >> level) ||
height > (context->getMaximumCubeTextureDimension() >> level))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Framebuffer *framebuffer = context->getReadFramebuffer();
if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE)
{
- return error(GL_INVALID_FRAMEBUFFER_OPERATION);
+ return gl::error(GL_INVALID_FRAMEBUFFER_OPERATION);
}
- if (context->getReadFramebufferHandle() != 0 && framebuffer->getColorbuffer()->getSamples() != 0)
+ if (context->getReadFramebufferHandle() != 0 && framebuffer->getSamples() != 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
- gl::Renderbuffer *source = framebuffer->getColorbuffer();
+ gl::Renderbuffer *source = framebuffer->getReadColorbuffer();
GLenum colorbufferFormat = source->getInternalFormat();
// [OpenGL ES 2.0.24] table 3.9
@@ -1331,9 +1332,10 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
if (colorbufferFormat != GL_ALPHA8_EXT &&
colorbufferFormat != GL_RGBA4 &&
colorbufferFormat != GL_RGB5_A1 &&
+ colorbufferFormat != GL_BGRA8_EXT &&
colorbufferFormat != GL_RGBA8_OES)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_LUMINANCE:
@@ -1342,49 +1344,51 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
colorbufferFormat != GL_RGB8_OES &&
colorbufferFormat != GL_RGBA4 &&
colorbufferFormat != GL_RGB5_A1 &&
+ colorbufferFormat != GL_BGRA8_EXT &&
colorbufferFormat != GL_RGBA8_OES)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_LUMINANCE_ALPHA:
case GL_RGBA:
if (colorbufferFormat != GL_RGBA4 &&
colorbufferFormat != GL_RGB5_A1 &&
+ colorbufferFormat != GL_BGRA8_EXT &&
colorbufferFormat != GL_RGBA8_OES)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
if (context->supportsDXT1Textures())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
if (context->supportsDXT3Textures())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
if (context->supportsDXT5Textures())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_DEPTH_COMPONENT:
@@ -1394,14 +1398,14 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
case GL_DEPTH24_STENCIL8_OES:
if (context->supportsDepthTextures())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (target == GL_TEXTURE_2D)
@@ -1410,12 +1414,12 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
if (!texture)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (texture->isImmutable())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
texture->copyImage(level, internalformat, x, y, width, height, framebuffer);
@@ -1426,12 +1430,12 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
if (!texture)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (texture->isImmutable())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
texture->copyImage(target, level, internalformat, x, y, width, height, framebuffer);
@@ -1441,7 +1445,7 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1455,17 +1459,17 @@ void __stdcall glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GL
{
if (!gl::IsInternalTextureTarget(target))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (level < 0 || xoffset < 0 || yoffset < 0 || width < 0 || height < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (std::numeric_limits<GLsizei>::max() - xoffset < width || std::numeric_limits<GLsizei>::max() - yoffset < height)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (width == 0 || height == 0)
@@ -1479,22 +1483,22 @@ void __stdcall glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GL
{
if (level > context->getMaximumTextureLevel())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Framebuffer *framebuffer = context->getReadFramebuffer();
if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE)
{
- return error(GL_INVALID_FRAMEBUFFER_OPERATION);
+ return gl::error(GL_INVALID_FRAMEBUFFER_OPERATION);
}
- if (context->getReadFramebufferHandle() != 0 && framebuffer->getColorbuffer()->getSamples() != 0)
+ if (context->getReadFramebufferHandle() != 0 && framebuffer->getSamples() != 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
- gl::Renderbuffer *source = framebuffer->getColorbuffer();
+ gl::Renderbuffer *source = framebuffer->getReadColorbuffer();
GLenum colorbufferFormat = source->getInternalFormat();
gl::Texture *texture = NULL;
GLenum textureFormat = GL_RGBA;
@@ -1532,7 +1536,7 @@ void __stdcall glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GL
colorbufferFormat != GL_RGB5_A1 &&
colorbufferFormat != GL_RGBA8_OES)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_LUMINANCE:
@@ -1543,7 +1547,7 @@ void __stdcall glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GL
colorbufferFormat != GL_RGB5_A1 &&
colorbufferFormat != GL_RGBA8_OES)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_LUMINANCE_ALPHA:
@@ -1552,19 +1556,19 @@ void __stdcall glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GL
colorbufferFormat != GL_RGB5_A1 &&
colorbufferFormat != GL_RGBA8_OES)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
case GL_DEPTH_COMPONENT:
case GL_DEPTH_STENCIL_OES:
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
default:
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
texture->copySubImage(target, level, xoffset, yoffset, x, y, width, height, framebuffer);
@@ -1573,7 +1577,7 @@ void __stdcall glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GL
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1592,7 +1596,7 @@ GLuint __stdcall glCreateProgram(void)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, 0);
+ return gl::error(GL_OUT_OF_MEMORY, 0);
}
return 0;
@@ -1614,13 +1618,13 @@ GLuint __stdcall glCreateShader(GLenum type)
case GL_VERTEX_SHADER:
return context->createShader(type);
default:
- return error(GL_INVALID_ENUM, 0);
+ return gl::error(GL_INVALID_ENUM, 0);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, 0);
+ return gl::error(GL_OUT_OF_MEMORY, 0);
}
return 0;
@@ -1647,12 +1651,12 @@ void __stdcall glCullFace(GLenum mode)
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1664,7 +1668,7 @@ void __stdcall glDeleteBuffers(GLsizei n, const GLuint* buffers)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -1679,7 +1683,7 @@ void __stdcall glDeleteBuffers(GLsizei n, const GLuint* buffers)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1691,7 +1695,7 @@ void __stdcall glDeleteFencesNV(GLsizei n, const GLuint* fences)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -1706,7 +1710,7 @@ void __stdcall glDeleteFencesNV(GLsizei n, const GLuint* fences)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1718,7 +1722,7 @@ void __stdcall glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -1736,7 +1740,7 @@ void __stdcall glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1759,11 +1763,11 @@ void __stdcall glDeleteProgram(GLuint program)
{
if(context->getShader(program))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
@@ -1772,7 +1776,7 @@ void __stdcall glDeleteProgram(GLuint program)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1784,7 +1788,7 @@ void __stdcall glDeleteQueriesEXT(GLsizei n, const GLuint *ids)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -1799,7 +1803,7 @@ void __stdcall glDeleteQueriesEXT(GLsizei n, const GLuint *ids)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1811,7 +1815,7 @@ void __stdcall glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -1826,7 +1830,7 @@ void __stdcall glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1849,11 +1853,11 @@ void __stdcall glDeleteShader(GLuint shader)
{
if(context->getProgram(shader))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
@@ -1862,7 +1866,7 @@ void __stdcall glDeleteShader(GLuint shader)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1874,7 +1878,7 @@ void __stdcall glDeleteTextures(GLsizei n, const GLuint* textures)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -1892,7 +1896,7 @@ void __stdcall glDeleteTextures(GLsizei n, const GLuint* textures)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1914,7 +1918,7 @@ void __stdcall glDepthFunc(GLenum func)
case GL_NOTEQUAL:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -1926,7 +1930,7 @@ void __stdcall glDepthFunc(GLenum func)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1945,7 +1949,7 @@ void __stdcall glDepthMask(GLboolean flag)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1964,7 +1968,7 @@ void __stdcall glDepthRangef(GLclampf zNear, GLclampf zFar)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -1988,11 +1992,11 @@ void __stdcall glDetachShader(GLuint program, GLuint shader)
shaderByProgramHandle = context->getShader(program);
if (!shaderByProgramHandle)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
else
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
@@ -2001,23 +2005,23 @@ void __stdcall glDetachShader(GLuint program, GLuint shader)
gl::Program *programByShaderHandle = context->getProgram(shader);
if (!programByShaderHandle)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
else
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
if (!programObject->detachShader(shaderObject))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2043,13 +2047,13 @@ void __stdcall glDisable(GLenum cap)
case GL_BLEND: context->setBlend(false); break;
case GL_DITHER: context->setDither(false); break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2061,7 +2065,7 @@ void __stdcall glDisableVertexAttribArray(GLuint index)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2073,7 +2077,7 @@ void __stdcall glDisableVertexAttribArray(GLuint index)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2085,7 +2089,7 @@ void __stdcall glDrawArrays(GLenum mode, GLint first, GLsizei count)
{
if (count < 0 || first < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2097,7 +2101,7 @@ void __stdcall glDrawArrays(GLenum mode, GLint first, GLsizei count)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2109,7 +2113,7 @@ void __stdcall glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei coun
{
if (count < 0 || first < 0 || primcount < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (primcount > 0)
@@ -2124,7 +2128,7 @@ void __stdcall glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei coun
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2137,7 +2141,7 @@ void __stdcall glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLv
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2152,11 +2156,11 @@ void __stdcall glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLv
case GL_UNSIGNED_INT:
if (!context->supports32bitIndices())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
context->drawElements(mode, count, type, indices, 0);
@@ -2164,7 +2168,7 @@ void __stdcall glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLv
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2177,7 +2181,7 @@ void __stdcall glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum t
{
if (count < 0 || primcount < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (primcount > 0)
@@ -2194,11 +2198,11 @@ void __stdcall glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum t
case GL_UNSIGNED_INT:
if (!context->supports32bitIndices())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
context->drawElements(mode, count, type, indices, primcount);
@@ -2207,7 +2211,7 @@ void __stdcall glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum t
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2233,13 +2237,13 @@ void __stdcall glEnable(GLenum cap)
case GL_BLEND: context->setBlend(true); break;
case GL_DITHER: context->setDither(true); break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2251,7 +2255,7 @@ void __stdcall glEnableVertexAttribArray(GLuint index)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2263,7 +2267,7 @@ void __stdcall glEnableVertexAttribArray(GLuint index)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2279,7 +2283,7 @@ void __stdcall glEndQueryEXT(GLenum target)
case GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -2291,7 +2295,7 @@ void __stdcall glEndQueryEXT(GLenum target)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2309,7 +2313,7 @@ void __stdcall glFinishFenceNV(GLuint fence)
if (fenceObject == NULL)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
fenceObject->finishFence();
@@ -2317,7 +2321,7 @@ void __stdcall glFinishFenceNV(GLuint fence)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2336,7 +2340,7 @@ void __stdcall glFinish(void)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2355,7 +2359,7 @@ void __stdcall glFlush(void)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2369,7 +2373,7 @@ void __stdcall glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenu
if ((target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE)
|| (renderbuffertarget != GL_RENDERBUFFER && renderbuffer != 0))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -2391,28 +2395,39 @@ void __stdcall glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenu
if (!framebuffer || (framebufferHandle == 0 && renderbuffer != 0))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
- switch (attachment)
+ if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT)
{
- case GL_COLOR_ATTACHMENT0:
- framebuffer->setColorbuffer(GL_RENDERBUFFER, renderbuffer);
- break;
- case GL_DEPTH_ATTACHMENT:
- framebuffer->setDepthbuffer(GL_RENDERBUFFER, renderbuffer);
- break;
- case GL_STENCIL_ATTACHMENT:
- framebuffer->setStencilbuffer(GL_RENDERBUFFER, renderbuffer);
- break;
- default:
- return error(GL_INVALID_ENUM);
+ const unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT);
+
+ if (colorAttachment >= context->getMaximumRenderTargets())
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
+ framebuffer->setColorbuffer(colorAttachment, GL_RENDERBUFFER, renderbuffer);
+ }
+ else
+ {
+ switch (attachment)
+ {
+ case GL_DEPTH_ATTACHMENT:
+ framebuffer->setDepthbuffer(GL_RENDERBUFFER, renderbuffer);
+ break;
+ case GL_STENCIL_ATTACHMENT:
+ framebuffer->setStencilbuffer(GL_RENDERBUFFER, renderbuffer);
+ break;
+ default:
+ return gl::error(GL_INVALID_ENUM);
+ }
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2425,23 +2440,34 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t
{
if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE)
{
- return error(GL_INVALID_ENUM);
- }
-
- switch (attachment)
- {
- case GL_COLOR_ATTACHMENT0:
- case GL_DEPTH_ATTACHMENT:
- case GL_STENCIL_ATTACHMENT:
- break;
- default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
if (context)
{
+ if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT)
+ {
+ const unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT);
+
+ if (colorAttachment >= context->getMaximumRenderTargets())
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+ }
+ else
+ {
+ switch (attachment)
+ {
+ case GL_DEPTH_ATTACHMENT:
+ case GL_STENCIL_ATTACHMENT:
+ break;
+ default:
+ return gl::error(GL_INVALID_ENUM);
+ }
+ }
+
if (texture == 0)
{
textarget = GL_NONE;
@@ -2452,7 +2478,7 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t
if (tex == NULL)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
switch (textarget)
@@ -2461,12 +2487,12 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t
{
if (tex->getTarget() != GL_TEXTURE_2D)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::Texture2D *tex2d = static_cast<gl::Texture2D *>(tex);
if (tex2d->isCompressed(0))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
}
@@ -2480,23 +2506,23 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t
{
if (tex->getTarget() != GL_TEXTURE_CUBE_MAP)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::TextureCubeMap *texcube = static_cast<gl::TextureCubeMap *>(tex);
if (texcube->isCompressed(textarget, level))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
}
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (level != 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
@@ -2515,20 +2541,33 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t
if (framebufferHandle == 0 || !framebuffer)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
- switch (attachment)
+ if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT)
{
- case GL_COLOR_ATTACHMENT0: framebuffer->setColorbuffer(textarget, texture); break;
- case GL_DEPTH_ATTACHMENT: framebuffer->setDepthbuffer(textarget, texture); break;
- case GL_STENCIL_ATTACHMENT: framebuffer->setStencilbuffer(textarget, texture); break;
+ const unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT);
+
+ if (colorAttachment >= context->getMaximumRenderTargets())
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
+ framebuffer->setColorbuffer(colorAttachment, textarget, texture);
+ }
+ else
+ {
+ switch (attachment)
+ {
+ case GL_DEPTH_ATTACHMENT: framebuffer->setDepthbuffer(textarget, texture); break;
+ case GL_STENCIL_ATTACHMENT: framebuffer->setStencilbuffer(textarget, texture); break;
+ }
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2552,12 +2591,12 @@ void __stdcall glFrontFace(GLenum mode)
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2569,7 +2608,7 @@ void __stdcall glGenBuffers(GLsizei n, GLuint* buffers)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2584,7 +2623,7 @@ void __stdcall glGenBuffers(GLsizei n, GLuint* buffers)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2606,11 +2645,11 @@ void __stdcall glGenerateMipmap(GLenum target)
if (tex2d->isCompressed(0))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (tex2d->isDepth(0))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
tex2d->generateMipmaps();
@@ -2623,7 +2662,7 @@ void __stdcall glGenerateMipmap(GLenum target)
if (texcube->isCompressed(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
texcube->generateMipmaps();
@@ -2631,13 +2670,13 @@ void __stdcall glGenerateMipmap(GLenum target)
}
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2649,7 +2688,7 @@ void __stdcall glGenFencesNV(GLsizei n, GLuint* fences)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2664,7 +2703,7 @@ void __stdcall glGenFencesNV(GLsizei n, GLuint* fences)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2676,7 +2715,7 @@ void __stdcall glGenFramebuffers(GLsizei n, GLuint* framebuffers)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2691,7 +2730,7 @@ void __stdcall glGenFramebuffers(GLsizei n, GLuint* framebuffers)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2703,7 +2742,7 @@ void __stdcall glGenQueriesEXT(GLsizei n, GLuint* ids)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2718,7 +2757,7 @@ void __stdcall glGenQueriesEXT(GLsizei n, GLuint* ids)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2730,7 +2769,7 @@ void __stdcall glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2745,7 +2784,7 @@ void __stdcall glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2757,7 +2796,7 @@ void __stdcall glGenTextures(GLsizei n, GLuint* textures)
{
if (n < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2772,7 +2811,7 @@ void __stdcall glGenTextures(GLsizei n, GLuint* textures)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2786,7 +2825,7 @@ void __stdcall glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize,
{
if (bufsize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2799,17 +2838,17 @@ void __stdcall glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize,
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
if (index >= (GLuint)programObject->getActiveAttributeCount())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
programObject->getActiveAttribute(index, bufsize, length, size, type, name);
@@ -2817,7 +2856,7 @@ void __stdcall glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize,
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2831,7 +2870,7 @@ void __stdcall glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize,
{
if (bufsize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2844,17 +2883,17 @@ void __stdcall glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize,
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
if (index >= (GLuint)programObject->getActiveUniformCount())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
programObject->getActiveUniform(index, bufsize, length, size, type, name);
@@ -2862,7 +2901,7 @@ void __stdcall glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize,
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2875,7 +2914,7 @@ void __stdcall glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* c
{
if (maxcount < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -2888,11 +2927,11 @@ void __stdcall glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* c
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
@@ -2901,7 +2940,7 @@ void __stdcall glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* c
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -2922,18 +2961,18 @@ int __stdcall glGetAttribLocation(GLuint program, const GLchar* name)
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION, -1);
+ return gl::error(GL_INVALID_OPERATION, -1);
}
else
{
- return error(GL_INVALID_VALUE, -1);
+ return gl::error(GL_INVALID_VALUE, -1);
}
}
gl::ProgramBinary *programBinary = programObject->getProgramBinary();
if (!programObject->isLinked() || !programBinary)
{
- return error(GL_INVALID_OPERATION, -1);
+ return gl::error(GL_INVALID_OPERATION, -1);
}
return programBinary->getAttributeLocation(name);
@@ -2941,7 +2980,7 @@ int __stdcall glGetAttribLocation(GLuint program, const GLchar* name)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, -1);
+ return gl::error(GL_OUT_OF_MEMORY, -1);
}
return -1;
@@ -2962,7 +3001,7 @@ void __stdcall glGetBooleanv(GLenum pname, GLboolean* params)
GLenum nativeType;
unsigned int numParams = 0;
if (!context->getQueryParameterInfo(pname, &nativeType, &numParams))
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
if (numParams == 0)
return; // it is known that the pname is valid, but there are no parameters to return
@@ -3006,7 +3045,7 @@ void __stdcall glGetBooleanv(GLenum pname, GLboolean* params)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3030,13 +3069,13 @@ void __stdcall glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params
case GL_ELEMENT_ARRAY_BUFFER:
buffer = context->getElementArrayBuffer();
break;
- default: return error(GL_INVALID_ENUM);
+ default: return gl::error(GL_INVALID_ENUM);
}
if (!buffer)
{
// A null buffer means that "0" is bound to the requested buffer target
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
switch (pname)
@@ -3047,13 +3086,13 @@ void __stdcall glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params
case GL_BUFFER_SIZE:
*params = buffer->size();
break;
- default: return error(GL_INVALID_ENUM);
+ default: return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3086,7 +3125,7 @@ void __stdcall glGetFenceivNV(GLuint fence, GLenum pname, GLint *params)
if (fenceObject == NULL)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
fenceObject->getFenceiv(pname, params);
@@ -3094,7 +3133,7 @@ void __stdcall glGetFenceivNV(GLuint fence, GLenum pname, GLint *params)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3113,7 +3152,7 @@ void __stdcall glGetFloatv(GLenum pname, GLfloat* params)
GLenum nativeType;
unsigned int numParams = 0;
if (!context->getQueryParameterInfo(pname, &nativeType, &numParams))
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
if (numParams == 0)
return; // it is known that the pname is valid, but that there are no parameters to return.
@@ -3154,7 +3193,7 @@ void __stdcall glGetFloatv(GLenum pname, GLfloat* params)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3171,7 +3210,7 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac
{
if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Framebuffer *framebuffer = NULL;
@@ -3179,7 +3218,7 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac
{
if(context->getReadFramebufferHandle() == 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
framebuffer = context->getReadFramebuffer();
@@ -3188,7 +3227,7 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac
{
if (context->getDrawFramebufferHandle() == 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
framebuffer = context->getDrawFramebuffer();
@@ -3196,21 +3235,33 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac
GLenum attachmentType;
GLuint attachmentHandle;
- switch (attachment)
+
+ if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT)
{
- case GL_COLOR_ATTACHMENT0:
- attachmentType = framebuffer->getColorbufferType();
- attachmentHandle = framebuffer->getColorbufferHandle();
- break;
- case GL_DEPTH_ATTACHMENT:
- attachmentType = framebuffer->getDepthbufferType();
- attachmentHandle = framebuffer->getDepthbufferHandle();
- break;
- case GL_STENCIL_ATTACHMENT:
- attachmentType = framebuffer->getStencilbufferType();
- attachmentHandle = framebuffer->getStencilbufferHandle();
- break;
- default: return error(GL_INVALID_ENUM);
+ const unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT);
+
+ if (colorAttachment >= context->getMaximumRenderTargets())
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+
+ attachmentType = framebuffer->getColorbufferType(colorAttachment);
+ attachmentHandle = framebuffer->getColorbufferHandle(colorAttachment);
+ }
+ else
+ {
+ switch (attachment)
+ {
+ case GL_DEPTH_ATTACHMENT:
+ attachmentType = framebuffer->getDepthbufferType();
+ attachmentHandle = framebuffer->getDepthbufferHandle();
+ break;
+ case GL_STENCIL_ATTACHMENT:
+ attachmentType = framebuffer->getStencilbufferType();
+ attachmentHandle = framebuffer->getStencilbufferHandle();
+ break;
+ default: return gl::error(GL_INVALID_ENUM);
+ }
}
GLenum attachmentObjectType; // Type category
@@ -3240,7 +3291,7 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:
@@ -3250,7 +3301,7 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:
@@ -3267,17 +3318,17 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3317,7 +3368,7 @@ void __stdcall glGetIntegerv(GLenum pname, GLint* params)
GLenum nativeType;
unsigned int numParams = 0;
if (!context->getQueryParameterInfo(pname, &nativeType, &numParams))
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
if (numParams == 0)
return; // it is known that pname is valid, but there are no parameters to return
@@ -3363,7 +3414,7 @@ void __stdcall glGetIntegerv(GLenum pname, GLint* params)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3381,7 +3432,7 @@ void __stdcall glGetProgramiv(GLuint program, GLenum pname, GLint* params)
if (!programObject)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (pname)
@@ -3417,13 +3468,13 @@ void __stdcall glGetProgramiv(GLuint program, GLenum pname, GLint* params)
*params = programObject->getProgramBinaryLength();
return;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3436,7 +3487,7 @@ void __stdcall glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* len
{
if (bufsize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -3447,7 +3498,7 @@ void __stdcall glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* len
if (!programObject)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
programObject->getInfoLog(bufsize, length, infolog);
@@ -3455,7 +3506,7 @@ void __stdcall glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* len
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3470,7 +3521,7 @@ void __stdcall glGetQueryivEXT(GLenum target, GLenum pname, GLint *params)
case GL_CURRENT_QUERY_EXT:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -3482,7 +3533,7 @@ void __stdcall glGetQueryivEXT(GLenum target, GLenum pname, GLint *params)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3498,7 +3549,7 @@ void __stdcall glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params)
case GL_QUERY_RESULT_AVAILABLE_EXT:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -3508,12 +3559,12 @@ void __stdcall glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params)
if (!queryObject)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (context->getActiveQuery(queryObject->getType()) == id)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
switch(pname)
@@ -3531,7 +3582,7 @@ void __stdcall glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3547,12 +3598,12 @@ void __stdcall glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint*
{
if (target != GL_RENDERBUFFER)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (context->getRenderbufferHandle() == 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::Renderbuffer *renderbuffer = context->getRenderbuffer(context->getRenderbufferHandle());
@@ -3575,17 +3626,17 @@ void __stdcall glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint*
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3603,7 +3654,7 @@ void __stdcall glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
if (!shaderObject)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (pname)
@@ -3627,13 +3678,13 @@ void __stdcall glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
*params = shaderObject->getTranslatedSourceLength();
return;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3646,7 +3697,7 @@ void __stdcall glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* lengt
{
if (bufsize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -3657,7 +3708,7 @@ void __stdcall glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* lengt
if (!shaderObject)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
shaderObject->getInfoLog(bufsize, length, infolog);
@@ -3665,7 +3716,7 @@ void __stdcall glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* lengt
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3682,7 +3733,7 @@ void __stdcall glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontyp
case GL_FRAGMENT_SHADER:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (precisiontype)
@@ -3705,12 +3756,12 @@ void __stdcall glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontyp
*precision = 0;
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3723,7 +3774,7 @@ void __stdcall glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length
{
if (bufsize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -3734,7 +3785,7 @@ void __stdcall glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length
if (!shaderObject)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
shaderObject->getSource(bufsize, length, source);
@@ -3742,7 +3793,7 @@ void __stdcall glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3755,7 +3806,7 @@ void __stdcall glGetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize,
{
if (bufsize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -3766,7 +3817,7 @@ void __stdcall glGetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize,
if (!shaderObject)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
shaderObject->getTranslatedSource(bufsize, length, source);
@@ -3774,7 +3825,7 @@ void __stdcall glGetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize,
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3799,12 +3850,12 @@ const GLubyte* __stdcall glGetString(GLenum name)
case GL_EXTENSIONS:
return (GLubyte*)((context != NULL) ? context->getExtensionString() : "");
default:
- return error(GL_INVALID_ENUM, (GLubyte*)NULL);
+ return gl::error(GL_INVALID_ENUM, (GLubyte*)NULL);
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, (GLubyte*)NULL);
+ return gl::error(GL_OUT_OF_MEMORY, (GLubyte*)NULL);
}
}
@@ -3829,7 +3880,7 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
texture = context->getTextureCubeMap();
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (pname)
@@ -3855,18 +3906,18 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
if (!context->supportsTextureFilterAnisotropy())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
*params = (GLfloat)texture->getMaxAnisotropy();
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3891,7 +3942,7 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
texture = context->getTextureCubeMap();
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (pname)
@@ -3917,18 +3968,18 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
if (!context->supportsTextureFilterAnisotropy())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
*params = (GLint)texture->getMaxAnisotropy();
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3941,7 +3992,7 @@ void __stdcall glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSiz
{
if (bufSize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -3950,31 +4001,31 @@ void __stdcall glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSiz
{
if (program == 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Program *programObject = context->getProgram(program);
if (!programObject || !programObject->isLinked())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::ProgramBinary *programBinary = programObject->getProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->getUniformfv(location, &bufSize, params))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -3990,31 +4041,31 @@ void __stdcall glGetUniformfv(GLuint program, GLint location, GLfloat* params)
{
if (program == 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Program *programObject = context->getProgram(program);
if (!programObject || !programObject->isLinked())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::ProgramBinary *programBinary = programObject->getProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->getUniformfv(location, NULL, params))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4027,7 +4078,7 @@ void __stdcall glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSiz
{
if (bufSize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -4036,31 +4087,31 @@ void __stdcall glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSiz
{
if (program == 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Program *programObject = context->getProgram(program);
if (!programObject || !programObject->isLinked())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::ProgramBinary *programBinary = programObject->getProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->getUniformiv(location, &bufSize, params))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4076,31 +4127,31 @@ void __stdcall glGetUniformiv(GLuint program, GLint location, GLint* params)
{
if (program == 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Program *programObject = context->getProgram(program);
if (!programObject || !programObject->isLinked())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::ProgramBinary *programBinary = programObject->getProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->getUniformiv(location, NULL, params))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4125,18 +4176,18 @@ int __stdcall glGetUniformLocation(GLuint program, const GLchar* name)
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION, -1);
+ return gl::error(GL_INVALID_OPERATION, -1);
}
else
{
- return error(GL_INVALID_VALUE, -1);
+ return gl::error(GL_INVALID_VALUE, -1);
}
}
gl::ProgramBinary *programBinary = programObject->getProgramBinary();
if (!programObject->isLinked() || !programBinary)
{
- return error(GL_INVALID_OPERATION, -1);
+ return gl::error(GL_INVALID_OPERATION, -1);
}
return programBinary->getUniformLocation(name);
@@ -4144,7 +4195,7 @@ int __stdcall glGetUniformLocation(GLuint program, const GLchar* name)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, -1);
+ return gl::error(GL_OUT_OF_MEMORY, -1);
}
return -1;
@@ -4162,7 +4213,7 @@ void __stdcall glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
const gl::VertexAttribute &attribState = context->getVertexAttribState(index);
@@ -4196,13 +4247,13 @@ void __stdcall glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
case GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:
*params = (GLfloat)attribState.mDivisor;
break;
- default: return error(GL_INVALID_ENUM);
+ default: return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4218,7 +4269,7 @@ void __stdcall glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
const gl::VertexAttribute &attribState = context->getVertexAttribState(index);
@@ -4253,13 +4304,13 @@ void __stdcall glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
case GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:
*params = (GLint)attribState.mDivisor;
break;
- default: return error(GL_INVALID_ENUM);
+ default: return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4275,12 +4326,12 @@ void __stdcall glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** po
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (pname != GL_VERTEX_ATTRIB_ARRAY_POINTER)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
*pointer = const_cast<GLvoid*>(context->getVertexAttribPointer(index));
@@ -4288,7 +4339,7 @@ void __stdcall glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** po
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4305,7 +4356,7 @@ void __stdcall glHint(GLenum target, GLenum mode)
case GL_DONT_CARE:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -4318,12 +4369,12 @@ void __stdcall glHint(GLenum target, GLenum mode)
if (context) context->setFragmentShaderDerivativeHint(mode);
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4347,7 +4398,7 @@ GLboolean __stdcall glIsBuffer(GLuint buffer)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, GL_FALSE);
+ return gl::error(GL_OUT_OF_MEMORY, GL_FALSE);
}
return GL_FALSE;
@@ -4375,13 +4426,13 @@ GLboolean __stdcall glIsEnabled(GLenum cap)
case GL_BLEND: return context->isBlendEnabled();
case GL_DITHER: return context->isDitherEnabled();
default:
- return error(GL_INVALID_ENUM, false);
+ return gl::error(GL_INVALID_ENUM, false);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, false);
+ return gl::error(GL_OUT_OF_MEMORY, false);
}
return false;
@@ -4409,7 +4460,7 @@ GLboolean __stdcall glIsFenceNV(GLuint fence)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, GL_FALSE);
+ return gl::error(GL_OUT_OF_MEMORY, GL_FALSE);
}
return GL_FALSE;
@@ -4435,7 +4486,7 @@ GLboolean __stdcall glIsFramebuffer(GLuint framebuffer)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, GL_FALSE);
+ return gl::error(GL_OUT_OF_MEMORY, GL_FALSE);
}
return GL_FALSE;
@@ -4461,7 +4512,7 @@ GLboolean __stdcall glIsProgram(GLuint program)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, GL_FALSE);
+ return gl::error(GL_OUT_OF_MEMORY, GL_FALSE);
}
return GL_FALSE;
@@ -4492,7 +4543,7 @@ GLboolean __stdcall glIsQueryEXT(GLuint id)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, GL_FALSE);
+ return gl::error(GL_OUT_OF_MEMORY, GL_FALSE);
}
return GL_FALSE;
@@ -4518,7 +4569,7 @@ GLboolean __stdcall glIsRenderbuffer(GLuint renderbuffer)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, GL_FALSE);
+ return gl::error(GL_OUT_OF_MEMORY, GL_FALSE);
}
return GL_FALSE;
@@ -4544,7 +4595,7 @@ GLboolean __stdcall glIsShader(GLuint shader)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, GL_FALSE);
+ return gl::error(GL_OUT_OF_MEMORY, GL_FALSE);
}
return GL_FALSE;
@@ -4570,7 +4621,7 @@ GLboolean __stdcall glIsTexture(GLuint texture)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, GL_FALSE);
+ return gl::error(GL_OUT_OF_MEMORY, GL_FALSE);
}
return GL_FALSE;
@@ -4584,7 +4635,7 @@ void __stdcall glLineWidth(GLfloat width)
{
if (width <= 0.0f)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -4596,7 +4647,7 @@ void __stdcall glLineWidth(GLfloat width)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4616,11 +4667,11 @@ void __stdcall glLinkProgram(GLuint program)
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
@@ -4629,7 +4680,7 @@ void __stdcall glLinkProgram(GLuint program)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4648,7 +4699,7 @@ void __stdcall glPixelStorei(GLenum pname, GLint param)
case GL_UNPACK_ALIGNMENT:
if (param != 1 && param != 2 && param != 4 && param != 8)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
context->setUnpackAlignment(param);
@@ -4657,7 +4708,7 @@ void __stdcall glPixelStorei(GLenum pname, GLint param)
case GL_PACK_ALIGNMENT:
if (param != 1 && param != 2 && param != 4 && param != 8)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
context->setPackAlignment(param);
@@ -4668,13 +4719,13 @@ void __stdcall glPixelStorei(GLenum pname, GLint param)
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4693,7 +4744,7 @@ void __stdcall glPolygonOffset(GLfloat factor, GLfloat units)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4709,7 +4760,7 @@ void __stdcall glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
{
if (width < 0 || height < 0 || bufSize < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -4726,7 +4777,7 @@ void __stdcall glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
if (!(currentFormat == format && currentType == type) && !validReadFormatType(format, type))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
context->readPixels(x, y, width, height, format, type, &bufSize, data);
@@ -4734,7 +4785,7 @@ void __stdcall glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4749,7 +4800,7 @@ void __stdcall glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
{
if (width < 0 || height < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -4766,7 +4817,7 @@ void __stdcall glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
if (!(currentFormat == format && currentType == type) && !validReadFormatType(format, type))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
context->readPixels(x, y, width, height, format, type, NULL, pixels);
@@ -4774,7 +4825,7 @@ void __stdcall glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4788,7 +4839,7 @@ void __stdcall glReleaseShaderCompiler(void)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4804,17 +4855,17 @@ void __stdcall glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samp
case GL_RENDERBUFFER:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (!gl::IsColorRenderable(internalformat) && !gl::IsDepthRenderable(internalformat) && !gl::IsStencilRenderable(internalformat))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (width < 0 || height < 0 || samples < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -4825,41 +4876,35 @@ void __stdcall glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samp
height > context->getMaximumRenderbufferDimension() ||
samples > context->getMaxSupportedSamples())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
GLuint handle = context->getRenderbufferHandle();
if (handle == 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
switch (internalformat)
{
case GL_DEPTH_COMPONENT16:
- context->setRenderbufferStorage(new gl::Depthbuffer(width, height, samples));
- break;
case GL_RGBA4:
case GL_RGB5_A1:
case GL_RGB565:
case GL_RGB8_OES:
case GL_RGBA8_OES:
- context->setRenderbufferStorage(new gl::Colorbuffer(width, height, internalformat, samples));
- break;
case GL_STENCIL_INDEX8:
- context->setRenderbufferStorage(new gl::Stencilbuffer(width, height, samples));
- break;
case GL_DEPTH24_STENCIL8_OES:
- context->setRenderbufferStorage(new gl::DepthStencilbuffer(width, height, samples));
+ context->setRenderbufferStorage(width, height, internalformat, samples);
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4883,7 +4928,7 @@ void __stdcall glSampleCoverage(GLclampf value, GLboolean invert)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4895,7 +4940,7 @@ void __stdcall glSetFenceNV(GLuint fence, GLenum condition)
{
if (condition != GL_ALL_COMPLETED_NV)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -4906,7 +4951,7 @@ void __stdcall glSetFenceNV(GLuint fence, GLenum condition)
if (fenceObject == NULL)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
fenceObject->setFence(condition);
@@ -4914,7 +4959,7 @@ void __stdcall glSetFenceNV(GLuint fence, GLenum condition)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4926,7 +4971,7 @@ void __stdcall glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
{
if (width < 0 || height < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context* context = gl::getNonLostContext();
@@ -4938,7 +4983,7 @@ void __stdcall glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4951,11 +4996,11 @@ void __stdcall glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryfor
try
{
// No binary shader formats are supported.
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -4968,7 +5013,7 @@ void __stdcall glShaderSource(GLuint shader, GLsizei count, const GLchar** strin
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -4981,11 +5026,11 @@ void __stdcall glShaderSource(GLuint shader, GLsizei count, const GLchar** strin
{
if (context->getProgram(shader))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
@@ -4994,7 +5039,7 @@ void __stdcall glShaderSource(GLuint shader, GLsizei count, const GLchar** strin
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5016,7 +5061,7 @@ void __stdcall glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint
case GL_FRONT_AND_BACK:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (func)
@@ -5031,7 +5076,7 @@ void __stdcall glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint
case GL_NOTEQUAL:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -5051,7 +5096,7 @@ void __stdcall glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5073,7 +5118,7 @@ void __stdcall glStencilMaskSeparate(GLenum face, GLuint mask)
case GL_FRONT_AND_BACK:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -5093,7 +5138,7 @@ void __stdcall glStencilMaskSeparate(GLenum face, GLuint mask)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5116,7 +5161,7 @@ void __stdcall glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenu
case GL_FRONT_AND_BACK:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (fail)
@@ -5131,7 +5176,7 @@ void __stdcall glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenu
case GL_DECR_WRAP:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (zfail)
@@ -5146,7 +5191,7 @@ void __stdcall glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenu
case GL_DECR_WRAP:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (zpass)
@@ -5161,7 +5206,7 @@ void __stdcall glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenu
case GL_DECR_WRAP:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -5181,7 +5226,7 @@ void __stdcall glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenu
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5199,7 +5244,7 @@ GLboolean __stdcall glTestFenceNV(GLuint fence)
if (fenceObject == NULL)
{
- return error(GL_INVALID_OPERATION, GL_TRUE);
+ return gl::error(GL_INVALID_OPERATION, GL_TRUE);
}
return fenceObject->testFence();
@@ -5207,7 +5252,7 @@ GLboolean __stdcall glTestFenceNV(GLuint fence)
}
catch(std::bad_alloc&)
{
- error(GL_OUT_OF_MEMORY);
+ gl::error(GL_OUT_OF_MEMORY);
}
return GL_TRUE;
@@ -5224,12 +5269,12 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
{
if (!validImageSize(level, width, height))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (internalformat != GLint(format))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
// validate <type> by itself (used as secondary key below)
@@ -5246,7 +5291,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
case GL_FLOAT:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
// validate <format> + <type> combinations
@@ -5264,7 +5309,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
case GL_HALF_FLOAT_OES:
break;
default:
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_RGB:
@@ -5276,7 +5321,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
case GL_HALF_FLOAT_OES:
break;
default:
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_RGBA:
@@ -5289,7 +5334,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
case GL_HALF_FLOAT_OES:
break;
default:
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_BGRA_EXT:
@@ -5298,7 +5343,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
case GL_UNSIGNED_BYTE:
break;
default:
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: // error cases for compressed textures are handled below
@@ -5313,7 +5358,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
case GL_UNSIGNED_INT:
break;
default:
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
case GL_DEPTH_STENCIL_OES:
@@ -5322,16 +5367,16 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
case GL_UNSIGNED_INT_24_8_OES:
break;
default:
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (border != 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -5340,7 +5385,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
{
if (level > context->getMaximumTextureLevel())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (target)
@@ -5349,7 +5394,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
if (width > (context->getMaximumTextureDimension() >> level) ||
height > (context->getMaximumTextureDimension() >> level))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
@@ -5360,17 +5405,17 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
if (width != height)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (width > (context->getMaximumCubeTextureDimension() >> level) ||
height > (context->getMaximumCubeTextureDimension() >> level))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (format) {
@@ -5378,48 +5423,48 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
if (context->supportsDXT1Textures())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
if (context->supportsDXT3Textures())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
if (context->supportsDXT5Textures())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_DEPTH_COMPONENT:
case GL_DEPTH_STENCIL_OES:
if (!context->supportsDepthTextures())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (target != GL_TEXTURE_2D)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
// OES_depth_texture supports loading depth data and multiple levels,
// but ANGLE_depth_texture does not
if (pixels != NULL || level != 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
default:
@@ -5430,14 +5475,14 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
{
if (!context->supportsFloat32Textures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
else if (type == GL_HALF_FLOAT_OES)
{
if (!context->supportsFloat16Textures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
@@ -5447,12 +5492,12 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
if (!texture)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (texture->isImmutable())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
texture->setImage(level, width, height, format, type, context->getUnpackAlignment(), pixels);
@@ -5463,12 +5508,12 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
if (!texture)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (texture->isImmutable())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
switch (target)
@@ -5498,7 +5543,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5523,7 +5568,7 @@ void __stdcall glTexParameterf(GLenum target, GLenum pname, GLfloat param)
texture = context->getTextureCubeMap();
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (pname)
@@ -5531,51 +5576,51 @@ void __stdcall glTexParameterf(GLenum target, GLenum pname, GLfloat param)
case GL_TEXTURE_WRAP_S:
if (!texture->setWrapS((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_WRAP_T:
if (!texture->setWrapT((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_MIN_FILTER:
if (!texture->setMinFilter((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_MAG_FILTER:
if (!texture->setMagFilter((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_USAGE_ANGLE:
if (!texture->setUsage((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
if (!context->supportsTextureFilterAnisotropy())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (!texture->setMaxAnisotropy((float)param, context->getTextureMaxAnisotropy()))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5605,7 +5650,7 @@ void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param)
texture = context->getTextureCubeMap();
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
switch (pname)
@@ -5613,51 +5658,51 @@ void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param)
case GL_TEXTURE_WRAP_S:
if (!texture->setWrapS((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_WRAP_T:
if (!texture->setWrapT((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_MIN_FILTER:
if (!texture->setMinFilter((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_MAG_FILTER:
if (!texture->setMagFilter((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_USAGE_ANGLE:
if (!texture->setUsage((GLenum)param))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
if (!context->supportsTextureFilterAnisotropy())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (!texture->setMaxAnisotropy((float)param, context->getTextureMaxAnisotropy()))
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5675,22 +5720,22 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
{
if (target != GL_TEXTURE_2D && target != GL_TEXTURE_CUBE_MAP)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (width < 1 || height < 1 || levels < 1)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (target == GL_TEXTURE_CUBE_MAP && width != height)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (levels != 1 && levels != gl::log2(std::max(width, height)) + 1)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
GLenum format = gl::ExtractFormat(internalformat);
@@ -5698,7 +5743,7 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
if (format == GL_NONE || type == GL_NONE)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getNonLostContext();
@@ -5711,25 +5756,25 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
if (width > context->getMaximumTextureDimension() ||
height > context->getMaximumTextureDimension())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
case GL_TEXTURE_CUBE_MAP:
if (width > context->getMaximumCubeTextureDimension() ||
height > context->getMaximumCubeTextureDimension())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (levels != 1 && !context->supportsNonPower2Texture())
{
if (!gl::isPow2(width) || !gl::isPow2(height))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
@@ -5739,19 +5784,19 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
if (!context->supportsDXT1Textures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
if (!context->supportsDXT3Textures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
if (!context->supportsDXT5Textures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_RGBA32F_EXT:
@@ -5761,7 +5806,7 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
case GL_LUMINANCE_ALPHA32F_EXT:
if (!context->supportsFloat32Textures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_RGBA16F_EXT:
@@ -5771,7 +5816,7 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
case GL_LUMINANCE_ALPHA16F_EXT:
if (!context->supportsFloat16Textures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
break;
case GL_DEPTH_COMPONENT16:
@@ -5779,16 +5824,16 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
case GL_DEPTH24_STENCIL8_OES:
if (!context->supportsDepthTextures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (target != GL_TEXTURE_2D)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
// ANGLE_depth_texture only supports 1-level textures
if (levels != 1)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
break;
default:
@@ -5801,12 +5846,12 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
if (!texture || texture->id() == 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (texture->isImmutable())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
texture->storage(levels, internalformat, width, height);
@@ -5817,12 +5862,12 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
if (!texture || texture->id() == 0)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (texture->isImmutable())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
texture->storage(levels, internalformat, width);
@@ -5832,7 +5877,7 @@ void __stdcall glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5848,17 +5893,17 @@ void __stdcall glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint
{
if (!gl::IsInternalTextureTarget(target))
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (level < 0 || xoffset < 0 || yoffset < 0 || width < 0 || height < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (std::numeric_limits<GLsizei>::max() - xoffset < width || std::numeric_limits<GLsizei>::max() - yoffset < height)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (!checkTextureFormatType(format, type))
@@ -5872,35 +5917,35 @@ void __stdcall glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint
{
if (level > context->getMaximumTextureLevel())
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (format == GL_FLOAT)
{
if (!context->supportsFloat32Textures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
else if (format == GL_HALF_FLOAT_OES)
{
if (!context->supportsFloat16Textures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
}
else if (gl::IsDepthTexture(format))
{
if (!context->supportsDepthTextures())
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (target != GL_TEXTURE_2D)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
// OES_depth_texture supports loading depth data, but ANGLE_depth_texture does not
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (width == 0 || height == 0 || pixels == NULL)
@@ -5932,7 +5977,7 @@ void __stdcall glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5949,7 +5994,7 @@ void __stdcall glUniform1fv(GLint location, GLsizei count, const GLfloat* v)
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -5964,18 +6009,18 @@ void __stdcall glUniform1fv(GLint location, GLsizei count, const GLfloat* v)
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniform1fv(location, count, v))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -5992,7 +6037,7 @@ void __stdcall glUniform1iv(GLint location, GLsizei count, const GLint* v)
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6007,18 +6052,18 @@ void __stdcall glUniform1iv(GLint location, GLsizei count, const GLint* v)
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniform1iv(location, count, v))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6037,7 +6082,7 @@ void __stdcall glUniform2fv(GLint location, GLsizei count, const GLfloat* v)
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6052,18 +6097,18 @@ void __stdcall glUniform2fv(GLint location, GLsizei count, const GLfloat* v)
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniform2fv(location, count, v))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6082,7 +6127,7 @@ void __stdcall glUniform2iv(GLint location, GLsizei count, const GLint* v)
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6097,18 +6142,18 @@ void __stdcall glUniform2iv(GLint location, GLsizei count, const GLint* v)
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniform2iv(location, count, v))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6127,7 +6172,7 @@ void __stdcall glUniform3fv(GLint location, GLsizei count, const GLfloat* v)
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6142,18 +6187,18 @@ void __stdcall glUniform3fv(GLint location, GLsizei count, const GLfloat* v)
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniform3fv(location, count, v))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6172,7 +6217,7 @@ void __stdcall glUniform3iv(GLint location, GLsizei count, const GLint* v)
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6187,18 +6232,18 @@ void __stdcall glUniform3iv(GLint location, GLsizei count, const GLint* v)
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniform3iv(location, count, v))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6217,7 +6262,7 @@ void __stdcall glUniform4fv(GLint location, GLsizei count, const GLfloat* v)
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6232,18 +6277,18 @@ void __stdcall glUniform4fv(GLint location, GLsizei count, const GLfloat* v)
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniform4fv(location, count, v))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6262,7 +6307,7 @@ void __stdcall glUniform4iv(GLint location, GLsizei count, const GLint* v)
{
if (count < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6277,18 +6322,18 @@ void __stdcall glUniform4iv(GLint location, GLsizei count, const GLint* v)
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniform4iv(location, count, v))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6301,7 +6346,7 @@ void __stdcall glUniformMatrix2fv(GLint location, GLsizei count, GLboolean trans
{
if (count < 0 || transpose != GL_FALSE)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6316,18 +6361,18 @@ void __stdcall glUniformMatrix2fv(GLint location, GLsizei count, GLboolean trans
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniformMatrix2fv(location, count, value))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6340,7 +6385,7 @@ void __stdcall glUniformMatrix3fv(GLint location, GLsizei count, GLboolean trans
{
if (count < 0 || transpose != GL_FALSE)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6355,18 +6400,18 @@ void __stdcall glUniformMatrix3fv(GLint location, GLsizei count, GLboolean trans
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniformMatrix3fv(location, count, value))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6379,7 +6424,7 @@ void __stdcall glUniformMatrix4fv(GLint location, GLsizei count, GLboolean trans
{
if (count < 0 || transpose != GL_FALSE)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (location == -1)
@@ -6394,18 +6439,18 @@ void __stdcall glUniformMatrix4fv(GLint location, GLsizei count, GLboolean trans
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->setUniformMatrix4fv(location, count, value))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
}
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6425,17 +6470,17 @@ void __stdcall glUseProgram(GLuint program)
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
if (program != 0 && !programObject->isLinked())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
context->useProgram(program);
@@ -6443,7 +6488,7 @@ void __stdcall glUseProgram(GLuint program)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6463,11 +6508,11 @@ void __stdcall glValidateProgram(GLuint program)
{
if (context->getShader(program))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
else
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
}
@@ -6476,7 +6521,7 @@ void __stdcall glValidateProgram(GLuint program)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6488,7 +6533,7 @@ void __stdcall glVertexAttrib1f(GLuint index, GLfloat x)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6501,7 +6546,7 @@ void __stdcall glVertexAttrib1f(GLuint index, GLfloat x)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6513,7 +6558,7 @@ void __stdcall glVertexAttrib1fv(GLuint index, const GLfloat* values)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6526,7 +6571,7 @@ void __stdcall glVertexAttrib1fv(GLuint index, const GLfloat* values)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6538,7 +6583,7 @@ void __stdcall glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6551,7 +6596,7 @@ void __stdcall glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6563,7 +6608,7 @@ void __stdcall glVertexAttrib2fv(GLuint index, const GLfloat* values)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6576,7 +6621,7 @@ void __stdcall glVertexAttrib2fv(GLuint index, const GLfloat* values)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6588,7 +6633,7 @@ void __stdcall glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6601,7 +6646,7 @@ void __stdcall glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6613,7 +6658,7 @@ void __stdcall glVertexAttrib3fv(GLuint index, const GLfloat* values)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6626,7 +6671,7 @@ void __stdcall glVertexAttrib3fv(GLuint index, const GLfloat* values)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6638,7 +6683,7 @@ void __stdcall glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, G
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6651,7 +6696,7 @@ void __stdcall glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, G
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6663,7 +6708,7 @@ void __stdcall glVertexAttrib4fv(GLuint index, const GLfloat* values)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6675,7 +6720,7 @@ void __stdcall glVertexAttrib4fv(GLuint index, const GLfloat* values)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6687,7 +6732,7 @@ void __stdcall glVertexAttribDivisorANGLE(GLuint index, GLuint divisor)
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6699,7 +6744,7 @@ void __stdcall glVertexAttribDivisorANGLE(GLuint index, GLuint divisor)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6713,12 +6758,12 @@ void __stdcall glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLbo
{
if (index >= gl::MAX_VERTEX_ATTRIBS)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (size < 1 || size > 4)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
switch (type)
@@ -6731,12 +6776,12 @@ void __stdcall glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLbo
case GL_FLOAT:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if (stride < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6748,7 +6793,7 @@ void __stdcall glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLbo
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6760,7 +6805,7 @@ void __stdcall glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
if (width < 0 || height < 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
gl::Context *context = gl::getNonLostContext();
@@ -6772,7 +6817,7 @@ void __stdcall glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6791,18 +6836,18 @@ void __stdcall glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLi
case GL_NEAREST:
break;
default:
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
if ((mask & ~(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)) != 0)
{
- return error(GL_INVALID_VALUE);
+ return gl::error(GL_INVALID_VALUE);
}
if (srcX1 - srcX0 != dstX1 - dstX0 || srcY1 - srcY0 != dstY1 - dstY0)
{
ERR("Scaling and flipping in BlitFramebufferANGLE not supported by this implementation");
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::Context *context = gl::getNonLostContext();
@@ -6812,7 +6857,7 @@ void __stdcall glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLi
if (context->getReadFramebufferHandle() == context->getDrawFramebufferHandle())
{
ERR("Blits with the same source and destination framebuffer are not supported by this implementation.");
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
context->blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask);
@@ -6820,7 +6865,7 @@ void __stdcall glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLi
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6838,7 +6883,7 @@ void __stdcall glTexImage3DOES(GLenum target, GLint level, GLenum internalformat
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6858,19 +6903,19 @@ void __stdcall glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *l
if (!programObject || !programObject->isLinked())
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
gl::ProgramBinary *programBinary = programObject->getProgramBinary();
if (!programBinary)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
if (!programBinary->save(binary, bufSize, length))
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
*binaryFormat = GL_PROGRAM_BINARY_ANGLE;
@@ -6878,7 +6923,7 @@ void __stdcall glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *l
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6896,14 +6941,14 @@ void __stdcall glProgramBinaryOES(GLuint program, GLenum binaryFormat,
{
if (binaryFormat != GL_PROGRAM_BINARY_ANGLE)
{
- return error(GL_INVALID_ENUM);
+ return gl::error(GL_INVALID_ENUM);
}
gl::Program *programObject = context->getProgram(program);
if (!programObject)
{
- return error(GL_INVALID_OPERATION);
+ return gl::error(GL_INVALID_OPERATION);
}
context->setProgramBinary(program, binary, length);
@@ -6911,7 +6956,63 @@ void __stdcall glProgramBinaryOES(GLuint program, GLenum binaryFormat,
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY);
+ return gl::error(GL_OUT_OF_MEMORY);
+ }
+}
+
+void __stdcall glDrawBuffersEXT(GLsizei n, const GLenum *bufs)
+{
+ EVENT("(GLenum n = %d, bufs = 0x%0.8p)", n, bufs);
+
+ try
+ {
+ gl::Context *context = gl::getNonLostContext();
+
+ if (context)
+ {
+ if (n < 0 || (unsigned int)n > context->getMaximumRenderTargets())
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
+ if (context->getDrawFramebufferHandle() == 0)
+ {
+ if (n > 1)
+ {
+ return gl::error(GL_INVALID_OPERATION);
+ }
+
+ if (n == 1)
+ {
+ if (bufs[0] != GL_NONE && bufs[0] != GL_BACK)
+ {
+ return gl::error(GL_INVALID_OPERATION);
+ }
+ }
+ }
+ else
+ {
+ for (int colorAttachment = 0; colorAttachment < n; colorAttachment++)
+ {
+ const GLenum attachment = GL_COLOR_ATTACHMENT0_EXT + colorAttachment;
+ if (bufs[colorAttachment] != GL_NONE && bufs[colorAttachment] != attachment)
+ {
+ return gl::error(GL_INVALID_OPERATION);
+ }
+ }
+ }
+
+ gl::Framebuffer *framebuffer = context->getDrawFramebuffer();
+
+ for (int colorAttachment = 0; colorAttachment < n; colorAttachment++)
+ {
+ framebuffer->setDrawBufferState(colorAttachment, bufs[colorAttachment]);
+ }
+ }
+ }
+ catch (std::bad_alloc&)
+ {
+ return gl::error(GL_OUT_OF_MEMORY);
}
}
@@ -6948,13 +7049,14 @@ __eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *
{"glEndQueryEXT", (__eglMustCastToProperFunctionPointerType)glEndQueryEXT},
{"glGetQueryivEXT", (__eglMustCastToProperFunctionPointerType)glGetQueryivEXT},
{"glGetQueryObjectuivEXT", (__eglMustCastToProperFunctionPointerType)glGetQueryObjectuivEXT},
+ {"glDrawBuffersEXT", (__eglMustCastToProperFunctionPointerType)glDrawBuffersEXT},
{"glVertexAttribDivisorANGLE", (__eglMustCastToProperFunctionPointerType)glVertexAttribDivisorANGLE},
{"glDrawArraysInstancedANGLE", (__eglMustCastToProperFunctionPointerType)glDrawArraysInstancedANGLE},
{"glDrawElementsInstancedANGLE", (__eglMustCastToProperFunctionPointerType)glDrawElementsInstancedANGLE},
{"glGetProgramBinaryOES", (__eglMustCastToProperFunctionPointerType)glGetProgramBinaryOES},
{"glProgramBinaryOES", (__eglMustCastToProperFunctionPointerType)glProgramBinaryOES}, };
- for (int ext = 0; ext < sizeof(glExtensions) / sizeof(Extension); ext++)
+ for (unsigned int ext = 0; ext < ArraySize(glExtensions); ext++)
{
if (strcmp(procname, glExtensions[ext].name) == 0)
{
@@ -6993,7 +7095,7 @@ bool __stdcall glBindTexImage(egl::Surface *surface)
}
catch(std::bad_alloc&)
{
- return error(GL_OUT_OF_MEMORY, false);
+ return gl::error(GL_OUT_OF_MEMORY, false);
}
return true;