Index: gpu/command_buffer/service/texture_manager.cc |
diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc |
index 72d3b4c9681a51c7830d1dc3f1d303298889618a..e2a7896a82da030006a823c2796f2eb156d1f25d 100644 |
--- a/gpu/command_buffer/service/texture_manager.cc |
+++ b/gpu/command_buffer/service/texture_manager.cc |
@@ -1336,10 +1336,10 @@ bool TextureManager::ValidateTexImage2D( |
error_state, function_name, args.target, "target"); |
return false; |
} |
- if (!validators->texture_format.IsValid(args.internal_format)) { |
+ if (!validators->texture_internal_format.IsValid(args.internal_format)) { |
ERRORSTATE_SET_GL_ERROR_INVALID_ENUM( |
error_state, function_name, args.internal_format, |
- "internal_format"); |
+ "internalformat"); |
return false; |
} |
if (!validators->texture_format.IsValid(args.format)) { |
@@ -1352,10 +1352,12 @@ bool TextureManager::ValidateTexImage2D( |
error_state, function_name, args.type, "type"); |
return false; |
} |
- if (args.format != args.internal_format) { |
+ if (args.format != args.internal_format && |
+ !((args.internal_format == GL_RGBA32F && args.format == GL_RGBA) || |
+ (args.internal_format == GL_RGB32F && args.format == GL_RGB))) { |
ERRORSTATE_SET_GL_ERROR( |
error_state, GL_INVALID_OPERATION, function_name, |
- "format != internalFormat"); |
+ "format != internalformat"); |
return false; |
} |
if (!ValidateTextureParameters( |
@@ -1396,7 +1398,7 @@ bool TextureManager::ValidateTexImage2D( |
// They both use the same MemoryTracker, and this call just re-routes |
// to it. |
if (!memory_tracker_managed_->EnsureGPUMemoryAvailable(args.pixels_size)) { |
- ERRORSTATE_SET_GL_ERROR(error_state, GL_OUT_OF_MEMORY, "glTexImage2D", |
+ ERRORSTATE_SET_GL_ERROR(error_state, GL_OUT_OF_MEMORY, function_name, |
"out of memory"); |
return false; |
} |