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

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

Issue 2012533004: Add generated and hand-written passthrough command handlers with stub Doers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 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/gles2_cmd_decoder_passthrough.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
index df1b2c14e22b9f7577b427aafdde1bc187a37e36..2c20408b1ecc47c3bc8272bb7b2fae31dc74622d 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
@@ -4,382 +4,374 @@
#include "gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h"
-#include "base/memory/ref_counted.h"
-#include "gpu/command_buffer/common/debug_marker_manager.h"
-#include "gpu/command_buffer/common/gles2_cmd_format.h"
-#include "gpu/command_buffer/common/gles2_cmd_utils.h"
-#include "gpu/command_buffer/common/mailbox.h"
-#include "gpu/command_buffer/service/context_group.h"
-#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
-#include "gpu/command_buffer/service/image_manager.h"
-#include "gpu/command_buffer/service/logger.h"
-#include "ui/gl/gl_bindings.h"
-#include "ui/gl/gl_context.h"
-#include "ui/gl/gl_image.h"
-#include "ui/gl/gl_surface.h"
-
namespace gpu {
namespace gles2 {
-class GLES2DecoderPassthroughImpl : public GLES2Decoder {
- public:
- explicit GLES2DecoderPassthroughImpl(ContextGroup* group)
- : commands_to_process_(0),
- debug_marker_manager_(),
- logger_(&debug_marker_manager_),
- surface_(),
- context_(),
- group_(group),
- feature_info_(group->feature_info()) {
- DCHECK(group);
- }
+GLES2DecoderPassthroughImpl::GLES2DecoderPassthroughImpl(ContextGroup* group)
+ : commands_to_process_(0),
+ debug_marker_manager_(),
+ logger_(&debug_marker_manager_),
+ surface_(),
+ context_(),
+ group_(group),
+ feature_info_(group->feature_info()) {
+ DCHECK(group);
+}
- ~GLES2DecoderPassthroughImpl() override {}
-
- Error DoCommands(unsigned int num_commands,
- const void* buffer,
- int num_entries,
- int* entries_processed) override {
- commands_to_process_ = num_commands;
- error::Error result = error::kNoError;
- const CommandBufferEntry* cmd_data =
- static_cast<const CommandBufferEntry*>(buffer);
- int process_pos = 0;
- unsigned int command = 0;
-
- while (process_pos < num_entries && result == error::kNoError &&
- commands_to_process_--) {
- const unsigned int size = cmd_data->value_header.size;
- command = cmd_data->value_header.command;
-
- if (size == 0) {
- result = error::kInvalidSize;
- break;
- }
+GLES2DecoderPassthroughImpl::~GLES2DecoderPassthroughImpl() {}
+
+GLES2Decoder::Error GLES2DecoderPassthroughImpl::DoCommands(
+ unsigned int num_commands,
+ const void* buffer,
+ int num_entries,
+ int* entries_processed) {
+ commands_to_process_ = num_commands;
+ error::Error result = error::kNoError;
+ const CommandBufferEntry* cmd_data =
+ static_cast<const CommandBufferEntry*>(buffer);
+ int process_pos = 0;
+ unsigned int command = 0;
+
+ while (process_pos < num_entries && result == error::kNoError &&
+ commands_to_process_--) {
+ const unsigned int size = cmd_data->value_header.size;
+ command = cmd_data->value_header.command;
+
+ if (size == 0) {
+ result = error::kInvalidSize;
+ break;
+ }
- // size can't overflow because it is 21 bits.
- if (static_cast<int>(size) + process_pos > num_entries) {
- result = error::kOutOfBounds;
- break;
- }
+ // size can't overflow because it is 21 bits.
+ if (static_cast<int>(size) + process_pos > num_entries) {
+ result = error::kOutOfBounds;
+ break;
+ }
- const unsigned int arg_count = size - 1;
- unsigned int command_index = command - kFirstGLES2Command;
- if (command_index < arraysize(command_info)) {
- const CommandInfo& info = command_info[command_index];
- unsigned int info_arg_count = static_cast<unsigned int>(info.arg_count);
- if ((info.arg_flags == cmd::kFixed && arg_count == info_arg_count) ||
- (info.arg_flags == cmd::kAtLeastN && arg_count >= info_arg_count)) {
- uint32_t immediate_data_size = (arg_count - info_arg_count) *
- sizeof(CommandBufferEntry); // NOLINT
- if (info.cmd_handler) {
- result = (this->*info.cmd_handler)(immediate_data_size, cmd_data);
- } else {
- result = error::kUnknownCommand;
- }
+ const unsigned int arg_count = size - 1;
+ unsigned int command_index = command - kFirstGLES2Command;
+ if (command_index < arraysize(command_info)) {
+ const CommandInfo& info = command_info[command_index];
+ unsigned int info_arg_count = static_cast<unsigned int>(info.arg_count);
+ if ((info.arg_flags == cmd::kFixed && arg_count == info_arg_count) ||
+ (info.arg_flags == cmd::kAtLeastN && arg_count >= info_arg_count)) {
+ uint32_t immediate_data_size = (arg_count - info_arg_count) *
+ sizeof(CommandBufferEntry); // NOLINT
+ if (info.cmd_handler) {
+ result = (this->*info.cmd_handler)(immediate_data_size, cmd_data);
} else {
- result = error::kInvalidArguments;
+ result = error::kUnknownCommand;
}
} else {
- result = DoCommonCommand(command, arg_count, cmd_data);
+ result = error::kInvalidArguments;
}
+ } else {
+ result = DoCommonCommand(command, arg_count, cmd_data);
+ }
- if (result != error::kDeferCommandUntilLater) {
- process_pos += size;
- cmd_data += size;
- }
+ if (result != error::kDeferCommandUntilLater) {
+ process_pos += size;
+ cmd_data += size;
}
+ }
+
+ if (entries_processed)
+ *entries_processed = process_pos;
- if (entries_processed)
- *entries_processed = process_pos;
+ return result;
+}
- return result;
+const char* GLES2DecoderPassthroughImpl::GetCommandName(
+ unsigned int command_id) const {
+ if (command_id >= kFirstGLES2Command && command_id < kNumCommands) {
+ return gles2::GetCommandName(static_cast<CommandId>(command_id));
}
+ return GetCommonCommandName(static_cast<cmd::CommandId>(command_id));
+}
- const char* GetCommandName(unsigned int command_id) const override {
- if (command_id >= kFirstGLES2Command && command_id < kNumCommands) {
- return gles2::GetCommandName(static_cast<CommandId>(command_id));
- }
- return GetCommonCommandName(static_cast<cmd::CommandId>(command_id));
+bool GLES2DecoderPassthroughImpl::Initialize(
+ const scoped_refptr<gl::GLSurface>& surface,
+ const scoped_refptr<gl::GLContext>& context,
+ bool offscreen,
+ const gfx::Size& offscreen_size,
+ const DisallowedFeatures& disallowed_features,
+ const ContextCreationAttribHelper& attrib_helper) {
+ // Take ownership of the context and surface. The surface can be replaced
+ // with SetSurface.
+ context_ = context;
+ surface_ = surface;
+
+ if (!group_->Initialize(this, attrib_helper.context_type,
+ disallowed_features)) {
+ group_ = NULL; // Must not destroy ContextGroup if it is not initialized.
+ Destroy(true);
+ return false;
}
- bool Initialize(const scoped_refptr<gl::GLSurface>& surface,
- const scoped_refptr<gl::GLContext>& context,
- bool offscreen,
- const gfx::Size& offscreen_size,
- const DisallowedFeatures& disallowed_features,
- const ContextCreationAttribHelper& attrib_helper) override {
- // Take ownership of the context and surface. The surface can be replaced
- // with SetSurface.
- context_ = context;
- surface_ = surface;
-
- if (!group_->Initialize(this, attrib_helper.context_type,
- disallowed_features)) {
- group_ = NULL; // Must not destroy ContextGroup if it is not initialized.
- Destroy(true);
- return false;
- }
+ image_manager_.reset(new ImageManager());
- image_manager_.reset(new ImageManager());
+ set_initialized();
+ return true;
+}
- set_initialized();
- return true;
+void GLES2DecoderPassthroughImpl::Destroy(bool have_context) {
+ if (image_manager_.get()) {
+ image_manager_->Destroy(have_context);
+ image_manager_.reset();
}
+}
- // Destroys the graphics context.
- void Destroy(bool have_context) override {
- if (image_manager_.get()) {
- image_manager_->Destroy(have_context);
- image_manager_.reset();
- }
- }
+void GLES2DecoderPassthroughImpl::SetSurface(
+ const scoped_refptr<gl::GLSurface>& surface) {
+ DCHECK(context_->IsCurrent(nullptr));
+ DCHECK(surface_.get());
+ surface_ = surface;
+}
- // Set the surface associated with the default FBO.
- void SetSurface(const scoped_refptr<gl::GLSurface>& surface) override {
- DCHECK(context_->IsCurrent(nullptr));
- DCHECK(surface_.get());
- surface_ = surface;
+void GLES2DecoderPassthroughImpl::ReleaseSurface() {
+ if (!context_.get())
+ return;
+ if (WasContextLost()) {
+ DLOG(ERROR) << " GLES2DecoderImpl: Trying to release lost context.";
+ return;
}
+ context_->ReleaseCurrent(surface_.get());
+ surface_ = nullptr;
+}
- // Releases the surface associated with the GL context.
- // The decoder should not be used until a new surface is set.
- void ReleaseSurface() override {
- if (!context_.get())
- return;
- if (WasContextLost()) {
- DLOG(ERROR) << " GLES2DecoderImpl: Trying to release lost context.";
- return;
- }
- context_->ReleaseCurrent(surface_.get());
- surface_ = nullptr;
- }
+void GLES2DecoderPassthroughImpl::TakeFrontBuffer(const Mailbox& mailbox) {}
+
+void GLES2DecoderPassthroughImpl::ReturnFrontBuffer(const Mailbox& mailbox,
+ bool is_lost) {}
- void TakeFrontBuffer(const Mailbox& mailbox) override {}
+bool GLES2DecoderPassthroughImpl::ResizeOffscreenFrameBuffer(
+ const gfx::Size& size) {
+ return true;
+}
- void ReturnFrontBuffer(const Mailbox& mailbox, bool is_lost) override {}
+bool GLES2DecoderPassthroughImpl::MakeCurrent() {
+ if (!context_.get())
+ return false;
- // Resize an offscreen frame buffer.
- bool ResizeOffscreenFrameBuffer(const gfx::Size& size) override {
- return true;
+ if (!context_->MakeCurrent(surface_.get())) {
+ LOG(ERROR) << " GLES2DecoderImpl: Context lost during MakeCurrent.";
+ MarkContextLost(error::kMakeCurrentFailed);
+ group_->LoseContexts(error::kUnknown);
+ return false;
}
- // Make this decoder's GL context current.
- bool MakeCurrent() override {
- if (!context_.get())
- return false;
+ return true;
+}
- if (!context_->MakeCurrent(surface_.get())) {
- LOG(ERROR) << " GLES2DecoderImpl: Context lost during MakeCurrent.";
- MarkContextLost(error::kMakeCurrentFailed);
- group_->LoseContexts(error::kUnknown);
- return false;
- }
+gpu::gles2::GLES2Util* GLES2DecoderPassthroughImpl::GetGLES2Util() {
+ return nullptr;
+}
- return true;
- }
+gl::GLContext* GLES2DecoderPassthroughImpl::GetGLContext() {
+ return nullptr;
+}
- // Gets the GLES2 Util which holds info.
- GLES2Util* GetGLES2Util() override { return nullptr; }
+gpu::gles2::ContextGroup* GLES2DecoderPassthroughImpl::GetContextGroup() {
+ return nullptr;
+}
- // Gets the associated GLContext.
- gl::GLContext* GetGLContext() override { return nullptr; }
+gpu::Capabilities GLES2DecoderPassthroughImpl::GetCapabilities() {
+ DCHECK(initialized());
+ Capabilities caps;
+ return caps;
+}
- // Gets the associated ContextGroup
- ContextGroup* GetContextGroup() override { return nullptr; }
+void GLES2DecoderPassthroughImpl::RestoreState(const ContextState* prev_state) {
- Capabilities GetCapabilities() override {
- DCHECK(initialized());
- Capabilities caps;
- return caps;
- }
+}
- // Restores all of the decoder GL state.
- void RestoreState(const ContextState* prev_state) override {}
-
- // Restore States.
- void RestoreActiveTexture() const override {}
- void RestoreAllTextureUnitBindings(
- const ContextState* prev_state) const override {}
- void RestoreActiveTextureUnitBinding(unsigned int target) const override {}
- void RestoreBufferBindings() const override {}
- void RestoreFramebufferBindings() const override {}
- void RestoreRenderbufferBindings() override {}
- void RestoreGlobalState() const override {}
- void RestoreProgramBindings() const override {}
- void RestoreTextureState(unsigned service_id) const override {}
- void RestoreTextureUnitBindings(unsigned unit) const override {}
- void RestoreAllExternalTextureBindingsIfNeeded() override {}
-
- void ClearAllAttributes() const override {}
- void RestoreAllAttributes() const override {}
-
- void SetIgnoreCachedStateForTest(bool ignore) override {}
- void SetForceShaderNameHashingForTest(bool force) override {}
- size_t GetSavedBackTextureCountForTest() override { return 0; }
- size_t GetCreatedBackTextureCountForTest() override { return 0; }
-
- // Gets the QueryManager for this context.
- QueryManager* GetQueryManager() override { return nullptr; }
-
- // Gets the TransformFeedbackManager for this context.
- TransformFeedbackManager* GetTransformFeedbackManager() override {
- return nullptr;
- }
+void GLES2DecoderPassthroughImpl::RestoreActiveTexture() const {}
- // Gets the VertexArrayManager for this context.
- VertexArrayManager* GetVertexArrayManager() override { return nullptr; }
+void GLES2DecoderPassthroughImpl::RestoreAllTextureUnitBindings(
+ const ContextState* prev_state) const {}
- // Gets the ImageManager for this context.
- ImageManager* GetImageManager() override { return image_manager_.get(); }
+void GLES2DecoderPassthroughImpl::RestoreActiveTextureUnitBinding(
+ unsigned int target) const {}
- // Returns false if there are no pending queries.
- bool HasPendingQueries() const override { return false; }
+void GLES2DecoderPassthroughImpl::RestoreBufferBindings() const {}
- // Process any pending queries.
- void ProcessPendingQueries(bool did_finish) override {}
+void GLES2DecoderPassthroughImpl::RestoreFramebufferBindings() const {}
- // Returns false if there is no idle work to be made.
- bool HasMoreIdleWork() const override { return false; }
+void GLES2DecoderPassthroughImpl::RestoreRenderbufferBindings() {}
- // Perform any idle work that needs to be made.
- void PerformIdleWork() override {}
+void GLES2DecoderPassthroughImpl::RestoreGlobalState() const {}
- bool GetServiceTextureId(uint32_t client_texture_id,
- uint32_t* service_texture_id) override {
- return false;
- }
+void GLES2DecoderPassthroughImpl::RestoreProgramBindings() const {}
- // Provides detail about a lost context if one occurred.
- error::ContextLostReason GetContextLostReason() override {
- return error::kUnknown;
- }
+void GLES2DecoderPassthroughImpl::RestoreTextureState(
+ unsigned service_id) const {}
- // Clears a level sub area of a texture
- // Returns false if a GL error should be generated.
- bool ClearLevel(Texture* texture,
- unsigned target,
- int level,
- unsigned format,
- unsigned type,
- int xoffset,
- int yoffset,
- int width,
- int height) override {
- return true;
- }
+void GLES2DecoderPassthroughImpl::RestoreTextureUnitBindings(
+ unsigned unit) const {}
- // Clears a level sub area of a compressed 2D texture.
- // Returns false if a GL error should be generated.
- bool ClearCompressedTextureLevel(Texture* texture,
- unsigned target,
- int level,
- unsigned format,
- int width,
- int height) override {
- return true;
- }
+void GLES2DecoderPassthroughImpl::RestoreAllExternalTextureBindingsIfNeeded() {}
- // Indicates whether a given internal format is one for a compressed
- // texture.
- bool IsCompressedTextureFormat(unsigned format) override { return false; };
-
- // Clears a level of a 3D texture.
- // Returns false if a GL error should be generated.
- bool ClearLevel3D(Texture* texture,
- unsigned target,
- int level,
- unsigned format,
- unsigned type,
- int width,
- int height,
- int depth) override {
- return true;
- }
+void GLES2DecoderPassthroughImpl::ClearAllAttributes() const {}
- ErrorState* GetErrorState() override { return nullptr; }
+void GLES2DecoderPassthroughImpl::RestoreAllAttributes() const {}
- // A callback for messages from the decoder.
- void SetShaderCacheCallback(const ShaderCacheCallback& callback) override {}
+void GLES2DecoderPassthroughImpl::SetIgnoreCachedStateForTest(bool ignore) {}
- // Sets the callback for fence sync release and wait calls. The wait call
- // returns true if the channel is still scheduled.
- void SetFenceSyncReleaseCallback(
- const FenceSyncReleaseCallback& callback) override {}
- void SetWaitFenceSyncCallback(
- const WaitFenceSyncCallback& callback) override {}
- void SetDescheduleUntilFinishedCallback(
- const NoParamCallback& callback) override {}
- void SetRescheduleAfterFinishedCallback(
- const NoParamCallback& callback) override {}
+void GLES2DecoderPassthroughImpl::SetForceShaderNameHashingForTest(bool force) {
- void WaitForReadPixels(base::Closure callback) override {}
+}
- uint32_t GetTextureUploadCount() override { return 0; }
+size_t GLES2DecoderPassthroughImpl::GetSavedBackTextureCountForTest() {
+ return 0;
+}
- base::TimeDelta GetTotalTextureUploadTime() override {
- return base::TimeDelta();
- }
+size_t GLES2DecoderPassthroughImpl::GetCreatedBackTextureCountForTest() {
+ return 0;
+}
- base::TimeDelta GetTotalProcessingCommandsTime() override {
- return base::TimeDelta();
- }
+void GLES2DecoderPassthroughImpl::SetFenceSyncReleaseCallback(
+ const FenceSyncReleaseCallback& callback) {}
- void AddProcessingCommandsTime(base::TimeDelta) override {}
+void GLES2DecoderPassthroughImpl::SetWaitFenceSyncCallback(
+ const WaitFenceSyncCallback& callback) {}
- // Returns true if the context was lost either by GL_ARB_robustness, forced
- // context loss or command buffer parse error.
- bool WasContextLost() const override { return false; }
+void GLES2DecoderPassthroughImpl::SetDescheduleUntilFinishedCallback(
+ const NoParamCallback& callback) {}
- // Returns true if the context was lost specifically by GL_ARB_robustness.
- bool WasContextLostByRobustnessExtension() const override { return false; }
+void GLES2DecoderPassthroughImpl::SetRescheduleAfterFinishedCallback(
+ const NoParamCallback& callback) {}
- // Lose this context.
- void MarkContextLost(error::ContextLostReason reason) override {}
+gpu::gles2::QueryManager* GLES2DecoderPassthroughImpl::GetQueryManager() {
+ return nullptr;
+}
+
+gpu::gles2::TransformFeedbackManager*
+GLES2DecoderPassthroughImpl::GetTransformFeedbackManager() {
+ return nullptr;
+}
+
+gpu::gles2::VertexArrayManager*
+GLES2DecoderPassthroughImpl::GetVertexArrayManager() {
+ return nullptr;
+}
- Logger* GetLogger() override { return &logger_; }
+gpu::gles2::ImageManager* GLES2DecoderPassthroughImpl::GetImageManager() {
+ return image_manager_.get();
+}
- const ContextState* GetContextState() override { return nullptr; }
+bool GLES2DecoderPassthroughImpl::HasPendingQueries() const {
+ return false;
+}
- private:
- int commands_to_process_;
+void GLES2DecoderPassthroughImpl::ProcessPendingQueries(bool did_finish) {}
- DebugMarkerManager debug_marker_manager_;
- Logger logger_;
+bool GLES2DecoderPassthroughImpl::HasMoreIdleWork() const {
+ return false;
+}
- using CmdHandler =
- Error (GLES2DecoderPassthroughImpl::*)(uint32_t immediate_data_size,
- const void* data);
+void GLES2DecoderPassthroughImpl::PerformIdleWork() {}
- // A struct to hold info about each command.
- struct CommandInfo {
- CmdHandler cmd_handler;
- uint8_t arg_flags; // How to handle the arguments for this scommand
- uint8_t cmd_flags; // How to handle this command
- uint16_t arg_count; // How many arguments are expected for this command.
- };
+bool GLES2DecoderPassthroughImpl::GetServiceTextureId(
+ uint32_t client_texture_id,
+ uint32_t* service_texture_id) {
+ return false;
+}
- // A table of CommandInfo for all the commands.
- static const CommandInfo command_info[kNumCommands - kFirstGLES2Command];
+gpu::error::ContextLostReason
+GLES2DecoderPassthroughImpl::GetContextLostReason() {
+ return error::kUnknown;
+}
- // The GL context this decoder renders to on behalf of the client.
- scoped_refptr<gl::GLSurface> surface_;
- scoped_refptr<gl::GLContext> context_;
+bool GLES2DecoderPassthroughImpl::ClearLevel(Texture* texture,
+ unsigned target,
+ int level,
+ unsigned format,
+ unsigned type,
+ int xoffset,
+ int yoffset,
+ int width,
+ int height) {
+ return true;
+}
- // Managers
- std::unique_ptr<ImageManager> image_manager_;
+bool GLES2DecoderPassthroughImpl::ClearCompressedTextureLevel(Texture* texture,
+ unsigned target,
+ int level,
+ unsigned format,
+ int width,
+ int height) {
+ return true;
+}
- // The ContextGroup for this decoder uses to track resources.
- scoped_refptr<ContextGroup> group_;
- scoped_refptr<FeatureInfo> feature_info_;
-};
+bool GLES2DecoderPassthroughImpl::IsCompressedTextureFormat(unsigned format) {
+ return false;
+}
-const GLES2DecoderPassthroughImpl::CommandInfo
- GLES2DecoderPassthroughImpl::command_info[] = {};
+bool GLES2DecoderPassthroughImpl::ClearLevel3D(Texture* texture,
+ unsigned target,
+ int level,
+ unsigned format,
+ unsigned type,
+ int width,
+ int height,
+ int depth) {
+ return true;
+}
-GLES2Decoder* CreateGLES2DecoderPassthroughImpl(ContextGroup* group) {
- return new GLES2DecoderPassthroughImpl(group);
+gpu::gles2::ErrorState* GLES2DecoderPassthroughImpl::GetErrorState() {
+ return nullptr;
}
+void GLES2DecoderPassthroughImpl::SetShaderCacheCallback(
+ const ShaderCacheCallback& callback) {}
+
+void GLES2DecoderPassthroughImpl::WaitForReadPixels(base::Closure callback) {}
+
+uint32_t GLES2DecoderPassthroughImpl::GetTextureUploadCount() {
+ return 0;
+}
+
+base::TimeDelta GLES2DecoderPassthroughImpl::GetTotalTextureUploadTime() {
+ return base::TimeDelta();
+}
+
+base::TimeDelta GLES2DecoderPassthroughImpl::GetTotalProcessingCommandsTime() {
+ return base::TimeDelta();
+}
+
+void GLES2DecoderPassthroughImpl::AddProcessingCommandsTime(base::TimeDelta) {}
+
+bool GLES2DecoderPassthroughImpl::WasContextLost() const {
+ return false;
+}
+
+bool GLES2DecoderPassthroughImpl::WasContextLostByRobustnessExtension() const {
+ return false;
+}
+
+void GLES2DecoderPassthroughImpl::MarkContextLost(
+ error::ContextLostReason reason) {}
+
+gpu::gles2::Logger* GLES2DecoderPassthroughImpl::GetLogger() {
+ return &logger_;
+}
+
+const gpu::gles2::ContextState* GLES2DecoderPassthroughImpl::GetContextState() {
+ return nullptr;
+}
+
+#define GLES2_CMD_OP(name) \
+ { \
+ &GLES2DecoderPassthroughImpl::Handle##name, cmds::name::kArgFlags, \
+ cmds::name::cmd_flags, \
+ sizeof(cmds::name) / sizeof(CommandBufferEntry) - 1, \
+ }, /* NOLINT */
+
+const GLES2DecoderPassthroughImpl::CommandInfo
+ GLES2DecoderPassthroughImpl::command_info[] = {
+ GLES2_COMMAND_LIST(GLES2_CMD_OP)};
+
+#undef GLES2_CMD_OP
+
} // namespace gles2
} // namespace gpu

Powered by Google App Engine
This is Rietveld 408576698