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

Unified Diff: gpu/command_buffer/service/program_manager.cc

Issue 659903002: Add subscribeUniform extension pipeline (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: piman@ review + merge uniform_subscription_manager with program_manager Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
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 ac7021ad7f752a2ecd4bf312378e6df77f5f2416..cd1b74a141acbd080634223f1648d23127a0d5b8 100644
--- a/gpu/command_buffer/service/program_manager.cc
+++ b/gpu/command_buffer/service/program_manager.cc
@@ -193,8 +193,7 @@ bool ProgramManager::IsInvalidPrefix(const char* name, size_t length) {
memcmp(name, kInvalidPrefix, sizeof(kInvalidPrefix)) == 0);
}
-Program::Program(
- ProgramManager* manager, GLuint service_id)
+Program::Program(ProgramManager* manager, GLuint service_id)
: manager_(manager),
use_count_(0),
max_attrib_name_length_(0),
@@ -204,6 +203,7 @@ Program::Program(
valid_(false),
link_status_(false),
uniforms_cleared_(false),
+ needs_update_subscriptions_(true),
num_uniforms_(0) {
manager_->StartTracking(this);
}
@@ -211,6 +211,7 @@ Program::Program(
void Program::Reset() {
valid_ = false;
link_status_ = false;
+ needs_update_subscriptions_ = true;
num_uniforms_ = 0;
max_uniform_name_length_ = 0;
max_attrib_name_length_ = 0;
@@ -635,6 +636,10 @@ void Program::Validate() {
UpdateLogInfo();
}
+void Program::SetNeedsUpdateSubscriptions() {
+ needs_update_subscriptions_ = true;
piman 2014/10/23 02:30:48 When will that be reset to false? In GLES2DecoderI
+}
+
GLint Program::GetUniformFakeLocation(
const std::string& name) const {
bool getting_array_location = false;
@@ -1198,6 +1203,14 @@ bool Program::CheckVaryingsPacking(
combined_map.size()) == 1;
}
+void Program::AddSubscription(GLint location, GLenum target) {
+ subscription_map_[location] = target;
+}
+
+void Program::RemoveSubscription(GLint location) {
+ subscription_map_.erase(location);
+}
+
static uint32 ComputeOffset(const void* start, const void* position) {
return static_cast<const uint8*>(position) -
static_cast<const uint8*>(start);
@@ -1364,6 +1377,15 @@ bool ProgramManager::IsOwned(Program* program) {
return false;
}
+void ProgramManager::ActivateUniformSubscriptionState() {
brianderson 2014/10/24 00:28:34 It looks like ProgramManager has a 1:1 relationshi
+ // TODO(orglofch): Make active_state = pending_state
+ // only set needs update subscriptions if !pending_state.empty()
+ for (ProgramMap::iterator it = programs_.begin(); it != programs_.end();
+ ++it) {
piman 2014/10/23 02:30:48 Maybe make it a TODO, but it would be nice not to
+ it->second.get()->SetNeedsUpdateSubscriptions();
+ }
+}
+
void ProgramManager::RemoveProgramInfoIfUnused(
ShaderManager* shader_manager, Program* program) {
DCHECK(shader_manager);
@@ -1417,5 +1439,15 @@ int32 ProgramManager::MakeFakeLocation(int32 index, int32 element) {
return index + element * 0x10000;
}
+Program::UniformApiType ProgramManager::ApiTypeForSubscriptionTarget(
+ GLenum target) {
+ switch (target) {
+ case GL_MOUSE_POSITION_CHROMIUM:
+ return Program::kUniform2i;
+ }
+ NOTREACHED() << "Unhandled uniform subscription target " << target;
+ return Program::kUniformNone;
+}
+
} // namespace gles2
} // namespace gpu

Powered by Google App Engine
This is Rietveld 408576698