diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-20 17:48:25 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-20 17:48:25 +0000 |
commit | 7b92c41ccc32a7b8a9a439a9a2a45d635a8d9caf (patch) | |
tree | df2b14c8461bf0c5d04c310c579bd53a0809403e /gpu/command_buffer/service/gles2_cmd_decoder.cc | |
parent | 618ce22287d17d60d8912b5419c4ff8e7bf17d27 (diff) | |
download | chromium_src-7b92c41ccc32a7b8a9a439a9a2a45d635a8d9caf.zip chromium_src-7b92c41ccc32a7b8a9a439a9a2a45d635a8d9caf.tar.gz chromium_src-7b92c41ccc32a7b8a9a439a9a2a45d635a8d9caf.tar.bz2 |
Add support for
GL_OES_texture_float,
GL_OES_texture_float_linear,
GL_OES_texture_half_float,
GL_OES_texture_half_float_linear
TEST=unit tests
BUG=none
Review URL: http://codereview.chromium.org/3005017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53060 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/service/gles2_cmd_decoder.cc')
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index e1df544..8d2b22f 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -4304,6 +4304,10 @@ error::Error GLES2DecoderImpl::DoTexImage2D( SetGLError(GL_INVALID_ENUM, "glTexImage2D: type GL_INVALID_ENUM"); return error::kNoError; } + if (format != internal_format) { + SetGLError(GL_INVALID_OPERATION, "glTexImage2D: format != internalFormat"); + return error::kNoError; + } if (!texture_manager()->ValidForTarget(target, level, width, height, 1) || border != 0) { SetGLError(GL_INVALID_VALUE, "glTexImage2D: dimensions out of range"); @@ -4326,6 +4330,18 @@ error::Error GLES2DecoderImpl::DoTexImage2D( #if !defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2) if (format == GL_BGRA_EXT && internal_format == GL_BGRA_EXT) { internal_format = GL_RGBA; + } else if (type == GL_FLOAT) { + if (format == GL_RGBA) { + internal_format = GL_RGBA32F_ARB; + } else if (format == GL_RGB) { + internal_format = GL_RGB32F_ARB; + } + } else if (type == GL_HALF_FLOAT_OES) { + if (format == GL_RGBA) { + internal_format = GL_RGBA16F_ARB; + } else if (format == GL_RGB) { + internal_format = GL_RGB16F_ARB; + } } #endif glTexImage2D( |