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

Unified Diff: gpu/command_buffer/client/share_group.h

Issue 169403005: command_buffer: Implement path rendering functions for CHROMIUM_path_rendering (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@nv-pr-02-texgen
Patch Set: fix windows build Created 5 years, 5 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/client/share_group.h
diff --git a/gpu/command_buffer/client/share_group.h b/gpu/command_buffer/client/share_group.h
index c150004319042c8489ec4c550066815baf250876..2a6acc51e7bd23ee85d328ec1fb119f91832aa7a 100644
--- a/gpu/command_buffer/client/share_group.h
+++ b/gpu/command_buffer/client/share_group.h
@@ -19,6 +19,8 @@ class GLES2ImplementationTest;
class ProgramInfoManager;
typedef void (GLES2Implementation::*DeleteFn)(GLsizei n, const GLuint* ids);
+typedef void (GLES2Implementation::*DeleteRangeFn)(const GLuint first_id,
+ GLsizei range);
typedef void (GLES2Implementation::*BindFn)(GLenum target, GLuint id);
typedef void (GLES2Implementation::*BindIndexedFn)( \
GLenum target, GLuint index, GLuint id);
@@ -86,6 +88,27 @@ class IdHandlerInterface {
virtual void FreeContext(GLES2Implementation* gl_impl) = 0;
};
+class RangeIdHandlerInterface {
+ public:
+ RangeIdHandlerInterface() {}
+ virtual ~RangeIdHandlerInterface() {}
+
+ // Makes a continuous range of ids. Stores the first allocated id to
+ // |first_id| or 0 if allocation failed.
+ virtual void MakeIdRange(GLES2Implementation* gl_impl,
+ GLsizei n,
+ GLuint* first_id) = 0;
+
+ // Frees a continuous |range| of ids beginning at |first_id|.
+ virtual void FreeIdRange(GLES2Implementation* gl_impl,
+ const GLuint first_id,
+ GLsizei range,
+ DeleteRangeFn delete_fn) = 0;
+
+ // Called when a context in the share group is destructed.
+ virtual void FreeContext(GLES2Implementation* gl_impl) = 0;
+};
+
// ShareGroup manages shared resources for contexts that are sharing resources.
class GLES2_IMPL_EXPORT ShareGroup
: public gpu::RefCountedThreadSafe<ShareGroup> {
@@ -100,6 +123,10 @@ class GLES2_IMPL_EXPORT ShareGroup
return id_handlers_[namespace_id].get();
}
+ RangeIdHandlerInterface* GetRangeIdHandler(int range_namespace_id) const {
+ return range_id_handlers_[range_namespace_id].get();
+ }
+
ProgramInfoManager* program_info_manager() {
return program_info_manager_.get();
}
@@ -108,6 +135,9 @@ class GLES2_IMPL_EXPORT ShareGroup
for (int i = 0; i < id_namespaces::kNumIdNamespaces; ++i) {
id_handlers_[i]->FreeContext(gl_impl);
}
+ for (auto& range_id_handler : range_id_handlers_) {
+ range_id_handler->FreeContext(gl_impl);
+ }
}
private:
@@ -119,6 +149,8 @@ class GLES2_IMPL_EXPORT ShareGroup
void set_program_info_manager(ProgramInfoManager* manager);
scoped_ptr<IdHandlerInterface> id_handlers_[id_namespaces::kNumIdNamespaces];
+ scoped_ptr<RangeIdHandlerInterface>
+ range_id_handlers_[id_namespaces::kNumRangeIdNamespaces];
scoped_ptr<ProgramInfoManager> program_info_manager_;
bool bind_generates_resource_;
« no previous file with comments | « gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h ('k') | gpu/command_buffer/client/share_group.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698