gles2_cmd_helper.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
1f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// Use of this source code is governed by a BSD-style license that can be 3f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// found in the LICENSE file. 4f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 5f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project#ifndef GPU_COMMAND_BUFFER_CLIENT_GLES2_CMD_HELPER_H_ 6f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project#define GPU_COMMAND_BUFFER_CLIENT_GLES2_CMD_HELPER_H_ 7f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 8f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project#include "../../gpu_export.h" 9f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project#include "../client/cmd_buffer_helper.h" 10f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project#include "../common/gles2_cmd_format.h" 11f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 12f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectnamespace gpu { 13f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectnamespace gles2 { 14f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 15f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// A class that helps write GL command buffers. 16f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectclass GPU_EXPORT GLES2CmdHelper : public CommandBufferHelper { 17f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public: 18f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project explicit GLES2CmdHelper(CommandBuffer* command_buffer); 19f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project virtual ~GLES2CmdHelper(); 20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // Include the auto-generated part of this class. We split this because it 22f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // means we can easily edit the non-auto generated parts right here in this 23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // file instead of having to edit some template or the code generator. 24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project #include "../client/gles2_cmd_helper_autogen.h" 25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // Helpers that could not be auto-generated. 27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // TODO(gman): Auto generate these. 28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project void GetAttribLocation( 30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GLuint program, uint32 name_shm_id, uint32 name_shm_offset, 31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project uint32 location_shm_id, uint32 location_shm_offset, uint32 data_size) { 32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project gles2::GetAttribLocation* c = GetCmdSpace<gles2::GetAttribLocation>(); 33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (c) { 34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project c->Init( 35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project program, name_shm_id, name_shm_offset, location_shm_id, 36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project location_shm_offset, data_size); 37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project void GetAttribLocationImmediate( 41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GLuint program, const char* name, 42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project uint32 location_shm_id, uint32 location_shm_offset) { 43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project const uint32 size = gles2::GetAttribLocationImmediate::ComputeSize(name); 44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project gles2::GetAttribLocationImmediate* c = 45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GetImmediateCmdSpaceTotalSize<gles2::GetAttribLocationImmediate>(size); 46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (c) { 47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project c->Init(program, name, location_shm_id, location_shm_offset); 48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 51f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project void GetAttribLocationBucket( 52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GLuint program, uint32 name_bucket_id, 53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project uint32 location_shm_id, uint32 location_shm_offset) { 54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project gles2::GetAttribLocationBucket* c = 55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GetCmdSpace<gles2::GetAttribLocationBucket>(); 56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (c) { 57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project c->Init(program, name_bucket_id, location_shm_id, location_shm_offset); 58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project void GetUniformLocation( 62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GLuint program, uint32 name_shm_id, uint32 name_shm_offset, 63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project uint32 location_shm_id, uint32 location_shm_offset, uint32 data_size) { 64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project gles2::GetUniformLocation* c = GetCmdSpace<gles2::GetUniformLocation>(); 65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (c) { 66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project c->Init( 67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project program, name_shm_id, name_shm_offset, location_shm_id, 68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project location_shm_offset, data_size); 69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project void GetUniformLocationImmediate( 73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GLuint program, const char* name, 74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project uint32 location_shm_id, uint32 location_shm_offset) { 75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project const uint32 size = gles2::GetUniformLocationImmediate::ComputeSize(name); 76f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project gles2::GetUniformLocationImmediate* c = 77f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GetImmediateCmdSpaceTotalSize<gles2::GetUniformLocationImmediate>(size); 78f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (c) { 79f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project c->Init(program, name, location_shm_id, location_shm_offset); 80f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 81f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 82f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 83f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project void GetUniformLocationBucket( 84f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GLuint program, uint32 name_bucket_id, 85f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project uint32 location_shm_id, uint32 location_shm_offset) { 86f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project gles2::GetUniformLocationBucket* c = 87f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project GetCmdSpace<gles2::GetUniformLocationBucket>(); 88f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project if (c) { 89f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project c->Init(program, name_bucket_id, location_shm_id, location_shm_offset); 90f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 91f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 92f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 93f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project private: 94f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project DISALLOW_COPY_AND_ASSIGN(GLES2CmdHelper); 95f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project}; 96f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 97f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // namespace gles2 98f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // namespace gpu 99f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 100f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project#endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_CMD_HELPER_H_ 101f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 102f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project