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

Unified Diff: command_buffer/client/cross/big_test_client.cc

Issue 212018: Change command buffer client code to use structures.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 11 years, 3 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
« no previous file with comments | « no previous file | command_buffer/client/cross/buffer_sync_proxy_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: command_buffer/client/cross/big_test_client.cc
===================================================================
--- command_buffer/client/cross/big_test_client.cc (revision 26638)
+++ command_buffer/client/cross/big_test_client.cc (working copy)
@@ -47,30 +47,6 @@
namespace math = Vectormath::Aos;
-// Adds a Clear command into the command buffer.
-// Parameters:
-// cmd_buffer: the command buffer helper.
-// buffers: a bitfield of which buffers to clear (a combination of
-// GAPIInterface::COLOR, GAPIInterface::DEPTH and GAPIInterface::STENCIL).
-// color: the color buffer clear value.
-// depth: the depth buffer clear value.
-// stencil: the stencil buffer clear value.
-void ClearCmd(CommandBufferHelper *cmd_buffer,
- const unsigned int buffers,
- const RGBA &color,
- float depth,
- unsigned int stencil) {
- CommandBufferEntry args[7];
- args[0].value_uint32 = buffers;
- args[1].value_float = color.red;
- args[2].value_float = color.green;
- args[3].value_float = color.blue;
- args[4].value_float = color.alpha;
- args[5].value_float = depth;
- args[6].value_uint32 = stencil;
- cmd_buffer->AddCommand(command_buffer::CLEAR, 7, args);
-}
-
// Adds a SetViewport command into the buffer.
// Parameters:
// cmd_buffer: the command buffer helper.
@@ -83,14 +59,7 @@
unsigned int height,
float z_near,
float z_far) {
- CommandBufferEntry args[6];
- args[0].value_uint32 = x;
- args[1].value_uint32 = y;
- args[2].value_uint32 = width;
- args[3].value_uint32 = height;
- args[4].value_float = z_near;
- args[5].value_float = z_far;
- cmd_buffer->AddCommand(command_buffer::SET_VIEWPORT, 6, args);
+ cmd_buffer->SetViewport(x, y, width, height, z_near, z_far);
}
// Copy a data buffer to args, for IMMEDIATE commands. Returns the number of
@@ -143,88 +112,52 @@
// Clear the buffers.
RGBA color = {0.2f, 0.2f, 0.2f, 1.f};
- ClearCmd(&cmd_buffer, GAPIInterface::COLOR | GAPIInterface::DEPTH, color,
- 1.f, 0);
+ cmd_buffer.Clear(GAPIInterface::COLOR | GAPIInterface::DEPTH,
+ color.red, color.green, color.blue, color.alpha,
+ 1.f, 0);
const ResourceID vertex_buffer_id = 1;
const ResourceID vertex_struct_id = 1;
- // AddCommand copies the args, so it is safe to re-use args across various
- // calls.
- // 20 is the largest command we use (SET_PARAM_DATA_IMMEDIATE for matrices).
- CommandBufferEntry args[20];
-
- CustomVertex vertices[4] = {
+ static const CustomVertex vertices[4] = {
{-.5f, -.5f, 0.f, 1.f, 0, 0},
{.5f, -.5f, 0.f, 1.f, 1, 0},
{-.5f, .5f, 0.f, 1.f, 0, 1},
{.5f, .5f, 0.f, 1.f, 1, 1},
};
- args[0].value_uint32 = vertex_buffer_id;
- args[1].value_uint32 = sizeof(vertices); // size
- args[2].value_uint32 = 0; // flags
- cmd_buffer.AddCommand(command_buffer::CREATE_VERTEX_BUFFER, 3, args);
+ cmd_buffer.CreateVertexBuffer(vertex_buffer_id, sizeof(vertices), 0);
memcpy(shm_address, vertices, sizeof(vertices));
- args[0].value_uint32 = vertex_buffer_id;
- args[1].value_uint32 = 0; // offset in VB
- args[2].value_uint32 = sizeof(vertices); // size
- args[3].value_uint32 = shm_id; // shm
- args[4].value_uint32 = 0; // offset in shm
- cmd_buffer.AddCommand(command_buffer::SET_VERTEX_BUFFER_DATA, 5, args);
+ cmd_buffer.SetVertexBufferData(
+ vertex_buffer_id, 0, sizeof(vertices), shm_id, 0);
unsigned int token = cmd_buffer.InsertToken();
- args[0].value_uint32 = vertex_struct_id;
- args[1].value_uint32 = 2; // input count
- cmd_buffer.AddCommand(command_buffer::CREATE_VERTEX_STRUCT, 2, args);
+ cmd_buffer.CreateVertexStruct(vertex_struct_id, 2);
// Set POSITION input stream
- args[0].value_uint32 = vertex_struct_id;
- args[1].value_uint32 = 0; // input
- args[2].value_uint32 = vertex_buffer_id; // buffer
- args[3].value_uint32 = 0; // offset
- args[4].value_uint32 =
- set_vertex_input_cmd::Stride::MakeValue(sizeof(CustomVertex)) |
- set_vertex_input_cmd::Type::MakeValue(vertex_struct::FLOAT4) |
- set_vertex_input_cmd::Semantic::MakeValue(vertex_struct::POSITION) |
- set_vertex_input_cmd::SemanticIndex::MakeValue(0);
- cmd_buffer.AddCommand(command_buffer::SET_VERTEX_INPUT, 5, args);
+ cmd_buffer.SetVertexInput(vertex_struct_id, 0, vertex_buffer_id, 0,
+ vertex_struct::POSITION, 0,
+ vertex_struct::FLOAT4, sizeof(CustomVertex));
// Set TEXCOORD0 input stream
- args[1].value_uint32 = 1; // input
- args[3].value_uint32 = 16; // offset
- args[4].value_uint32 =
- set_vertex_input_cmd::Stride::MakeValue(sizeof(CustomVertex)) |
- set_vertex_input_cmd::Type::MakeValue(vertex_struct::FLOAT2) |
- set_vertex_input_cmd::Semantic::MakeValue(vertex_struct::TEX_COORD) |
- set_vertex_input_cmd::SemanticIndex::MakeValue(0);
- cmd_buffer.AddCommand(command_buffer::SET_VERTEX_INPUT, 5, args);
+ cmd_buffer.SetVertexInput(vertex_struct_id, 1, vertex_buffer_id, 16,
+ vertex_struct::TEX_COORD, 0,
+ vertex_struct::FLOAT2, sizeof(CustomVertex));
// wait for previous transfer to be executed, so that we can re-use the
// transfer shared memory buffer.
cmd_buffer.WaitForToken(token);
memcpy(shm_address, effect_data, sizeof(effect_data));
const ResourceID effect_id = 1;
- args[0].value_uint32 = effect_id;
- args[1].value_uint32 = sizeof(effect_data); // size
- args[2].value_uint32 = shm_id; // shm
- args[3].value_uint32 = 0; // offset in shm
- cmd_buffer.AddCommand(command_buffer::CREATE_EFFECT, 4, args);
+ cmd_buffer.CreateEffect(effect_id, sizeof(effect_data), shm_id, 0);
token = cmd_buffer.InsertToken();
// Create a 4x4 2D texture.
const ResourceID texture_id = 1;
- args[0].value_uint32 = texture_id;
- args[1].value_uint32 =
- create_texture_2d_cmd::Width::MakeValue(4) |
- create_texture_2d_cmd::Height::MakeValue(4);
- args[2].value_uint32 =
- create_texture_2d_cmd::Levels::MakeValue(0) |
- create_texture_2d_cmd::Format::MakeValue(texture::ARGB8) |
- create_texture_2d_cmd::Flags::MakeValue(0);
- cmd_buffer.AddCommand(command_buffer::CREATE_TEXTURE_2D, 3, args);
+ // TODO(gman): the 0 should be a 1?!?!
+ cmd_buffer.CreateTexture2d(texture_id, 4, 4, 0, texture::ARGB8, 0);
- unsigned int texels[4] = {
+ static const unsigned int texels[4] = {
0xff0000ff,
0xffff00ff,
0xff00ffff,
@@ -237,68 +170,40 @@
// Creates a 4x4 texture by uploading 2x2 data in each quadrant.
for (unsigned int x = 0; x < 2; ++x)
for (unsigned int y = 0; y < 2; ++y) {
- args[0].value_uint32 = texture_id;
- args[1].value_uint32 =
- set_texture_data_cmd::X::MakeValue(x*2) |
- set_texture_data_cmd::Y::MakeValue(y*2);
- args[2].value_uint32 =
- set_texture_data_cmd::Width::MakeValue(2) |
- set_texture_data_cmd::Height::MakeValue(2);
- args[3].value_uint32 =
- set_texture_data_cmd::Z::MakeValue(0) |
- set_texture_data_cmd::Depth::MakeValue(1);
- args[4].value_uint32 = set_texture_data_cmd::Level::MakeValue(0);
- args[5].value_uint32 = sizeof(texels[0]) * 2; // row_pitch
- args[6].value_uint32 = 0; // slice_pitch
- args[7].value_uint32 = sizeof(texels); // size
- args[8].value_uint32 = shm_id;
- args[9].value_uint32 = 0;
- cmd_buffer.AddCommand(command_buffer::SET_TEXTURE_DATA, 10, args);
+ cmd_buffer.SetTextureData(texture_id, x * 2, y * 2, 0, 2, 2, 1, 0, 0,
+ sizeof(texels[0]) * 2, // row_pitch
+ 0, // slice_pitch
+ sizeof(texels), // size
+ shm_id,
+ 0);
}
token = cmd_buffer.InsertToken();
const ResourceID sampler_id = 1;
- args[0].value_uint32 = sampler_id;
- cmd_buffer.AddCommand(command_buffer::CREATE_SAMPLER, 1, args);
+ cmd_buffer.CreateSampler(sampler_id);
+ cmd_buffer.SetSamplerTexture(sampler_id, texture_id);
+ cmd_buffer.SetSamplerStates(sampler_id,
+ sampler::CLAMP_TO_EDGE,
+ sampler::CLAMP_TO_EDGE,
+ sampler::CLAMP_TO_EDGE,
+ sampler::POINT,
+ sampler::POINT,
+ sampler::NONE,
+ 1);
- args[0].value_uint32 = sampler_id;
- args[1].value_uint32 = texture_id;
- cmd_buffer.AddCommand(command_buffer::SET_SAMPLER_TEXTURE, 2, args);
-
- args[0].value_uint32 = sampler_id;
- args[1].value_uint32 =
- set_sampler_states::AddressingU::MakeValue(sampler::CLAMP_TO_EDGE) |
- set_sampler_states::AddressingV::MakeValue(sampler::CLAMP_TO_EDGE) |
- set_sampler_states::AddressingW::MakeValue(sampler::CLAMP_TO_EDGE) |
- set_sampler_states::MagFilter::MakeValue(sampler::POINT) |
- set_sampler_states::MinFilter::MakeValue(sampler::POINT) |
- set_sampler_states::MipFilter::MakeValue(sampler::NONE) |
- set_sampler_states::MaxAnisotropy::MakeValue(1);
- cmd_buffer.AddCommand(command_buffer::SET_SAMPLER_STATES, 2, args);
-
// Create a parameter for the sampler.
const ResourceID sampler_param_id = 1;
{
- const char param_name[] = "s0";
- args[0].value_uint32 = sampler_param_id;
- args[1].value_uint32 = effect_id;
- args[2].value_uint32 = sizeof(param_name);
- unsigned int arg_count = CopyToArgs(args + 3, param_name,
- sizeof(param_name));
- cmd_buffer.AddCommand(command_buffer::CREATE_PARAM_BY_NAME_IMMEDIATE,
- 3 + arg_count, args);
+ static const char param_name[] = "s0";
+ cmd_buffer.CreateParamByNameImmediate(sampler_param_id, effect_id,
+ sizeof(param_name), param_name);
}
const ResourceID matrix_param_id = 2;
{
- const char param_name[] = "worldViewProj";
- args[0].value_uint32 = matrix_param_id;
- args[1].value_uint32 = effect_id;
- args[2].value_uint32 = sizeof(param_name);
- unsigned int arg_count = CopyToArgs(args + 3, param_name,
- sizeof(param_name));
- cmd_buffer.AddCommand(command_buffer::CREATE_PARAM_BY_NAME_IMMEDIATE,
- 3 + arg_count, args);
+ static const char param_name[] = "worldViewProj";
+ cmd_buffer.CreateParamByNameImmediate(matrix_param_id, effect_id,
+ sizeof(param_name), param_name);
}
float t = 0.f;
@@ -307,34 +212,21 @@
math::Matrix4 m =
math::Matrix4::translation(math::Vector3(0.f, 0.f, .5f));
m *= math::Matrix4::rotationY(t * 2 * 3.1415926f);
- cmd_buffer.AddCommand(command_buffer::BEGIN_FRAME, 0 , NULL);
+ cmd_buffer.BeginFrame();
// Clear the background with an animated color (black to red).
- ClearCmd(&cmd_buffer, GAPIInterface::COLOR | GAPIInterface::DEPTH, color,
- 1.f, 0);
+ cmd_buffer.Clear(GAPIInterface::COLOR | GAPIInterface::DEPTH,
+ color.red, color.green, color.blue, color.alpha,
+ 1.f, 0);
- args[0].value_uint32 = vertex_struct_id;
- cmd_buffer.AddCommand(command_buffer::SET_VERTEX_STRUCT, 1, args);
+ cmd_buffer.SetVertexStruct(vertex_struct_id);
+ cmd_buffer.SetEffect(effect_id);
+ cmd_buffer.SetParamDataImmediate(
+ sampler_param_id, sizeof(uint32), &sampler_id);
+ cmd_buffer.SetParamDataImmediate(
+ matrix_param_id, sizeof(m), &m);
+ cmd_buffer.Draw(GAPIInterface::TRIANGLE_STRIPS, 0, 2);
- args[0].value_uint32 = effect_id;
- cmd_buffer.AddCommand(command_buffer::SET_EFFECT, 1, args);
-
- args[0].value_uint32 = sampler_param_id;
- args[1].value_uint32 = sizeof(Uint32); // NOLINT
- args[2].value_uint32 = sampler_id;
- cmd_buffer.AddCommand(command_buffer::SET_PARAM_DATA_IMMEDIATE, 3, args);
-
- args[0].value_uint32 = matrix_param_id;
- args[1].value_uint32 = sizeof(m);
- unsigned int arg_count = CopyToArgs(args + 2, &m, sizeof(m));
- cmd_buffer.AddCommand(command_buffer::SET_PARAM_DATA_IMMEDIATE,
- 2 + arg_count, args);
-
- args[0].value_uint32 = GAPIInterface::TRIANGLE_STRIPS;
- args[1].value_uint32 = 0; // first
- args[2].value_uint32 = 2; // primitive count
- cmd_buffer.AddCommand(command_buffer::DRAW, 3, args);
-
- cmd_buffer.AddCommand(command_buffer::END_FRAME, 0 , NULL);
+ cmd_buffer.EndFrame();
cmd_buffer.Flush();
}
« no previous file with comments | « no previous file | command_buffer/client/cross/buffer_sync_proxy_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698