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

Side by Side Diff: gpu/command_buffer/service/texture_manager.cc

Issue 14308014: Clean up of GLES2 Command Decoder by moving some of the error state into a separate class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix merge error. Created 7 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/texture_manager.h" 5 #include "gpu/command_buffer/service/texture_manager.h"
6 #include "base/bits.h" 6 #include "base/bits.h"
7 #include "base/stringprintf.h" 7 #include "base/stringprintf.h"
8 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 8 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
9 #include "gpu/command_buffer/service/error_state.h"
9 #include "gpu/command_buffer/service/feature_info.h" 10 #include "gpu/command_buffer/service/feature_info.h"
10 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 11 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
11 #include "gpu/command_buffer/service/mailbox_manager.h" 12 #include "gpu/command_buffer/service/mailbox_manager.h"
12 #include "gpu/command_buffer/service/memory_tracking.h" 13 #include "gpu/command_buffer/service/memory_tracking.h"
13 #include "gpu/command_buffer/service/texture_definition.h" 14 #include "gpu/command_buffer/service/texture_definition.h"
14 15
15 namespace gpu { 16 namespace gpu {
16 namespace gles2 { 17 namespace gles2 {
17 18
18 static size_t GLTargetToFaceIndex(GLenum target) { 19 static size_t GLTargetToFaceIndex(GLenum target) {
(...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 level_info.cleared); 1041 level_info.cleared);
1041 } 1042 }
1042 } 1043 }
1043 1044
1044 GLuint old_service_id = texture->service_id(); 1045 GLuint old_service_id = texture->service_id();
1045 glDeleteTextures(1, &old_service_id); 1046 glDeleteTextures(1, &old_service_id);
1046 texture->SetServiceId(definition->ReleaseServiceId()); 1047 texture->SetServiceId(definition->ReleaseServiceId());
1047 glBindTexture(texture->target(), texture->service_id()); 1048 glBindTexture(texture->target(), texture->service_id());
1048 texture->SetImmutable(definition->immutable()); 1049 texture->SetImmutable(definition->immutable());
1049 texture->SetStreamTexture(definition->stream_texture()); 1050 texture->SetStreamTexture(definition->stream_texture());
1050 SetParameter(function_name, decoder, texture, GL_TEXTURE_MIN_FILTER, 1051
1052 ErrorState* error_state = decoder->GetErrorState();
1053 SetParameter(function_name, error_state, texture, GL_TEXTURE_MIN_FILTER,
1051 definition->min_filter()); 1054 definition->min_filter());
1052 SetParameter(function_name, decoder, texture, GL_TEXTURE_MAG_FILTER, 1055 SetParameter(function_name, error_state, texture, GL_TEXTURE_MAG_FILTER,
1053 definition->mag_filter()); 1056 definition->mag_filter());
1054 SetParameter(function_name, decoder, texture, GL_TEXTURE_WRAP_S, 1057 SetParameter(function_name, error_state, texture, GL_TEXTURE_WRAP_S,
1055 definition->wrap_s()); 1058 definition->wrap_s());
1056 SetParameter(function_name, decoder, texture, GL_TEXTURE_WRAP_T, 1059 SetParameter(function_name, error_state, texture, GL_TEXTURE_WRAP_T,
1057 definition->wrap_t()); 1060 definition->wrap_t());
1058 if (feature_info_->validators()->texture_parameter.IsValid( 1061 if (feature_info_->validators()->texture_parameter.IsValid(
1059 GL_TEXTURE_USAGE_ANGLE)) { 1062 GL_TEXTURE_USAGE_ANGLE)) {
1060 SetParameter(function_name, decoder, texture, GL_TEXTURE_USAGE_ANGLE, 1063 SetParameter(function_name, error_state, texture, GL_TEXTURE_USAGE_ANGLE,
1061 definition->usage()); 1064 definition->usage());
1062 } 1065 }
1063 1066
1064 return true; 1067 return true;
1065 } 1068 }
1066 1069
1067 void TextureManager::SetParameter( 1070 void TextureManager::SetParameter(
1068 const char* function_name, GLES2Decoder* decoder, 1071 const char* function_name, ErrorState* error_state,
1069 Texture* texture, GLenum pname, GLint param) { 1072 Texture* texture, GLenum pname, GLint param) {
1070 DCHECK(decoder); 1073 DCHECK(error_state);
1071 DCHECK(texture); 1074 DCHECK(texture);
1072 if (!texture->CanRender(feature_info_)) { 1075 if (!texture->CanRender(feature_info_)) {
1073 DCHECK_NE(0, num_unrenderable_textures_); 1076 DCHECK_NE(0, num_unrenderable_textures_);
1074 --num_unrenderable_textures_; 1077 --num_unrenderable_textures_;
1075 } 1078 }
1076 if (!texture->SafeToRenderFrom()) { 1079 if (!texture->SafeToRenderFrom()) {
1077 DCHECK_NE(0, num_unsafe_textures_); 1080 DCHECK_NE(0, num_unsafe_textures_);
1078 --num_unsafe_textures_; 1081 --num_unsafe_textures_;
1079 } 1082 }
1080 GLenum result = texture->SetParameter(feature_info_, pname, param); 1083 GLenum result = texture->SetParameter(feature_info_, pname, param);
1081 if (result != GL_NO_ERROR) { 1084 if (result != GL_NO_ERROR) {
1082 if (result == GL_INVALID_ENUM) { 1085 if (result == GL_INVALID_ENUM) {
1083 GLESDECODER_SET_GL_ERROR_INVALID_ENUM( 1086 ERRORSTATE_SET_GL_ERROR_INVALID_ENUM(
1084 decoder, function_name, param, "param"); 1087 error_state, function_name, param, "param");
1085 } else { 1088 } else {
1086 GLESDECODER_SET_GL_ERROR_INVALID_PARAM( 1089 ERRORSTATE_SET_GL_ERROR_INVALID_PARAM(
1087 decoder, result, function_name, pname, static_cast<GLint>(param)); 1090 error_state, result, function_name, pname, static_cast<GLint>(param));
1088 } 1091 }
1089 } else { 1092 } else {
1090 // Texture tracking pools exist only for the command decoder, so 1093 // Texture tracking pools exist only for the command decoder, so
1091 // do not pass them on to the native GL implementation. 1094 // do not pass them on to the native GL implementation.
1092 if (pname != GL_TEXTURE_POOL_CHROMIUM) { 1095 if (pname != GL_TEXTURE_POOL_CHROMIUM) {
1093 glTexParameteri(texture->target(), pname, param); 1096 glTexParameteri(texture->target(), pname, param);
1094 } 1097 }
1095 } 1098 }
1096 1099
1097 if (!texture->CanRender(feature_info_)) { 1100 if (!texture->CanRender(feature_info_)) {
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
1237 void TextureManager::AddToSignature( 1240 void TextureManager::AddToSignature(
1238 Texture* texture, 1241 Texture* texture,
1239 GLenum target, 1242 GLenum target,
1240 GLint level, 1243 GLint level,
1241 std::string* signature) const { 1244 std::string* signature) const {
1242 texture->AddToSignature(feature_info_.get(), target, level, signature); 1245 texture->AddToSignature(feature_info_.get(), target, level, signature);
1243 } 1246 }
1244 1247
1245 } // namespace gles2 1248 } // namespace gles2
1246 } // namespace gpu 1249 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/texture_manager.h ('k') | gpu/command_buffer/service/texture_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698