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

Unified Diff: command_buffer/service/cross/gapi_decoder.cc

Issue 329046: Splits the command buffers into common commands... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 11 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: command_buffer/service/cross/gapi_decoder.cc
===================================================================
--- command_buffer/service/cross/gapi_decoder.cc (revision 30289)
+++ command_buffer/service/cross/gapi_decoder.cc (working copy)
@@ -36,7 +36,6 @@
#include "base/cross/bits.h"
#include "command_buffer/common/cross/gapi_interface.h"
#include "command_buffer/service/cross/gapi_decoder.h"
-#include "command_buffer/service/cross/cmd_buffer_engine.h"
namespace o3d {
namespace command_buffer {
@@ -78,8 +77,7 @@
} // anonymous namespace.
-// Decode command with its arguments, and call the corresponding GAPIInterface
-// method.
+// Decode command with its arguments, and call the corresponding method.
// Note: args is a pointer to the command buffer. As such, it could be changed
// by a (malicious) client at any time, so if validation has to happen, it
// should operate on a copy of them.
@@ -87,9 +85,10 @@
unsigned int command,
unsigned int arg_count,
const void* cmd_data) {
- if (command < arraysize(g_command_info)) {
- const CommandInfo& info = g_command_info[command];
- unsigned int info_arg_count = static_cast<unsigned int>(info.arg_count);
+ unsigned int command_index = command - kStartPoint - 1;
+ if (command_index < arraysize(g_command_info)) {
+ const CommandInfo& info = g_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)) {
switch (command) {
@@ -107,32 +106,18 @@
return parse_error::kParseInvalidArguments;
}
}
+ return DoCommonCommand(command, arg_count, cmd_data);
return parse_error::kParseUnknownCommand;
}
-void *GAPIDecoder::GetAddressAndCheckSize(unsigned int shm_id,
- unsigned int offset,
- unsigned int size) {
- void * shm_addr = engine_->GetSharedMemoryAddress(shm_id);
- if (!shm_addr) return NULL;
- size_t shm_size = engine_->GetSharedMemorySize(shm_id);
- if (offset + size > shm_size) return NULL;
- return static_cast<char *>(shm_addr) + offset;
+ // Overridden from AsyncAPIInterface.
+const char* GAPIDecoder::GetCommandName(unsigned int command_id) const {
+ if (command_id > kStartPoint && command_id < kNumCommands) {
+ return o3d::GetCommandName(static_cast<CommandId>(command_id));
+ }
+ return GetCommonCommandName(static_cast<cmd::CommandId>(command_id));
}
-parse_error::ParseError GAPIDecoder::HandleNoop(
- uint32 arg_count,
- const Noop& args) {
- return parse_error::kParseNoError;
-}
-
-parse_error::ParseError GAPIDecoder::HandleSetToken(
- uint32 arg_count,
- const SetToken& args) {
- engine_->set_token(args.token);
- return parse_error::kParseNoError;
-}
-
parse_error::ParseError GAPIDecoder::HandleBeginFrame(
uint32 arg_count,
const BeginFrame& args) {

Powered by Google App Engine
This is Rietveld 408576698