Commit 1fc7e2c5 by Jamie Madill

Refactor validation of FramebufferRenderbuffer.

Consolidate a lot of duplicated code into helper methods. Also move GetTargetTexture to the context class. Change-Id: I8e3990a5e3c1976cb533941d0a0946466accec30 Reviewed-on: https://chromium-review.googlesource.com/181556Reviewed-by: 's avatarShannon Woods <shannonwoods@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 92bfd5c6
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "libGLESv2/renderer/Renderer.h" #include "libGLESv2/renderer/Renderer.h"
#include "libGLESv2/VertexArray.h" #include "libGLESv2/VertexArray.h"
#include "libGLESv2/Sampler.h" #include "libGLESv2/Sampler.h"
#include "libGLESv2/validationES.h"
#include "libEGL/Surface.h" #include "libEGL/Surface.h"
...@@ -1388,9 +1389,9 @@ void Context::setRenderbufferStorage(GLsizei width, GLsizei height, GLenum inter ...@@ -1388,9 +1389,9 @@ void Context::setRenderbufferStorage(GLsizei width, GLsizei height, GLenum inter
renderbufferObject->setStorage(renderbuffer); renderbufferObject->setStorage(renderbuffer);
} }
Framebuffer *Context::getFramebuffer(unsigned int handle) Framebuffer *Context::getFramebuffer(unsigned int handle) const
{ {
FramebufferMap::iterator framebuffer = mFramebufferMap.find(handle); FramebufferMap::const_iterator framebuffer = mFramebufferMap.find(handle);
if (framebuffer == mFramebufferMap.end()) if (framebuffer == mFramebufferMap.end())
{ {
...@@ -1450,22 +1451,62 @@ ProgramBinary *Context::getCurrentProgramBinary() ...@@ -1450,22 +1451,62 @@ ProgramBinary *Context::getCurrentProgramBinary()
return mCurrentProgramBinary.get(); return mCurrentProgramBinary.get();
} }
Texture2D *Context::getTexture2D() Texture *Context::getTargetTexture(GLenum target) const
{
if (!ValidTextureTarget(this, target))
{
return NULL;
}
switch (target)
{
case GL_TEXTURE_2D: return getTexture2D();
case GL_TEXTURE_CUBE_MAP: return getTextureCubeMap();
case GL_TEXTURE_3D: return getTexture3D();
case GL_TEXTURE_2D_ARRAY: return getTexture2DArray();
default: return NULL;
}
}
GLuint Context::getTargetFramebufferHandle(GLenum target) const
{
if (!ValidFramebufferTarget(target))
{
return GL_INVALID_INDEX;
}
if (target == GL_READ_FRAMEBUFFER_ANGLE)
{
return mState.readFramebuffer;
}
else
{
return mState.drawFramebuffer;
}
}
Framebuffer *Context::getTargetFramebuffer(GLenum target) const
{
GLuint framebufferHandle = getTargetFramebufferHandle(target);
return (framebufferHandle == GL_INVALID_INDEX ? NULL : getFramebuffer(framebufferHandle));
}
Texture2D *Context::getTexture2D() const
{ {
return static_cast<Texture2D*>(getSamplerTexture(mState.activeSampler, TEXTURE_2D)); return static_cast<Texture2D*>(getSamplerTexture(mState.activeSampler, TEXTURE_2D));
} }
TextureCubeMap *Context::getTextureCubeMap() TextureCubeMap *Context::getTextureCubeMap() const
{ {
return static_cast<TextureCubeMap*>(getSamplerTexture(mState.activeSampler, TEXTURE_CUBE)); return static_cast<TextureCubeMap*>(getSamplerTexture(mState.activeSampler, TEXTURE_CUBE));
} }
Texture3D *Context::getTexture3D() Texture3D *Context::getTexture3D() const
{ {
return static_cast<Texture3D*>(getSamplerTexture(mState.activeSampler, TEXTURE_3D)); return static_cast<Texture3D*>(getSamplerTexture(mState.activeSampler, TEXTURE_3D));
} }
Texture2DArray *Context::getTexture2DArray() Texture2DArray *Context::getTexture2DArray() const
{ {
return static_cast<Texture2DArray*>(getSamplerTexture(mState.activeSampler, TEXTURE_2D_ARRAY)); return static_cast<Texture2DArray*>(getSamplerTexture(mState.activeSampler, TEXTURE_2D_ARRAY));
} }
...@@ -1500,7 +1541,7 @@ Buffer *Context::getPixelUnpackBuffer() ...@@ -1500,7 +1541,7 @@ Buffer *Context::getPixelUnpackBuffer()
return mState.unpack.pixelBuffer.get(); return mState.unpack.pixelBuffer.get();
} }
Texture *Context::getSamplerTexture(unsigned int sampler, TextureType type) Texture *Context::getSamplerTexture(unsigned int sampler, TextureType type) const
{ {
GLuint texid = mState.samplerTexture[type][sampler].id(); GLuint texid = mState.samplerTexture[type][sampler].id();
......
...@@ -325,7 +325,7 @@ class Context ...@@ -325,7 +325,7 @@ class Context
Shader *getShader(GLuint handle); Shader *getShader(GLuint handle);
Program *getProgram(GLuint handle); Program *getProgram(GLuint handle);
Texture *getTexture(GLuint handle); Texture *getTexture(GLuint handle);
Framebuffer *getFramebuffer(GLuint handle); Framebuffer *getFramebuffer(GLuint handle) const;
Renderbuffer *getRenderbuffer(GLuint handle); Renderbuffer *getRenderbuffer(GLuint handle);
VertexArray *getVertexArray(GLuint handle) const; VertexArray *getVertexArray(GLuint handle) const;
Sampler *getSampler(GLuint handle) const; Sampler *getSampler(GLuint handle) const;
...@@ -334,17 +334,23 @@ class Context ...@@ -334,17 +334,23 @@ class Context
Buffer *getArrayBuffer(); Buffer *getArrayBuffer();
Buffer *getElementArrayBuffer(); Buffer *getElementArrayBuffer();
ProgramBinary *getCurrentProgramBinary(); ProgramBinary *getCurrentProgramBinary();
Texture2D *getTexture2D();
TextureCubeMap *getTextureCubeMap(); Texture *getTargetTexture(GLenum target) const;
Texture3D *getTexture3D(); Texture2D *getTexture2D() const;
Texture2DArray *getTexture2DArray(); TextureCubeMap *getTextureCubeMap() const;
Texture3D *getTexture3D() const;
Texture2DArray *getTexture2DArray() const;
Buffer *getGenericUniformBuffer(); Buffer *getGenericUniformBuffer();
Buffer *getGenericTransformFeedbackBuffer(); Buffer *getGenericTransformFeedbackBuffer();
Buffer *getCopyReadBuffer(); Buffer *getCopyReadBuffer();
Buffer *getCopyWriteBuffer(); Buffer *getCopyWriteBuffer();
Buffer *getPixelPackBuffer(); Buffer *getPixelPackBuffer();
Buffer *getPixelUnpackBuffer(); Buffer *getPixelUnpackBuffer();
Texture *getSamplerTexture(unsigned int sampler, TextureType type); Texture *getSamplerTexture(unsigned int sampler, TextureType type) const;
Framebuffer *getTargetFramebuffer(GLenum target) const;
GLuint getTargetFramebufferHandle(GLenum target) const;
Framebuffer *getReadFramebuffer(); Framebuffer *getReadFramebuffer();
Framebuffer *getDrawFramebuffer(); Framebuffer *getDrawFramebuffer();
VertexArray *getCurrentVertexArray() const; VertexArray *getCurrentVertexArray() const;
......
...@@ -28,23 +28,6 @@ ...@@ -28,23 +28,6 @@
#include "libGLESv2/validationES3.h" #include "libGLESv2/validationES3.h"
#include "libGLESv2/queryconversions.h" #include "libGLESv2/queryconversions.h"
gl::Texture *GetTargetTexture(gl::Context *context, GLenum target)
{
if (!ValidTextureTarget(context, target))
{
return NULL;
}
switch (target)
{
case GL_TEXTURE_2D: return context->getTexture2D();
case GL_TEXTURE_CUBE_MAP: return context->getTextureCubeMap();
case GL_TEXTURE_3D: return context->getTexture3D();
case GL_TEXTURE_2D_ARRAY: return context->getTexture2DArray();
default: return NULL;
}
}
extern "C" extern "C"
{ {
...@@ -267,7 +250,7 @@ void __stdcall glBindFramebuffer(GLenum target, GLuint framebuffer) ...@@ -267,7 +250,7 @@ void __stdcall glBindFramebuffer(GLenum target, GLuint framebuffer)
try try
{ {
if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE) if (!gl::ValidFramebufferTarget(target))
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
...@@ -781,7 +764,7 @@ GLenum __stdcall glCheckFramebufferStatus(GLenum target) ...@@ -781,7 +764,7 @@ GLenum __stdcall glCheckFramebufferStatus(GLenum target)
try try
{ {
if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE) if (!gl::ValidFramebufferTarget(target))
{ {
return gl::error(GL_INVALID_ENUM, 0); return gl::error(GL_INVALID_ENUM, 0);
} }
...@@ -790,16 +773,8 @@ GLenum __stdcall glCheckFramebufferStatus(GLenum target) ...@@ -790,16 +773,8 @@ GLenum __stdcall glCheckFramebufferStatus(GLenum target)
if (context) if (context)
{ {
gl::Framebuffer *framebuffer = NULL; gl::Framebuffer *framebuffer = context->getTargetFramebuffer(target);
if (target == GL_READ_FRAMEBUFFER_ANGLE) ASSERT(framebuffer);
{
framebuffer = context->getReadFramebuffer();
}
else
{
framebuffer = context->getDrawFramebuffer();
}
return framebuffer->completeness(); return framebuffer->completeness();
} }
} }
...@@ -2007,8 +1982,7 @@ void __stdcall glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenu ...@@ -2007,8 +1982,7 @@ void __stdcall glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenu
try try
{ {
if ((target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE) if (!gl::ValidFramebufferTarget(target) || (renderbuffertarget != GL_RENDERBUFFER && renderbuffer != 0))
|| (renderbuffertarget != GL_RENDERBUFFER && renderbuffer != 0))
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
...@@ -2017,33 +1991,17 @@ void __stdcall glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenu ...@@ -2017,33 +1991,17 @@ void __stdcall glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenu
if (context) if (context)
{ {
gl::Framebuffer *framebuffer = NULL; if (!gl::ValidateFramebufferRenderbufferParameters(context, target, attachment, renderbuffertarget, renderbuffer))
GLuint framebufferHandle = 0;
if (target == GL_READ_FRAMEBUFFER_ANGLE)
{
framebuffer = context->getReadFramebuffer();
framebufferHandle = context->getReadFramebufferHandle();
}
else
{ {
framebuffer = context->getDrawFramebuffer(); return;
framebufferHandle = context->getDrawFramebufferHandle();
} }
if (!framebuffer || (framebufferHandle == 0 && renderbuffer != 0)) gl::Framebuffer *framebuffer = context->getTargetFramebuffer(target);
{ ASSERT(framebuffer);
return gl::error(GL_INVALID_OPERATION);
}
if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT) if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT)
{ {
const unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT); unsigned int colorAttachment = (attachment - GL_COLOR_ATTACHMENT0_EXT);
if (colorAttachment >= context->getMaximumRenderTargets())
{
return gl::error(GL_INVALID_VALUE);
}
framebuffer->setColorbuffer(colorAttachment, GL_RENDERBUFFER, renderbuffer, 0, 0); framebuffer->setColorbuffer(colorAttachment, GL_RENDERBUFFER, renderbuffer, 0, 0);
} }
else else
...@@ -2057,14 +2015,11 @@ void __stdcall glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenu ...@@ -2057,14 +2015,11 @@ void __stdcall glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenu
framebuffer->setStencilbuffer(GL_RENDERBUFFER, renderbuffer, 0, 0); framebuffer->setStencilbuffer(GL_RENDERBUFFER, renderbuffer, 0, 0);
break; break;
case GL_DEPTH_STENCIL_ATTACHMENT: case GL_DEPTH_STENCIL_ATTACHMENT:
if (context->getClientVersion() < 3)
{
return gl::error(GL_INVALID_ENUM);
}
framebuffer->setDepthStencilBuffer(GL_RENDERBUFFER, renderbuffer, 0, 0); framebuffer->setDepthStencilBuffer(GL_RENDERBUFFER, renderbuffer, 0, 0);
break; break;
default: default:
return gl::error(GL_INVALID_ENUM); UNREACHABLE();
break;
} }
} }
} }
...@@ -2102,15 +2057,7 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t ...@@ -2102,15 +2057,7 @@ void __stdcall glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum t
textarget = GL_NONE; textarget = GL_NONE;
} }
gl::Framebuffer *framebuffer = NULL; gl::Framebuffer *framebuffer = context->getTargetFramebuffer(target);
if (target == GL_READ_FRAMEBUFFER_ANGLE)
{
framebuffer = context->getReadFramebuffer();
}
else
{
framebuffer = context->getDrawFramebuffer();
}
if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT) if (attachment >= GL_COLOR_ATTACHMENT0_EXT && attachment <= GL_COLOR_ATTACHMENT15_EXT)
{ {
...@@ -2205,7 +2152,7 @@ void __stdcall glGenerateMipmap(GLenum target) ...@@ -2205,7 +2152,7 @@ void __stdcall glGenerateMipmap(GLenum target)
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
gl::Texture *texture = GetTargetTexture(context, target); gl::Texture *texture = context->getTargetTexture(target);
if (texture == NULL) if (texture == NULL)
{ {
...@@ -2360,7 +2307,7 @@ void __stdcall glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) ...@@ -2360,7 +2307,7 @@ void __stdcall glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
void __stdcall glGenTextures(GLsizei n, GLuint* textures) void __stdcall glGenTextures(GLsizei n, GLuint* textures)
{ {
EVENT("(GLsizei n = %d, GLuint* textures = 0x%0.8p)", n, textures); EVENT("(GLsizei n = %d, GLuint* textures = 0x%0.8p)", n, textures);
try try
{ {
...@@ -2739,8 +2686,7 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac ...@@ -2739,8 +2686,7 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac
if (context) if (context)
{ {
META_ASSERT(GL_DRAW_FRAMEBUFFER_ANGLE == GL_DRAW_FRAMEBUFFER && GL_READ_FRAMEBUFFER_ANGLE == GL_READ_FRAMEBUFFER); if (!gl::ValidFramebufferTarget(target))
if (target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER && target != GL_READ_FRAMEBUFFER)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
...@@ -2795,9 +2741,8 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac ...@@ -2795,9 +2741,8 @@ void __stdcall glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attac
break; break;
} }
GLuint framebufferHandle = (target == GL_READ_FRAMEBUFFER) ? context->getReadFramebufferHandle() GLuint framebufferHandle = context->getTargetFramebufferHandle(target);
: context->getDrawFramebufferHandle(); ASSERT(framebufferHandle != GL_INVALID_INDEX);
gl::Framebuffer *framebuffer = context->getFramebuffer(framebufferHandle); gl::Framebuffer *framebuffer = context->getFramebuffer(framebufferHandle);
GLenum attachmentType; GLenum attachmentType;
...@@ -3569,7 +3514,7 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) ...@@ -3569,7 +3514,7 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
if (context) if (context)
{ {
gl::Texture *texture = GetTargetTexture(context, target); gl::Texture *texture = context->getTargetTexture(target);
if (!texture) if (!texture)
{ {
...@@ -3667,7 +3612,7 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) ...@@ -3667,7 +3612,7 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
if (context) if (context)
{ {
gl::Texture *texture = GetTargetTexture(context, target); gl::Texture *texture = context->getTargetTexture(target);
if (!texture) if (!texture)
{ {
...@@ -4994,7 +4939,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL ...@@ -4994,7 +4939,7 @@ void __stdcall glTexImage2D(GLenum target, GLint level, GLint internalformat, GL
GLint border, GLenum format, GLenum type, const GLvoid* pixels) GLint border, GLenum format, GLenum type, const GLvoid* pixels)
{ {
EVENT("(GLenum target = 0x%X, GLint level = %d, GLint internalformat = %d, GLsizei width = %d, GLsizei height = %d, " EVENT("(GLenum target = 0x%X, GLint level = %d, GLint internalformat = %d, GLsizei width = %d, GLsizei height = %d, "
"GLint border = %d, GLenum format = 0x%X, GLenum type = 0x%X, const GLvoid* pixels = 0x%0.8p)", "GLint border = %d, GLenum format = 0x%X, GLenum type = 0x%X, const GLvoid* pixels = 0x%0.8p)",
target, level, internalformat, width, height, border, format, type, pixels); target, level, internalformat, width, height, border, format, type, pixels);
try try
...@@ -5086,7 +5031,7 @@ void __stdcall glTexParameterf(GLenum target, GLenum pname, GLfloat param) ...@@ -5086,7 +5031,7 @@ void __stdcall glTexParameterf(GLenum target, GLenum pname, GLfloat param)
return; return;
} }
gl::Texture *texture = GetTargetTexture(context, target); gl::Texture *texture = context->getTargetTexture(target);
if (!texture) if (!texture)
{ {
...@@ -5146,7 +5091,7 @@ void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param) ...@@ -5146,7 +5091,7 @@ void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param)
return; return;
} }
gl::Texture *texture = GetTargetTexture(context, target); gl::Texture *texture = context->getTargetTexture(target);
if (!texture) if (!texture)
{ {
...@@ -7145,15 +7090,8 @@ void __stdcall glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuin ...@@ -7145,15 +7090,8 @@ void __stdcall glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuin
return; return;
} }
gl::Framebuffer *framebuffer = NULL; gl::Framebuffer *framebuffer = context->getTargetFramebuffer(target);
if (target == GL_READ_FRAMEBUFFER) ASSERT(framebuffer);
{
framebuffer = context->getReadFramebuffer();
}
else
{
framebuffer = context->getDrawFramebuffer();
}
gl::Texture *textureObject = context->getTexture(texture); gl::Texture *textureObject = context->getTexture(texture);
GLenum textarget = textureObject ? textureObject->getTarget() : GL_NONE; GLenum textarget = textureObject ? textureObject->getTarget() : GL_NONE;
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
namespace gl namespace gl
{ {
bool ValidTextureTarget(gl::Context *context, GLenum target) bool ValidTextureTarget(const Context *context, GLenum target)
{ {
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
...@@ -34,6 +34,19 @@ bool ValidTextureTarget(gl::Context *context, GLenum target) ...@@ -34,6 +34,19 @@ bool ValidTextureTarget(gl::Context *context, GLenum target)
return true; return true;
} }
bool ValidFramebufferTarget(GLenum target)
{
META_ASSERT(GL_DRAW_FRAMEBUFFER_ANGLE == GL_DRAW_FRAMEBUFFER && GL_READ_FRAMEBUFFER_ANGLE == GL_READ_FRAMEBUFFER);
switch (target)
{
case GL_FRAMEBUFFER: return true;
case GL_READ_FRAMEBUFFER: return true;
case GL_DRAW_FRAMEBUFFER: return true;
default: return false;
}
}
bool ValidMipLevel(const gl::Context *context, GLenum target, GLint level) bool ValidMipLevel(const gl::Context *context, GLenum target, GLint level)
{ {
int maxLevel = 0; int maxLevel = 0;
...@@ -171,6 +184,48 @@ bool ValidateRenderbufferStorageParameters(const gl::Context *context, GLenum ta ...@@ -171,6 +184,48 @@ bool ValidateRenderbufferStorageParameters(const gl::Context *context, GLenum ta
return true; return true;
} }
bool ValidateFramebufferRenderbufferParameters(gl::Context *context, GLenum target, GLenum attachment,
GLenum renderbuffertarget, GLuint renderbuffer)
{
gl::Framebuffer *framebuffer = context->getTargetFramebuffer(target);
GLuint framebufferHandle = context->getTargetFramebufferHandle(target);
if (!framebuffer || (framebufferHandle == 0 && renderbuffer != 0))
{
return gl::error(GL_INVALID_OPERATION, false);
}
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, false);
}
}
else
{
switch (attachment)
{
case GL_DEPTH_ATTACHMENT:
break;
case GL_STENCIL_ATTACHMENT:
break;
case GL_DEPTH_STENCIL_ATTACHMENT:
if (context->getClientVersion() < 3)
{
return gl::error(GL_INVALID_ENUM, false);
}
break;
default:
return gl::error(GL_INVALID_ENUM, false);
}
}
return true;
}
static bool IsPartialBlit(gl::Context *context, gl::Renderbuffer *readBuffer, gl::Renderbuffer *writeBuffer, static bool IsPartialBlit(gl::Context *context, gl::Renderbuffer *readBuffer, gl::Renderbuffer *writeBuffer,
GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1) GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1)
......
...@@ -14,14 +14,17 @@ namespace gl ...@@ -14,14 +14,17 @@ namespace gl
class Context; class Context;
bool ValidTextureTarget(gl::Context *context, GLenum target); bool ValidTextureTarget(const Context *context, GLenum target);
bool ValidMipLevel(const gl::Context *context, GLenum target, GLint level); bool ValidFramebufferTarget(GLenum target);
bool ValidMipLevel(const Context *context, GLenum target, GLint level);
bool ValidImageSize(const gl::Context *context, GLenum target, GLint level, GLsizei width, GLsizei height, GLsizei depth); bool ValidImageSize(const gl::Context *context, GLenum target, GLint level, GLsizei width, GLsizei height, GLsizei depth);
bool ValidCompressedImageSize(const gl::Context *context, GLenum internalFormat, GLsizei width, GLsizei height); bool ValidCompressedImageSize(const gl::Context *context, GLenum internalFormat, GLsizei width, GLsizei height);
bool ValidateRenderbufferStorageParameters(const gl::Context *context, GLenum target, GLsizei samples, bool ValidateRenderbufferStorageParameters(const gl::Context *context, GLenum target, GLsizei samples,
GLenum internalformat, GLsizei width, GLsizei height, GLenum internalformat, GLsizei width, GLsizei height,
bool angleExtension); bool angleExtension);
bool ValidateFramebufferRenderbufferParameters(gl::Context *context, GLenum target, GLenum attachment,
GLenum renderbuffertarget, GLuint renderbuffer);
bool ValidateBlitFramebufferParameters(gl::Context *context, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, bool ValidateBlitFramebufferParameters(gl::Context *context, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment