Index: gpu/command_buffer/service/program_manager.cc |
diff --git a/gpu/command_buffer/service/program_manager.cc b/gpu/command_buffer/service/program_manager.cc |
index 81a0cb7cd4d0da156ab2d1896eb385b0bef68a10..0784c3ad62c5b2ba848f20dfb56801c5e45ea1a9 100644 |
--- a/gpu/command_buffer/service/program_manager.cc |
+++ b/gpu/command_buffer/service/program_manager.cc |
@@ -96,14 +96,14 @@ bool GetUniformNameSansElement( |
} // anonymous namespace. |
-ProgramManager::ProgramInfo::UniformInfo::UniformInfo() |
+Program::UniformInfo::UniformInfo() |
: size(0), |
type(GL_NONE), |
fake_location_base(0), |
is_array(false) { |
} |
-ProgramManager::ProgramInfo::UniformInfo::UniformInfo( |
+Program::UniformInfo::UniformInfo( |
GLsizei _size, |
GLenum _type, |
int _fake_location_base, |
@@ -115,7 +115,7 @@ ProgramManager::ProgramInfo::UniformInfo::UniformInfo( |
name(_name) { |
} |
-ProgramManager::ProgramInfo::UniformInfo::~UniformInfo() {} |
+Program::UniformInfo::~UniformInfo() {} |
bool ProgramManager::IsInvalidPrefix(const char* name, size_t length) { |
static const char kInvalidPrefix[] = { 'g', 'l', '_' }; |
@@ -123,7 +123,7 @@ bool ProgramManager::IsInvalidPrefix(const char* name, size_t length) { |
memcmp(name, kInvalidPrefix, sizeof(kInvalidPrefix)) == 0); |
} |
-ProgramManager::ProgramInfo::ProgramInfo( |
+Program::Program( |
ProgramManager* manager, GLuint service_id) |
: manager_(manager), |
use_count_(0), |
@@ -138,7 +138,7 @@ ProgramManager::ProgramInfo::ProgramInfo( |
manager_->StartTracking(this); |
} |
-void ProgramManager::ProgramInfo::Reset() { |
+void Program::Reset() { |
valid_ = false; |
link_status_ = false; |
num_uniforms_ = 0; |
@@ -150,7 +150,7 @@ void ProgramManager::ProgramInfo::Reset() { |
attrib_location_to_index_map_.clear(); |
} |
-std::string ProgramManager::ProgramInfo::ProcessLogInfo( |
+std::string Program::ProcessLogInfo( |
const std::string& log) { |
std::string output; |
re2::StringPiece input(log); |
@@ -173,7 +173,7 @@ std::string ProgramManager::ProgramInfo::ProcessLogInfo( |
return output + input.as_string(); |
} |
-void ProgramManager::ProgramInfo::UpdateLogInfo() { |
+void Program::UpdateLogInfo() { |
GLint max_len = 0; |
glGetProgramiv(service_id_, GL_INFO_LOG_LENGTH, &max_len); |
if (max_len == 0) { |
@@ -189,7 +189,7 @@ void ProgramManager::ProgramInfo::UpdateLogInfo() { |
set_log_info(ProcessLogInfo(log).c_str()); |
} |
-void ProgramManager::ProgramInfo::ClearUniforms( |
+void Program::ClearUniforms( |
std::vector<uint8>* zero_buffer) { |
DCHECK(zero_buffer); |
if (uniforms_cleared_) { |
@@ -285,7 +285,7 @@ struct UniformDataComparer { |
} // anonymous namespace |
-void ProgramManager::ProgramInfo::Update() { |
+void Program::Update() { |
Reset(); |
UpdateLogInfo(); |
link_status_ = true; |
@@ -305,7 +305,7 @@ void ProgramManager::ProgramInfo::Update() { |
service_id_, ii, max_len, &length, &size, &type, name_buffer.get()); |
DCHECK(max_len == 0 || length < max_len); |
DCHECK(length == 0 || name_buffer[length] == '\0'); |
- if (!IsInvalidPrefix(name_buffer.get(), length)) { |
+ if (!ProgramManager::IsInvalidPrefix(name_buffer.get(), length)) { |
std::string name; |
std::string original_name; |
GetCorrectedVariableInfo( |
@@ -316,7 +316,7 @@ void ProgramManager::ProgramInfo::Update() { |
max_location = location; |
} |
attrib_infos_.push_back( |
- VertexAttribInfo(size, type, original_name, location)); |
+ VertexAttrib(size, type, original_name, location)); |
max_attrib_name_length_ = std::max( |
max_attrib_name_length_, static_cast<GLsizei>(original_name.size())); |
} |
@@ -328,7 +328,7 @@ void ProgramManager::ProgramInfo::Update() { |
attrib_location_to_index_map_[ii] = -1; |
} |
for (size_t ii = 0; ii < attrib_infos_.size(); ++ii) { |
- const VertexAttribInfo& info = attrib_infos_[ii]; |
+ const VertexAttrib& info = attrib_infos_[ii]; |
attrib_location_to_index_map_[info.location] = ii; |
} |
@@ -337,7 +337,7 @@ void ProgramManager::ProgramInfo::Update() { |
switches::kEnableGPUServiceLoggingGPU)) { |
DLOG(INFO) << "----: attribs for service_id: " << service_id(); |
for (size_t ii = 0; ii < attrib_infos_.size(); ++ii) { |
- const VertexAttribInfo& info = attrib_infos_[ii]; |
+ const VertexAttrib& info = attrib_infos_[ii]; |
DLOG(INFO) << ii << ": loc = " << info.location |
<< ", size = " << info.size |
<< ", type = " << GLES2Util::GetStringEnum(info.type) |
@@ -362,7 +362,7 @@ void ProgramManager::ProgramInfo::Update() { |
&data.size, &data.type, name_buffer.get()); |
DCHECK(max_len == 0 || length < max_len); |
DCHECK(length == 0 || name_buffer[length] == '\0'); |
- if (!IsInvalidPrefix(name_buffer.get(), length)) { |
+ if (!ProgramManager::IsInvalidPrefix(name_buffer.get(), length)) { |
data.queried_name = std::string(name_buffer.get()); |
GetCorrectedVariableInfo( |
true, name_buffer.get(), &data.corrected_name, &data.original_name, |
@@ -429,7 +429,7 @@ void ProgramManager::ProgramInfo::Update() { |
valid_ = true; |
} |
-void ProgramManager::ProgramInfo::ExecuteBindAttribLocationCalls() { |
+void Program::ExecuteBindAttribLocationCalls() { |
for (LocationMap::const_iterator it = bind_attrib_location_map_.begin(); |
it != bind_attrib_location_map_.end(); ++it) { |
const std::string* mapped_name = GetAttribMappedName(it->first); |
@@ -438,7 +438,7 @@ void ProgramManager::ProgramInfo::ExecuteBindAttribLocationCalls() { |
} |
} |
-void ProgramManager::DoCompileShader(ShaderManager::ShaderInfo* info, |
+void ProgramManager::DoCompileShader(Shader* info, |
ShaderTranslator* translator, |
FeatureInfo* feature_info) { |
TimeTicks before = TimeTicks::HighResNow(); |
@@ -466,7 +466,7 @@ void ProgramManager::DoCompileShader(ShaderManager::ShaderInfo* info, |
} |
void ProgramManager::ForceCompileShader(const std::string* source, |
- ShaderManager::ShaderInfo* info, |
+ Shader* info, |
ShaderTranslator* translator, |
FeatureInfo* feature_info) { |
info->FlagSourceAsCompiled(true); |
@@ -529,7 +529,7 @@ void ProgramManager::ForceCompileShader(const std::string* source, |
} |
} |
-bool ProgramManager::ProgramInfo::Link(ShaderManager* manager, |
+bool Program::Link(ShaderManager* manager, |
ShaderTranslator* vertex_translator, |
ShaderTranslator* fragment_translator, |
FeatureInfo* feature_info) { |
@@ -565,11 +565,11 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager, |
if (link) { |
// compile our shaders if they're pending |
- const int kShaders = ProgramManager::ProgramInfo::kMaxAttachedShaders; |
+ const int kShaders = Program::kMaxAttachedShaders; |
for (int i = 0; i < kShaders; ++i) { |
- ShaderManager::ShaderInfo* info = attached_shaders_[i].get(); |
+ Shader* info = attached_shaders_[i].get(); |
if (info->compilation_status() == |
- ShaderManager::ShaderInfo::PENDING_DEFERRED_COMPILE) { |
+ Shader::PENDING_DEFERRED_COMPILE) { |
ShaderTranslator* translator = ShaderIndexToTranslator( |
i, |
vertex_translator, |
@@ -625,7 +625,7 @@ bool ProgramManager::ProgramInfo::Link(ShaderManager* manager, |
return success == GL_TRUE; |
} |
-void ProgramManager::ProgramInfo::Validate() { |
+void Program::Validate() { |
if (!IsValid()) { |
set_log_info("program not linked"); |
return; |
@@ -634,7 +634,7 @@ void ProgramManager::ProgramInfo::Validate() { |
UpdateLogInfo(); |
} |
-GLint ProgramManager::ProgramInfo::GetUniformFakeLocation( |
+GLint Program::GetUniformFakeLocation( |
const std::string& name) const { |
bool getting_array_location = false; |
size_t open_pos = std::string::npos; |
@@ -667,10 +667,10 @@ GLint ProgramManager::ProgramInfo::GetUniformFakeLocation( |
return -1; |
} |
-GLint ProgramManager::ProgramInfo::GetAttribLocation( |
+GLint Program::GetAttribLocation( |
const std::string& name) const { |
for (GLuint ii = 0; ii < attrib_infos_.size(); ++ii) { |
- const VertexAttribInfo& info = attrib_infos_[ii]; |
+ const VertexAttrib& info = attrib_infos_[ii]; |
if (info.name == name) { |
return info.location; |
} |
@@ -678,8 +678,8 @@ GLint ProgramManager::ProgramInfo::GetAttribLocation( |
return -1; |
} |
-const ProgramManager::ProgramInfo::UniformInfo* |
- ProgramManager::ProgramInfo::GetUniformInfoByFakeLocation( |
+const Program::UniformInfo* |
+ Program::GetUniformInfoByFakeLocation( |
GLint fake_location, GLint* real_location, GLint* array_index) const { |
DCHECK(real_location); |
DCHECK(array_index); |
@@ -704,10 +704,10 @@ const ProgramManager::ProgramInfo::UniformInfo* |
return NULL; |
} |
-const std::string* ProgramManager::ProgramInfo::GetAttribMappedName( |
+const std::string* Program::GetAttribMappedName( |
const std::string& original_name) const { |
for (int ii = 0; ii < kMaxAttachedShaders; ++ii) { |
- ShaderManager::ShaderInfo* shader_info = attached_shaders_[ii].get(); |
+ Shader* shader_info = attached_shaders_[ii].get(); |
if (shader_info) { |
const std::string* mapped_name = |
shader_info->GetAttribMappedName(original_name); |
@@ -718,10 +718,10 @@ const std::string* ProgramManager::ProgramInfo::GetAttribMappedName( |
return NULL; |
} |
-const std::string* ProgramManager::ProgramInfo::GetOriginalNameFromHashedName( |
+const std::string* Program::GetOriginalNameFromHashedName( |
const std::string& hashed_name) const { |
for (int ii = 0; ii < kMaxAttachedShaders; ++ii) { |
- ShaderManager::ShaderInfo* shader_info = attached_shaders_[ii].get(); |
+ Shader* shader_info = attached_shaders_[ii].get(); |
if (shader_info) { |
const std::string* original_name = |
shader_info->GetOriginalNameFromHashedName(hashed_name); |
@@ -732,7 +732,7 @@ const std::string* ProgramManager::ProgramInfo::GetOriginalNameFromHashedName( |
return NULL; |
} |
-bool ProgramManager::ProgramInfo::SetUniformLocationBinding( |
+bool Program::SetUniformLocationBinding( |
const std::string& name, GLint location) { |
std::string short_name; |
int element_index = 0; |
@@ -747,7 +747,7 @@ bool ProgramManager::ProgramInfo::SetUniformLocationBinding( |
// Note: This is only valid to call right after a program has been linked |
// successfully. |
-void ProgramManager::ProgramInfo::GetCorrectedVariableInfo( |
+void Program::GetCorrectedVariableInfo( |
bool use_uniforms, |
const std::string& name, std::string* corrected_name, |
std::string* original_name, |
@@ -760,9 +760,9 @@ void ProgramManager::ProgramInfo::GetCorrectedVariableInfo( |
for (int jj = 0; jj < 2; ++jj) { |
std::string test_name(name + ((jj == 1) ? kArraySpec : "")); |
for (int ii = 0; ii < kMaxAttachedShaders; ++ii) { |
- ShaderManager::ShaderInfo* shader_info = attached_shaders_[ii].get(); |
+ Shader* shader_info = attached_shaders_[ii].get(); |
if (shader_info) { |
- const ShaderManager::ShaderInfo::VariableInfo* variable_info = |
+ const Shader::VariableInfo* variable_info = |
use_uniforms ? shader_info->GetUniformInfo(test_name) : |
shader_info->GetAttribInfo(test_name); |
// Note: There is an assuption here that if an attrib is defined in more |
@@ -782,7 +782,7 @@ void ProgramManager::ProgramInfo::GetCorrectedVariableInfo( |
*original_name = name; |
} |
-bool ProgramManager::ProgramInfo::AddUniformInfo( |
+bool Program::AddUniformInfo( |
GLsizei size, GLenum type, GLint location, GLint fake_base_location, |
const std::string& name, const std::string& original_name, |
size_t* next_available_index) { |
@@ -852,8 +852,8 @@ bool ProgramManager::ProgramInfo::AddUniformInfo( |
return true; |
} |
-const ProgramManager::ProgramInfo::UniformInfo* |
- ProgramManager::ProgramInfo::GetUniformInfo( |
+const Program::UniformInfo* |
+ Program::GetUniformInfo( |
GLint index) const { |
if (static_cast<size_t>(index) >= uniform_infos_.size()) { |
return NULL; |
@@ -863,7 +863,7 @@ const ProgramManager::ProgramInfo::UniformInfo* |
return info.IsValid() ? &info : NULL; |
} |
-bool ProgramManager::ProgramInfo::SetSamplers( |
+bool Program::SetSamplers( |
GLint num_texture_units, GLint fake_location, |
GLsizei count, const GLint* value) { |
if (fake_location < 0) { |
@@ -894,7 +894,7 @@ bool ProgramManager::ProgramInfo::SetSamplers( |
return true; |
} |
-void ProgramManager::ProgramInfo::GetProgramiv(GLenum pname, GLint* params) { |
+void Program::GetProgramiv(GLenum pname, GLint* params) { |
switch (pname) { |
case GL_ACTIVE_ATTRIBUTES: |
*params = attrib_infos_.size(); |
@@ -933,23 +933,23 @@ void ProgramManager::ProgramInfo::GetProgramiv(GLenum pname, GLint* params) { |
} |
} |
-bool ProgramManager::ProgramInfo::AttachShader( |
+bool Program::AttachShader( |
ShaderManager* shader_manager, |
- ShaderManager::ShaderInfo* info) { |
+ Shader* info) { |
DCHECK(shader_manager); |
DCHECK(info); |
int index = ShaderTypeToIndex(info->shader_type()); |
if (attached_shaders_[index] != NULL) { |
return false; |
} |
- attached_shaders_[index] = ShaderManager::ShaderInfo::Ref(info); |
+ attached_shaders_[index] = scoped_refptr<Shader>(info); |
shader_manager->UseShader(info); |
return true; |
} |
-bool ProgramManager::ProgramInfo::DetachShader( |
+bool Program::DetachShader( |
ShaderManager* shader_manager, |
- ShaderManager::ShaderInfo* info) { |
+ Shader* info) { |
DCHECK(shader_manager); |
DCHECK(info); |
if (attached_shaders_[ShaderTypeToIndex(info->shader_type())].get() != info) { |
@@ -960,7 +960,7 @@ bool ProgramManager::ProgramInfo::DetachShader( |
return true; |
} |
-void ProgramManager::ProgramInfo::DetachShaders(ShaderManager* shader_manager) { |
+void Program::DetachShaders(ShaderManager* shader_manager) { |
DCHECK(shader_manager); |
for (int ii = 0; ii < kMaxAttachedShaders; ++ii) { |
if (attached_shaders_[ii]) { |
@@ -969,7 +969,7 @@ void ProgramManager::ProgramInfo::DetachShaders(ShaderManager* shader_manager) { |
} |
} |
-bool ProgramManager::ProgramInfo::CanLink() const { |
+bool Program::CanLink() const { |
for (int ii = 0; ii < kMaxAttachedShaders; ++ii) { |
if (!attached_shaders_[ii] || !attached_shaders_[ii]->IsValid()) { |
return false; |
@@ -978,7 +978,7 @@ bool ProgramManager::ProgramInfo::CanLink() const { |
return true; |
} |
-bool ProgramManager::ProgramInfo::DetectAttribLocationBindingConflicts() const { |
+bool Program::DetectAttribLocationBindingConflicts() const { |
std::set<GLint> location_binding_used; |
for (LocationMap::const_iterator it = bind_attrib_location_map_.begin(); |
it != bind_attrib_location_map_.end(); ++it) { |
@@ -1007,7 +1007,7 @@ static uint32 ComputeOffset(const void* start, const void* position) { |
static_cast<const uint8*>(start); |
} |
-void ProgramManager::ProgramInfo::GetProgramInfo( |
+void Program::GetProgram( |
ProgramManager* manager, CommonDecoder::Bucket* bucket) const { |
// NOTE: It seems to me the math in here does not need check for overflow |
// because the data being calucated from has various small limits. The max |
@@ -1017,7 +1017,7 @@ void ProgramManager::ProgramInfo::GetProgramInfo( |
uint32 total_string_size = 0; |
for (size_t ii = 0; ii < attrib_infos_.size(); ++ii) { |
- const VertexAttribInfo& info = attrib_infos_[ii]; |
+ const VertexAttrib& info = attrib_infos_[ii]; |
num_locations += 1; |
total_string_size += info.name.size(); |
} |
@@ -1055,7 +1055,7 @@ void ProgramManager::ProgramInfo::GetProgramInfo( |
header->num_uniforms = num_uniforms_; |
for (size_t ii = 0; ii < attrib_infos_.size(); ++ii) { |
- const VertexAttribInfo& info = attrib_infos_[ii]; |
+ const VertexAttrib& info = attrib_infos_[ii]; |
inputs->size = info.size; |
inputs->type = info.type; |
inputs->location_offset = ComputeOffset(header, locations); |
@@ -1088,7 +1088,7 @@ void ProgramManager::ProgramInfo::GetProgramInfo( |
DCHECK_EQ(ComputeOffset(header, strings), size); |
} |
-ProgramManager::ProgramInfo::~ProgramInfo() { |
+Program::~Program() { |
if (manager_) { |
if (manager_->have_context_) { |
glDeleteProgram(service_id()); |
@@ -1116,25 +1116,26 @@ void ProgramManager::Destroy(bool have_context) { |
program_infos_.clear(); |
} |
-void ProgramManager::StartTracking(ProgramManager::ProgramInfo* /* program */) { |
+void ProgramManager::StartTracking(Program* /* program */) { |
++program_info_count_; |
} |
-void ProgramManager::StopTracking(ProgramManager::ProgramInfo* /* program */) { |
+void ProgramManager::StopTracking(Program* /* program */) { |
--program_info_count_; |
} |
-ProgramManager::ProgramInfo* ProgramManager::CreateProgramInfo( |
+Program* ProgramManager::CreateProgram( |
GLuint client_id, GLuint service_id) { |
std::pair<ProgramInfoMap::iterator, bool> result = |
program_infos_.insert( |
std::make_pair(client_id, |
- ProgramInfo::Ref(new ProgramInfo(this, service_id)))); |
+ scoped_refptr<Program>( |
+ new Program(this, service_id)))); |
DCHECK(result.second); |
return result.first->second; |
} |
-ProgramManager::ProgramInfo* ProgramManager::GetProgramInfo(GLuint client_id) { |
+Program* ProgramManager::GetProgram(GLuint client_id) { |
ProgramInfoMap::iterator it = program_infos_.find(client_id); |
return it != program_infos_.end() ? it->second : NULL; |
} |
@@ -1155,7 +1156,7 @@ ProgramCache* ProgramManager::program_cache() const { |
return program_cache_; |
} |
-bool ProgramManager::IsOwned(ProgramManager::ProgramInfo* info) { |
+bool ProgramManager::IsOwned(Program* info) { |
for (ProgramInfoMap::iterator it = program_infos_.begin(); |
it != program_infos_.end(); ++it) { |
if (it->second.get() == info) { |
@@ -1166,7 +1167,7 @@ bool ProgramManager::IsOwned(ProgramManager::ProgramInfo* info) { |
} |
void ProgramManager::RemoveProgramInfoIfUnused( |
- ShaderManager* shader_manager, ProgramInfo* info) { |
+ ShaderManager* shader_manager, Program* info) { |
DCHECK(shader_manager); |
DCHECK(info); |
DCHECK(IsOwned(info)); |
@@ -1185,7 +1186,7 @@ void ProgramManager::RemoveProgramInfoIfUnused( |
void ProgramManager::MarkAsDeleted( |
ShaderManager* shader_manager, |
- ProgramManager::ProgramInfo* info) { |
+ Program* info) { |
DCHECK(shader_manager); |
DCHECK(info); |
DCHECK(IsOwned(info)); |
@@ -1193,7 +1194,7 @@ void ProgramManager::MarkAsDeleted( |
RemoveProgramInfoIfUnused(shader_manager, info); |
} |
-void ProgramManager::UseProgram(ProgramManager::ProgramInfo* info) { |
+void ProgramManager::UseProgram(Program* info) { |
DCHECK(info); |
DCHECK(IsOwned(info)); |
info->IncUseCount(); |
@@ -1202,7 +1203,7 @@ void ProgramManager::UseProgram(ProgramManager::ProgramInfo* info) { |
void ProgramManager::UnuseProgram( |
ShaderManager* shader_manager, |
- ProgramManager::ProgramInfo* info) { |
+ Program* info) { |
DCHECK(shader_manager); |
DCHECK(info); |
DCHECK(IsOwned(info)); |
@@ -1210,7 +1211,7 @@ void ProgramManager::UnuseProgram( |
RemoveProgramInfoIfUnused(shader_manager, info); |
} |
-void ProgramManager::ClearUniforms(ProgramManager::ProgramInfo* info) { |
+void ProgramManager::ClearUniforms(Program* info) { |
DCHECK(info); |
if (!disable_workarounds_) { |
info->ClearUniforms(&zero_); |