summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service/gles2_cmd_decoder.cc
diff options
context:
space:
mode:
authorgman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-20 17:48:25 +0000
committergman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-20 17:48:25 +0000
commit7b92c41ccc32a7b8a9a439a9a2a45d635a8d9caf (patch)
treedf2b14c8461bf0c5d04c310c579bd53a0809403e /gpu/command_buffer/service/gles2_cmd_decoder.cc
parent618ce22287d17d60d8912b5419c4ff8e7bf17d27 (diff)
downloadchromium_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.cc16
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(