15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file contains the binary format definition of the command buffer and
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// command buffer commands.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "gpu/command_buffer/common/cmd_buffer_common.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "gpu/command_buffer/common/command_buffer.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gpu {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(_WIN32)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// gcc needs this to link, but MSVC requires it not be present
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int32 CommandHeader::kMaxSize;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace cmd {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* GetCommandName(CommandId command_id) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const char* const names[] = {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define COMMON_COMMAND_BUFFER_CMD_OP(name) # name,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  COMMON_COMMAND_BUFFER_CMDS(COMMON_COMMAND_BUFFER_CMD_OP)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #undef COMMON_COMMAND_BUFFER_CMD_OP
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int id = static_cast<int>(command_id);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return (id >= 0 && id < kNumCommands) ? names[id] : "*unknown-command*";
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace cmd
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if !defined(NACL_WIN64)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(apatrick): this is a temporary optimization while skia is calling
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RendererGLContext::MakeCurrent prior to every GL call. It saves returning 6
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ints redundantly when only the error is needed for the CommandBufferProxy
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// implementation.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)error::Error CommandBuffer::GetLastError() {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetLastState().error;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace gpu
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47