Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 24152009: Allow rendering from non-stream GL_TEXTURE_EXTERNAL_OES (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@git-svn
Patch Set: eead63fe Rebase. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/gles2_cmd_decoder.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index b5ba2dc4fc9920010901f395fc0e00ce977aa115..e42a44c1ae4a9c21c28873fcf47d700a8224f40d 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -9646,34 +9646,17 @@ void GLES2DecoderImpl::DoCopyTextureCHROMIUM(
if (dest_texture->target() != GL_TEXTURE_2D ||
(source_texture->target() != GL_TEXTURE_2D &&
source_texture->target() != GL_TEXTURE_EXTERNAL_OES)) {
- LOCAL_SET_GL_ERROR(
- GL_INVALID_VALUE,
- "glCopyTextureCHROMIUM", "invalid texture target binding");
+ LOCAL_SET_GL_ERROR(GL_INVALID_VALUE,
+ "glCopyTextureCHROMIUM",
+ "invalid texture target binding");
return;
}
int source_width, source_height, dest_width, dest_height;
- if (source_texture->target() == GL_TEXTURE_2D) {
- if (!source_texture->GetLevelSize(GL_TEXTURE_2D, 0, &source_width,
- &source_height)) {
- LOCAL_SET_GL_ERROR(
- GL_INVALID_VALUE,
- "glCopyTextureChromium", "source texture has no level 0");
- return;
- }
-
- // Check that this type of texture is allowed.
- if (!texture_manager()->ValidForTarget(GL_TEXTURE_2D, level, source_width,
- source_height, 1)) {
- LOCAL_SET_GL_ERROR(
- GL_INVALID_VALUE,
- "glCopyTextureCHROMIUM", "Bad dimensions");
- return;
- }
- }
-
- if (source_texture->target() == GL_TEXTURE_EXTERNAL_OES) {
+ if (source_texture->IsStreamTexture()) {
+ DCHECK_EQ(source_texture->target(),
+ static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES));
DCHECK(stream_texture_manager());
StreamTexture* stream_tex =
stream_texture_manager()->LookupStreamTexture(
@@ -9693,6 +9676,22 @@ void GLES2DecoderImpl::DoCopyTextureCHROMIUM(
"glCopyTextureChromium", "invalid streamtexture size");
return;
}
+ } else {
+ if (!source_texture->GetLevelSize(
+ source_texture->target(), 0, &source_width, &source_height)) {
+ LOCAL_SET_GL_ERROR(GL_INVALID_VALUE,
+ "glCopyTextureChromium",
+ "source texture has no level 0");
+ return;
+ }
+
+ // Check that this type of texture is allowed.
+ if (!texture_manager()->ValidForTarget(
+ source_texture->target(), level, source_width, source_height, 1)) {
+ LOCAL_SET_GL_ERROR(
+ GL_INVALID_VALUE, "glCopyTextureCHROMIUM", "Bad dimensions");
+ return;
+ }
}
// Defer initializing the CopyTextureCHROMIUMResourceManager until it is
@@ -9828,7 +9827,7 @@ void GLES2DecoderImpl::DoTexStorage2DEXT(
GLsizei height) {
TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoTexStorage2DEXT");
if (!texture_manager()->ValidForTarget(target, 0, width, height, 1) ||
- TextureManager::ComputeMipMapCount(width, height, 1) < levels) {
+ TextureManager::ComputeMipMapCount(target, width, height, 1) < levels) {
LOCAL_SET_GL_ERROR(
GL_INVALID_VALUE, "glTexStorage2DEXT", "dimensions out of range");
return;

Powered by Google App Engine
This is Rietveld 408576698