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)#ifndef GPU_COMMAND_BUFFER_CLIENT_GLES2_CMD_HELPER_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GPU_COMMAND_BUFFER_CLIENT_GLES2_CMD_HELPER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "gpu/command_buffer/client/cmd_buffer_helper.h"
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "gpu/command_buffer/common/gles2_cmd_format.h"
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "gpu/gpu_export.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gpu {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gles2 {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A class that helps write GL command buffers.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GPU_EXPORT GLES2CmdHelper : public CommandBufferHelper {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit GLES2CmdHelper(CommandBuffer* command_buffer);
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~GLES2CmdHelper();
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Include the auto-generated part of this class. We split this because it
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // means we can easily edit the non-auto generated parts right here in this
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // file instead of having to edit some template or the code generator.
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  #include "gpu/command_buffer/client/gles2_cmd_helper_autogen.h"
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helpers that could not be auto-generated.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(gman): Auto generate these.
28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  void CreateAndConsumeTextureCHROMIUMImmediate(GLenum target,
29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                                uint32_t client_id,
30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                                const GLbyte* _mailbox) {
31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    const uint32_t size =
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        gles2::cmds::CreateAndConsumeTextureCHROMIUMImmediate::ComputeSize();
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    gles2::cmds::CreateAndConsumeTextureCHROMIUMImmediate* c =
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        GetImmediateCmdSpaceTotalSize<
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)            gles2::cmds::CreateAndConsumeTextureCHROMIUMImmediate>(size);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (c) {
37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      c->Init(target, client_id, _mailbox);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(GLES2CmdHelper);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace gles2
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace gpu
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_CMD_HELPER_H_
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50