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

Side by Side Diff: core/cross/command_buffer/effect_cb.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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « core/cross/command_buffer/buffer_cb.cc ('k') | core/cross/command_buffer/param_cache_cb.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2009, Google Inc. 2 * Copyright 2009, Google Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 memcpy(buffer_data, vp_main.data(), vp_main.size()); 85 memcpy(buffer_data, vp_main.data(), vp_main.size());
86 buffer_data[vp_main.size()] = 0; 86 buffer_data[vp_main.size()] = 0;
87 memcpy(buffer_data + vp_main.size() + 1, fp_main.data(), fp_main.size()); 87 memcpy(buffer_data + vp_main.size() + 1, fp_main.data(), fp_main.size());
88 buffer_data[vp_main.size() + 1 + fp_main.size()] = 0; 88 buffer_data[vp_main.size() + 1 + fp_main.size()] = 0;
89 memcpy(buffer_data + vp_main.size() + 1 + fp_main.size() + 1, 89 memcpy(buffer_data + vp_main.size() + 1 + fp_main.size() + 1,
90 source.data(), source.size()); 90 source.data(), source.size());
91 91
92 ResourceID resource_id = renderer_->effect_ids().AllocateID(); 92 ResourceID resource_id = renderer_->effect_ids().AllocateID();
93 93
94 CommandBufferHelper *helper = renderer_->helper(); 94 CommandBufferHelper *helper = renderer_->helper();
95 CommandBufferEntry args[4]; 95 helper->CreateEffect(
96 args[0].value_uint32 = resource_id; 96 resource_id, source_size,
97 args[1].value_uint32 = source_size; 97 renderer_->transfer_shm_id(),
98 args[2].value_uint32 = renderer_->transfer_shm_id(); 98 renderer_->allocator()->GetOffset(buffer_data));
99 args[3].value_uint32 = renderer_->allocator()->GetOffset(buffer_data);
100 helper->AddCommand(command_buffer::CREATE_EFFECT, 4, args);
101 renderer_->allocator()->FreePendingToken(buffer_data, helper->InsertToken()); 99 renderer_->allocator()->FreePendingToken(buffer_data, helper->InsertToken());
102 100
103 // NOTE: we're calling Finish to check the command result, to see if 101 // NOTE: we're calling Finish to check the command result, to see if
104 // the effect has succesfully compiled. 102 // the effect has succesfully compiled.
105 helper->Finish(); 103 helper->Finish();
106 if (renderer_->sync_interface()->GetParseError() != 104 if (renderer_->sync_interface()->GetParseError() !=
107 BufferSyncInterface::PARSE_NO_ERROR) { 105 BufferSyncInterface::kParseNoError) {
108 O3D_ERROR(service_locator()) << "Effect failed to compile."; 106 O3D_ERROR(service_locator()) << "Effect failed to compile.";
109 renderer_->effect_ids().FreeID(resource_id); 107 renderer_->effect_ids().FreeID(resource_id);
110 return false; 108 return false;
111 } 109 }
112 resource_id_ = resource_id; 110 resource_id_ = resource_id;
113 EffectHelper effect_helper(helper, renderer_->allocator(), 111 EffectHelper effect_helper(helper, renderer_->allocator(),
114 renderer_->transfer_shm_id(), 112 renderer_->transfer_shm_id(),
115 &renderer_->effect_param_ids()); 113 &renderer_->effect_param_ids());
116 if (!effect_helper.CreateEffectParameters(resource_id, &param_descs_)) { 114 if (!effect_helper.CreateEffectParameters(resource_id, &param_descs_)) {
117 O3D_ERROR(service_locator()) << "Failed to create effect parameters."; 115 O3D_ERROR(service_locator()) << "Failed to create effect parameters.";
(...skipping 15 matching lines...) Expand all
133 } 131 }
134 set_source(source); 132 set_source(source);
135 return true; 133 return true;
136 } 134 }
137 135
138 void EffectCB::Destroy() { 136 void EffectCB::Destroy() {
139 set_source(""); 137 set_source("");
140 ++generation_; 138 ++generation_;
141 if (resource_id_ != command_buffer::kInvalidResource) { 139 if (resource_id_ != command_buffer::kInvalidResource) {
142 CommandBufferHelper *helper = renderer_->helper(); 140 CommandBufferHelper *helper = renderer_->helper();
143 CommandBufferEntry args[1]; 141 helper->DestroyEffect(resource_id_);
144 args[0].value_uint32 = resource_id_;
145 helper->AddCommand(command_buffer::DESTROY_EFFECT, 1, args);
146 renderer_->effect_ids().FreeID(resource_id_); 142 renderer_->effect_ids().FreeID(resource_id_);
147 resource_id_ = command_buffer::kInvalidResource; 143 resource_id_ = command_buffer::kInvalidResource;
148 } 144 }
149 if (param_descs_.size() > 0) { 145 if (param_descs_.size() > 0) {
150 EffectHelper effect_helper(renderer_->helper(), renderer_->allocator(), 146 EffectHelper effect_helper(renderer_->helper(), renderer_->allocator(),
151 renderer_->transfer_shm_id(), 147 renderer_->transfer_shm_id(),
152 &renderer_->effect_param_ids()); 148 &renderer_->effect_param_ids());
153 effect_helper.DestroyEffectParameters(param_descs_); 149 effect_helper.DestroyEffectParameters(param_descs_);
154 param_descs_.clear(); 150 param_descs_.clear();
155 } 151 }
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 if (CBSemanticToO3DSemantic(stream_descs_[i].semantic, 251 if (CBSemanticToO3DSemantic(stream_descs_[i].semantic,
256 stream_descs_[i].semantic_index, 252 stream_descs_[i].semantic_index,
257 &semantic, 253 &semantic,
258 &semantic_index)) { 254 &semantic_index)) {
259 array->push_back(EffectStreamInfo(semantic, semantic_index)); 255 array->push_back(EffectStreamInfo(semantic, semantic_index));
260 } 256 }
261 } 257 }
262 } 258 }
263 259
264 } // namespace o3d 260 } // namespace o3d
OLDNEW
« no previous file with comments | « core/cross/command_buffer/buffer_cb.cc ('k') | core/cross/command_buffer/param_cache_cb.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698