diff options
Diffstat (limited to 'o3d/command_buffer/samples/bubble/bubble_module.cc')
-rw-r--r-- | o3d/command_buffer/samples/bubble/bubble_module.cc | 199 |
1 files changed, 119 insertions, 80 deletions
diff --git a/o3d/command_buffer/samples/bubble/bubble_module.cc b/o3d/command_buffer/samples/bubble/bubble_module.cc index 42eae04..b24a3d1 100644 --- a/o3d/command_buffer/samples/bubble/bubble_module.cc +++ b/o3d/command_buffer/samples/bubble/bubble_module.cc @@ -38,7 +38,7 @@ #ifdef __native_demo__ #include <sys/nacl_syscalls.h> #else -#include "native_client/service_runtime/nrd_xfer_lib/nrd_all_modules.h" +#include "native_client/src/shared/imc/nacl_imc.h" #endif #include "command_buffer/common/cross/gapi_interface.h" #include "command_buffer/common/cross/rpc_imc.h" @@ -50,8 +50,7 @@ #include "command_buffer/samples/bubble/perlin_noise.h" #include "third_party/vectormath/files/vectormathlibrary/include/vectormath/scalar/cpp/vectormath_aos.h" // NOLINT -#include "native_client/intermodule_comm/nacl_imc.h" -#include "native_client/tools/npapi_runtime/nacl_npapi.h" +#include "native_client/src/shared/npruntime/nacl_npapi.h" // Cube map data is hard-coded in cubemap.cc as a byte array. // Format is 64x64xBRGA, D3D face ordering (+X, -X, +Y, -Y, +Z, -Z). @@ -68,7 +67,7 @@ const unsigned int kCubeMapFaceSize = kCubeMapWidth * kCubeMapHeight * 4; HELPER->Finish(); \ BufferSyncInterface::ParseError error = \ HELPER->interface()->GetParseError(); \ - if (error != BufferSyncInterface::PARSE_NO_ERROR) { \ + if (error != BufferSyncInterface::kParseNoError) { \ printf("CMD error %d at %s:%d\n", error, __FILE__, __LINE__); \ } \ } while (false) @@ -114,15 +113,8 @@ void ClearCmd(CommandBufferHelper *cmd_buffer, 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); + cmd_buffer->Clear(buffers, color.red, color.green, color.blue, color.alpha, + depth, stencil); CHECK_ERROR(cmd_buffer); } @@ -138,14 +130,7 @@ void SetViewportCmd(CommandBufferHelper *cmd_buffer, 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); CHECK_ERROR(cmd_buffer); } @@ -311,9 +296,10 @@ void MakeNoiseTexture(unsigned int width, // Gets current time in microseconds. uint64_t GetTimeUsec() { - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec * 1000000ULL + tv.tv_usec; + return 0ULL; +// struct timeval tv; +// gettimeofday(&tv, NULL); +// return tv.tv_sec * 1000000ULL + tv.tv_usec; } class BubbleDemo { @@ -483,16 +469,11 @@ void BubbleDemo::Initialize() { ClearCmd(helper_.get(), GAPIInterface::COLOR | GAPIInterface::DEPTH, color, 1.f, 0); - // 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]; - // Create geometry arrays and structures args[0].value_uint32 = vertex_buffer_id_; args[1].value_uint32 = kVertexBufferSize; // size args[2].value_uint32 = 0; // flags - helper_->AddCommand(CREATE_VERTEX_BUFFER, 3, args); + helper_->AddCommand(CreateVertexBuffer, 3, args); CHECK_ERROR(helper_); args[0].value_uint32 = vertex_buffer_id_; @@ -500,13 +481,13 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = kVertexBufferSize; // size args[3].value_uint32 = shm_id_; // shm args[4].value_uint32 = allocator_->GetOffset(vertices_); // offset in shm - helper_->AddCommand(SET_VERTEX_BUFFER_DATA, 5, args); + helper_->AddCommand(SetVertexBufferData, 5, args); CHECK_ERROR(helper_); args[0].value_uint32 = index_buffer_id_; args[1].value_uint32 = kIndexBufferSize; // size args[2].value_uint32 = index_buffer::INDEX_32BIT; // flags - helper_->AddCommand(CREATE_INDEX_BUFFER, 3, args); + helper_->AddCommand(CreateIndexBuffer, 3, args); CHECK_ERROR(helper_); args[0].value_uint32 = index_buffer_id_; @@ -514,12 +495,12 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = kIndexBufferSize; // size args[3].value_uint32 = shm_id_; // shm args[4].value_uint32 = allocator_->GetOffset(indices_); // offset in shm - helper_->AddCommand(SET_INDEX_BUFFER_DATA, 5, args); + helper_->AddCommand(SetIndexBufferData, 5, args); CHECK_ERROR(helper_); args[0].value_uint32 = vertex_struct_id_; args[1].value_uint32 = 3; // input count - helper_->AddCommand(CREATE_VERTEX_STRUCT, 2, args); + helper_->AddCommand(CreateVertexStruct, 2, args); CHECK_ERROR(helper_); // Set POSITION input stream @@ -532,7 +513,7 @@ void BubbleDemo::Initialize() { set_vertex_input_cmd::Type::MakeValue(vertex_struct::FLOAT3) | set_vertex_input_cmd::Semantic::MakeValue(vertex_struct::POSITION) | set_vertex_input_cmd::SemanticIndex::MakeValue(0); - helper_->AddCommand(SET_VERTEX_INPUT, 5, args); + helper_->AddCommand(SetVertexInput, 5, args); CHECK_ERROR(helper_); // Set NORMAL input stream @@ -543,7 +524,7 @@ void BubbleDemo::Initialize() { set_vertex_input_cmd::Type::MakeValue(vertex_struct::FLOAT3) | set_vertex_input_cmd::Semantic::MakeValue(vertex_struct::NORMAL) | set_vertex_input_cmd::SemanticIndex::MakeValue(0); - helper_->AddCommand(SET_VERTEX_INPUT, 5, args); + helper_->AddCommand(SetVertexInput, 5, args); CHECK_ERROR(helper_); // Set TEXCOORD0 input stream @@ -554,7 +535,7 @@ void BubbleDemo::Initialize() { 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); - helper_->AddCommand(SET_VERTEX_INPUT, 5, args); + helper_->AddCommand(SetVertexInput, 5, args); CHECK_ERROR(helper_); // Create a 2D texture. @@ -566,7 +547,7 @@ void BubbleDemo::Initialize() { create_texture_2d_cmd::Levels::MakeValue(0) | create_texture_2d_cmd::Format::MakeValue(texture::ARGB8) | create_texture_2d_cmd::Flags::MakeValue(0); - helper_->AddCommand(CREATE_TEXTURE_2D, 3, args); + helper_->AddCommand(CreateTexture2d, 3, args); CHECK_ERROR(helper_); args[0].value_uint32 = noise_texture_id_; @@ -585,16 +566,16 @@ void BubbleDemo::Initialize() { args[7].value_uint32 = kTexSize; // size args[8].value_uint32 = shm_id_; args[9].value_uint32 = allocator_->GetOffset(noise_texture_); - helper_->AddCommand(SET_TEXTURE_DATA, 10, args); + helper_->AddCommand(SetTextureData, 10, args); CHECK_ERROR(helper_); args[0].value_uint32 = noise_sampler_id_; - helper_->AddCommand(CREATE_SAMPLER, 1, args); + helper_->AddCommand(CreateSampler, 1, args); CHECK_ERROR(helper_); args[0].value_uint32 = noise_sampler_id_; args[1].value_uint32 = noise_texture_id_; - helper_->AddCommand(SET_SAMPLER_TEXTURE, 2, args); + helper_->AddCommand(SetSamplerTexture, 2, args); CHECK_ERROR(helper_); args[0].value_uint32 = noise_sampler_id_; @@ -606,7 +587,7 @@ void BubbleDemo::Initialize() { set_sampler_states::MinFilter::MakeValue(sampler::LINEAR) | set_sampler_states::MipFilter::MakeValue(sampler::NONE) | set_sampler_states::MaxAnisotropy::MakeValue(1); - helper_->AddCommand(SET_SAMPLER_STATES, 2, args); + helper_->AddCommand(SetSamplerStates, 2, args); CHECK_ERROR(helper_); // Create a 2D texture. @@ -618,7 +599,7 @@ void BubbleDemo::Initialize() { create_texture_2d_cmd::Levels::MakeValue(0) | create_texture_2d_cmd::Format::MakeValue(texture::ARGB8) | create_texture_2d_cmd::Flags::MakeValue(0); - helper_->AddCommand(CREATE_TEXTURE_2D, 3, args); + helper_->AddCommand(CreateTexture2d, 3, args); CHECK_ERROR(helper_); args[0].value_uint32 = iridescence_texture_id_; @@ -637,16 +618,16 @@ void BubbleDemo::Initialize() { args[7].value_uint32 = kTexSize; // size args[8].value_uint32 = shm_id_; args[9].value_uint32 = allocator_->GetOffset(iridescence_texture_); - helper_->AddCommand(SET_TEXTURE_DATA, 10, args); + helper_->AddCommand(SetTextureData, 10, args); CHECK_ERROR(helper_); args[0].value_uint32 = iridescence_sampler_id_; - helper_->AddCommand(CREATE_SAMPLER, 1, args); + helper_->AddCommand(CreateSampler, 1, args); CHECK_ERROR(helper_); args[0].value_uint32 = iridescence_sampler_id_; args[1].value_uint32 = iridescence_texture_id_; - helper_->AddCommand(SET_SAMPLER_TEXTURE, 2, args); + helper_->AddCommand(SetSamplerTexture, 2, args); CHECK_ERROR(helper_); args[0].value_uint32 = iridescence_sampler_id_; @@ -658,7 +639,7 @@ void BubbleDemo::Initialize() { set_sampler_states::MinFilter::MakeValue(sampler::LINEAR) | set_sampler_states::MipFilter::MakeValue(sampler::NONE) | set_sampler_states::MaxAnisotropy::MakeValue(1); - helper_->AddCommand(SET_SAMPLER_STATES, 2, args); + helper_->AddCommand(SetSamplerStates, 2, args); CHECK_ERROR(helper_); // Create a Cubemap texture. @@ -669,7 +650,7 @@ void BubbleDemo::Initialize() { create_texture_cube_cmd::Levels::MakeValue(0) | create_texture_cube_cmd::Format::MakeValue(texture::ARGB8) | create_texture_cube_cmd::Flags::MakeValue(0); - helper_->AddCommand(CREATE_TEXTURE_CUBE, 3, args); + helper_->AddCommand(CreateTextureCube, 3, args); CHECK_ERROR(helper_); for (unsigned int face = 0; face < 6; ++face) { @@ -693,18 +674,18 @@ void BubbleDemo::Initialize() { args[7].value_uint32 = kCubeMapFaceSize; // size args[8].value_uint32 = shm_id_; args[9].value_uint32 = allocator_->GetOffset(data); - helper_->AddCommand(SET_TEXTURE_DATA, 10, args); + helper_->AddCommand(SetTextureData, 10, args); CHECK_ERROR(helper_); allocator_->FreePendingToken(data, helper_->InsertToken()); } args[0].value_uint32 = cubemap_sampler_id_; - helper_->AddCommand(CREATE_SAMPLER, 1, args); + helper_->AddCommand(CreateSampler, 1, args); CHECK_ERROR(helper_); args[0].value_uint32 = cubemap_sampler_id_; args[1].value_uint32 = cubemap_id_; - helper_->AddCommand(SET_SAMPLER_TEXTURE, 2, args); + helper_->AddCommand(SetSamplerTexture, 2, args); CHECK_ERROR(helper_); args[0].value_uint32 = cubemap_sampler_id_; @@ -716,7 +697,7 @@ void BubbleDemo::Initialize() { set_sampler_states::MinFilter::MakeValue(sampler::LINEAR) | set_sampler_states::MipFilter::MakeValue(sampler::NONE) | set_sampler_states::MaxAnisotropy::MakeValue(1); - helper_->AddCommand(SET_SAMPLER_STATES, 2, args); + helper_->AddCommand(SetSamplerStates, 2, args); CHECK_ERROR(helper_); // Create the effect, and parameters. @@ -726,7 +707,7 @@ void BubbleDemo::Initialize() { args[1].value_uint32 = sizeof(effect_data); // size args[2].value_uint32 = shm_id_; // shm args[3].value_uint32 = allocator_->GetOffset(data); // offset in shm - helper_->AddCommand(CREATE_EFFECT, 4, args); + helper_->AddCommand(CreateEffect, 4, args); CHECK_ERROR(helper_); allocator_->FreePendingToken(data, helper_->InsertToken()); @@ -737,7 +718,7 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = sizeof(param_name); unsigned int arg_count = CopyToArgs(args + 3, param_name, sizeof(param_name)); - helper_->AddCommand(CREATE_PARAM_BY_NAME_IMMEDIATE, 3 + arg_count, args); + helper_->AddCommand(CreateParamByNameImmediate, 3 + arg_count, args); CHECK_ERROR(helper_); } @@ -748,7 +729,7 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = sizeof(param_name); unsigned int arg_count = CopyToArgs(args + 3, param_name, sizeof(param_name)); - helper_->AddCommand(CREATE_PARAM_BY_NAME_IMMEDIATE, 3 + arg_count, args); + helper_->AddCommand(CreateParamByNameImmediate, 3 + arg_count, args); CHECK_ERROR(helper_); } @@ -759,7 +740,7 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = sizeof(param_name); unsigned int arg_count = CopyToArgs(args + 3, param_name, sizeof(param_name)); - helper_->AddCommand(CREATE_PARAM_BY_NAME_IMMEDIATE, 3 + arg_count, args); + helper_->AddCommand(CreateParamByNameImmediate, 3 + arg_count, args); CHECK_ERROR(helper_); } @@ -770,7 +751,7 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = sizeof(param_name); unsigned int arg_count = CopyToArgs(args + 3, param_name, sizeof(param_name)); - helper_->AddCommand(CREATE_PARAM_BY_NAME_IMMEDIATE, 3 + arg_count, args); + helper_->AddCommand(CreateParamByNameImmediate, 3 + arg_count, args); CHECK_ERROR(helper_); } @@ -781,7 +762,7 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = sizeof(param_name); unsigned int arg_count = CopyToArgs(args + 3, param_name, sizeof(param_name)); - helper_->AddCommand(CREATE_PARAM_BY_NAME_IMMEDIATE, 3 + arg_count, args); + helper_->AddCommand(CreateParamByNameImmediate, 3 + arg_count, args); CHECK_ERROR(helper_); } @@ -792,7 +773,7 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = sizeof(param_name); unsigned int arg_count = CopyToArgs(args + 3, param_name, sizeof(param_name)); - helper_->AddCommand(CREATE_PARAM_BY_NAME_IMMEDIATE, 3 + arg_count, args); + helper_->AddCommand(CreateParamByNameImmediate, 3 + arg_count, args); CHECK_ERROR(helper_); } @@ -803,7 +784,7 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = sizeof(param_name); unsigned int arg_count = CopyToArgs(args + 3, param_name, sizeof(param_name)); - helper_->AddCommand(CREATE_PARAM_BY_NAME_IMMEDIATE, 3 + arg_count, args); + helper_->AddCommand(CreateParamByNameImmediate, 3 + arg_count, args); CHECK_ERROR(helper_); } @@ -814,7 +795,7 @@ void BubbleDemo::Initialize() { args[2].value_uint32 = sizeof(param_name); unsigned int arg_count = CopyToArgs(args + 3, param_name, sizeof(param_name)); - helper_->AddCommand(CREATE_PARAM_BY_NAME_IMMEDIATE, 3 + arg_count, args); + helper_->AddCommand(CreateParamByNameImmediate, 3 + arg_count, args); CHECK_ERROR(helper_); } @@ -822,19 +803,19 @@ void BubbleDemo::Initialize() { args[0].value_uint32 = noise_sampler_param_id_; args[1].value_uint32 = sizeof(Uint32); // NOLINT args[2].value_uint32 = noise_sampler_id_; - helper_->AddCommand(SET_PARAM_DATA_IMMEDIATE, 3, args); + helper_->AddCommand(SetParamDataImmediate, 3, args); CHECK_ERROR(helper_); args[0].value_uint32 = iridescence_sampler_param_id_; args[1].value_uint32 = sizeof(Uint32); // NOLINT args[2].value_uint32 = iridescence_sampler_id_; - helper_->AddCommand(SET_PARAM_DATA_IMMEDIATE, 3, args); + helper_->AddCommand(SetParamDataImmediate, 3, args); CHECK_ERROR(helper_); args[0].value_uint32 = cubemap_sampler_param_id_; args[1].value_uint32 = sizeof(Uint32); // NOLINT args[2].value_uint32 = cubemap_sampler_id_; - helper_->AddCommand(SET_PARAM_DATA_IMMEDIATE, 3, args); + helper_->AddCommand(SetParamDataImmediate, 3, args); CHECK_ERROR(helper_); // Create our random bubbles. @@ -900,35 +881,35 @@ void BubbleDemo::DrawBubble(const math::Matrix4& view, // 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). + // 20 is the largest command we use (SetParamDataImmediate for matrices). CommandBufferEntry args[20]; args[0].value_uint32 = vertex_struct_id_; - helper_->AddCommand(SET_VERTEX_STRUCT, 1, args); + helper_->AddCommand(SetVertexStruct, 1, args); CHECK_ERROR(helper_); args[0].value_uint32 = mvp_param_id_; args[1].value_uint32 = sizeof(mvp); unsigned int arg_count = CopyToArgs(args + 2, &mvp, sizeof(mvp)); - helper_->AddCommand(SET_PARAM_DATA_IMMEDIATE, 2 + arg_count, args); + helper_->AddCommand(SetParamDataImmediate, 2 + arg_count, args); CHECK_ERROR(helper_); args[0].value_uint32 = world_param_id_; args[1].value_uint32 = sizeof(model); arg_count = CopyToArgs(args + 2, &model, sizeof(model)); - helper_->AddCommand(SET_PARAM_DATA_IMMEDIATE, 2 + arg_count, args); + helper_->AddCommand(SetParamDataImmediate, 2 + arg_count, args); CHECK_ERROR(helper_); args[0].value_uint32 = worldIT_param_id_; args[1].value_uint32 = sizeof(modelIT); arg_count = CopyToArgs(args + 2, &modelIT, sizeof(modelIT)); - helper_->AddCommand(SET_PARAM_DATA_IMMEDIATE, 2 + arg_count, args); + helper_->AddCommand(SetParamDataImmediate, 2 + arg_count, args); CHECK_ERROR(helper_); args[0].value_uint32 = eye_param_id_; args[1].value_uint32 = sizeof(eye); arg_count = CopyToArgs(args + 2, &eye, sizeof(eye)); - helper_->AddCommand(SET_PARAM_DATA_IMMEDIATE, 2 + arg_count, args); + helper_->AddCommand(SetParamDataImmediate, 2 + arg_count, args); CHECK_ERROR(helper_); args[0].value_uint32 = @@ -938,11 +919,11 @@ void BubbleDemo::DrawBubble(const math::Matrix4& view, set_blending::ColorEq::MakeValue(GAPIInterface::BLEND_EQ_ADD) | set_blending::SeparateAlpha::MakeValue(0) | set_blending::Enable::MakeValue(1); - helper_->AddCommand(SET_BLENDING, 1, args); + helper_->AddCommand(SetBlending, 1, args); CHECK_ERROR(helper_); args[0].value_uint32 = effect_id_; - helper_->AddCommand(SET_EFFECT, 1, args); + helper_->AddCommand(SetEffect, 1, args); CHECK_ERROR(helper_); // Draw back faces first. @@ -950,7 +931,7 @@ void BubbleDemo::DrawBubble(const math::Matrix4& view, set_polygon_raster::FillMode::MakeValue( GAPIInterface::POLYGON_MODE_FILL) | set_polygon_raster::CullMode::MakeValue(GAPIInterface::CULL_CCW); - helper_->AddCommand(SET_POLYGON_RASTER, 1, args); + helper_->AddCommand(SetPolygonRaster, 1, args); CHECK_ERROR(helper_); args[0].value_uint32 = thickness_param_id_; @@ -959,7 +940,7 @@ void BubbleDemo::DrawBubble(const math::Matrix4& view, args[3].value_float = bubble.base_thickness; args[4].value_float = bubble.noise_ratio; args[5].value_float = .5f; // back face attenuation - helper_->AddCommand(SET_PARAM_DATA_IMMEDIATE, 6, args); + helper_->AddCommand(SetParamDataImmediate, 6, args); CHECK_ERROR(helper_); args[0].value_uint32 = GAPIInterface::TRIANGLES; @@ -968,7 +949,7 @@ void BubbleDemo::DrawBubble(const math::Matrix4& view, args[3].value_uint32 = kIndexCount/3; // primitive count args[4].value_uint32 = 0; // min index args[5].value_uint32 = kVertexCount-1; // max index - helper_->AddCommand(DRAW_INDEXED, 6, args); + helper_->AddCommand(DrawIndexed, 6, args); CHECK_ERROR(helper_); // Then front faces. @@ -976,7 +957,7 @@ void BubbleDemo::DrawBubble(const math::Matrix4& view, set_polygon_raster::FillMode::MakeValue( GAPIInterface::POLYGON_MODE_FILL) | set_polygon_raster::CullMode::MakeValue(GAPIInterface::CULL_CW); - helper_->AddCommand(SET_POLYGON_RASTER, 1, args); + helper_->AddCommand(SetPolygonRaster, 1, args); CHECK_ERROR(helper_); args[0].value_uint32 = thickness_param_id_; @@ -985,7 +966,7 @@ void BubbleDemo::DrawBubble(const math::Matrix4& view, args[3].value_float = bubble.base_thickness; args[4].value_float = bubble.noise_ratio; args[5].value_float = 1.f; - helper_->AddCommand(SET_PARAM_DATA_IMMEDIATE, 6, args); + helper_->AddCommand(SetParamDataImmediate, 6, args); CHECK_ERROR(helper_); args[0].value_uint32 = GAPIInterface::TRIANGLES; @@ -994,7 +975,7 @@ void BubbleDemo::DrawBubble(const math::Matrix4& view, args[3].value_uint32 = kIndexCount/3; // primitive count args[4].value_uint32 = 0; // min index args[5].value_uint32 = kVertexCount-1; // max index - helper_->AddCommand(DRAW_INDEXED, 6, args); + helper_->AddCommand(DrawIndexed, 6, args); CHECK_ERROR(helper_); } @@ -1012,7 +993,7 @@ void BubbleDemo::Render() { math::CreatePerspectiveMatrix(kPi / 4.f, 1.f, .1f, 10000.f); math::Matrix4 view = math::Matrix4::lookAt(eye, target, up); - helper_->AddCommand(BEGIN_FRAME, 0 , NULL); + helper_->AddCommand(BeginFrame, 0 , NULL); CHECK_ERROR(helper_); RGBA color = {0.2f, 0.2f, 0.2f, 1.f}; ClearCmd(helper_.get(), GAPIInterface::COLOR | GAPIInterface::DEPTH, color, @@ -1026,7 +1007,7 @@ void BubbleDemo::Render() { DrawBubble(view, proj, bubble, time_ * 2.f * kPi * bubble.rotation_speed); } - helper_->AddCommand(END_FRAME, 0 , NULL); + helper_->AddCommand(EndFrame, 0 , NULL); CHECK_ERROR(helper_); helper_->Flush(); } @@ -1034,6 +1015,7 @@ void BubbleDemo::Render() { } // namespace command_buffer } // namespace o3d +#if 0 // Scriptable object for the plug-in, provides the glue with the browser. // Creates a BubbleDemo object and delegates calls to it. class Plugin : public NPObject { @@ -1264,3 +1246,60 @@ int main(int argc, char **argv) { NaClNP_MainLoop(0); return 0; } +#endif + +nacl::HtpHandle InitConnection(int argc, char **argv) { + nacl::Handle handle = nacl::kInvalidHandle; +#ifndef __native_client__ + NaClNrdAllModulesInit(); + + static nacl::SocketAddress g_address = { "command-buffer" }; + static nacl::SocketAddress g_local_address = { "cb-client" }; + + nacl::Handle sockets[2]; + nacl::SocketPair(sockets); + + nacl::MessageHeader msg; + msg.iov = NULL; + msg.iov_length = 0; + msg.handles = &sockets[1]; + msg.handle_count = 1; + nacl::Handle local_socket = nacl::BoundSocket(&g_local_address); + nacl::SendDatagramTo(local_socket, &msg, 0, &g_address); + nacl::Close(local_socket); + nacl::Close(sockets[1]); + handle = sockets[0]; +#else + if (argc < 3 || strcmp(argv[1], "-fd") != 0) { + fprintf(stderr, "Usage: %s -fd file_descriptor\n", argv[0]); + return nacl::kInvalidHtpHandle; + } + int fd = atoi(argv[2]); + handle = imc_connect(fd); + if (handle < 0) { + fprintf(stderr, "Could not connect to file descriptor %d.\n" + "Did you use the -a and -X options to sel_ldr ?\n", fd); + return nacl::kInvalidHtpHandle; + } +#endif + return nacl::CreateImcDesc(handle); +} + +void CloseConnection(nacl::HtpHandle handle) { + nacl::Close(handle); +#ifndef __native_client__ + NaClNrdAllModulesFini(); +#endif +} + +int main(int argc, char **argv) { + nacl::HtpHandle htp_handle = InitConnection(argc, argv); + if (htp_handle == nacl::kInvalidHtpHandle) { + return 1; + } + + o3d::command_buffer::BubbleDemo(htp_handle); + CloseConnection(htp_handle); + return 0; +} + |