Checks completeness of framebuffer before read operations.

TRAC #12565 Signed-off-by: Andrew Lewycky Signed-off-by: Daniel Koch Author: Shannon Woods git-svn-id: https://angleproject.googlecode.com/svn/trunk@362 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 0190f845
...@@ -1928,6 +1928,12 @@ void Context::applyTextures() ...@@ -1928,6 +1928,12 @@ void Context::applyTextures()
void Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels) void Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels)
{ {
Framebuffer *framebuffer = getFramebuffer(); Framebuffer *framebuffer = getFramebuffer();
if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE)
{
return error(GL_INVALID_FRAMEBUFFER_OPERATION);
}
IDirect3DSurface9 *renderTarget = framebuffer->getRenderTarget(); IDirect3DSurface9 *renderTarget = framebuffer->getRenderTarget();
IDirect3DDevice9 *device = getDevice(); IDirect3DDevice9 *device = getDevice();
......
...@@ -848,7 +848,13 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma ...@@ -848,7 +848,13 @@ void __stdcall glCopyTexImage2D(GLenum target, GLint level, GLenum internalforma
if (context) if (context)
{ {
gl::Renderbuffer *source = context->getFramebuffer()->getColorbuffer(); gl::Framebuffer *framebuffer = context->getFramebuffer();
if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE)
{
return error(GL_INVALID_FRAMEBUFFER_OPERATION);
}
gl::Renderbuffer *source = framebuffer->getColorbuffer();
if (target == GL_TEXTURE_2D) if (target == GL_TEXTURE_2D)
{ {
...@@ -916,7 +922,13 @@ void __stdcall glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GL ...@@ -916,7 +922,13 @@ void __stdcall glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GL
if (context) if (context)
{ {
gl::Renderbuffer *source = context->getFramebuffer()->getColorbuffer(); gl::Framebuffer *framebuffer = context->getFramebuffer();
if (framebuffer->completeness() != GL_FRAMEBUFFER_COMPLETE)
{
return error(GL_INVALID_FRAMEBUFFER_OPERATION);
}
gl::Renderbuffer *source = framebuffer->getColorbuffer();
if (target == GL_TEXTURE_2D) if (target == GL_TEXTURE_2D)
{ {
......
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