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

Side by Side Diff: core/cross/command_buffer/render_surface_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/primitive_cb.cc ('k') | core/cross/command_buffer/renderer_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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 renderer_(renderer) { 52 renderer_(renderer) {
53 DCHECK_GT(width, 0); 53 DCHECK_GT(width, 0);
54 DCHECK_GT(height, 0); 54 DCHECK_GT(height, 0);
55 DCHECK_GT(mip_level, -1); 55 DCHECK_GT(mip_level, -1);
56 DCHECK(texture); 56 DCHECK(texture);
57 DCHECK(renderer); 57 DCHECK(renderer);
58 58
59 ResourceID id = renderer_->render_surface_ids().AllocateID(); 59 ResourceID id = renderer_->render_surface_ids().AllocateID();
60 resource_id_ = id; 60 resource_id_ = id;
61 CommandBufferHelper *helper = renderer_->helper(); 61 CommandBufferHelper *helper = renderer_->helper();
62 CommandBufferEntry args[4]; 62 helper->CreateRenderSurface(
63 args[0].value_uint32 = id; 63 id,
64 args[1].value_uint32 = 64 reinterpret_cast<uint32>(texture->GetTextureHandle()),
65 create_render_surface_cmd::Width::MakeValue(width) | 65 width, height, mip_level, side);
66 create_render_surface_cmd::Height::MakeValue(height);
67 args[2].value_uint32 =
68 create_render_surface_cmd::Levels::MakeValue(mip_level) |
69 create_render_surface_cmd::Side::MakeValue(side);
70 args[3].value_uint32 =
71 reinterpret_cast<ResourceID>(texture->GetTextureHandle());
72 helper->AddCommand(command_buffer::CREATE_RENDER_SURFACE, 4, args);
73 } 66 }
74 67
75 RenderSurfaceCB::~RenderSurfaceCB() { 68 RenderSurfaceCB::~RenderSurfaceCB() {
76 Destroy(); 69 Destroy();
77 } 70 }
78 71
79 void RenderSurfaceCB::Destroy() { 72 void RenderSurfaceCB::Destroy() {
80 // This should never be called during rendering. 73 // This should never be called during rendering.
81 if (resource_id_ != command_buffer::kInvalidResource) { 74 if (resource_id_ != command_buffer::kInvalidResource) {
82 CommandBufferHelper *helper = renderer_->helper(); 75 CommandBufferHelper *helper = renderer_->helper();
83 CommandBufferEntry args[1]; 76 helper->DestroyRenderSurface(resource_id_);
84 args[0].value_uint32 = resource_id_;
85 helper->AddCommand(command_buffer::DESTROY_RENDER_SURFACE, 1, args);
86 renderer_->render_surface_ids().FreeID(resource_id_); 77 renderer_->render_surface_ids().FreeID(resource_id_);
87 resource_id_ = command_buffer::kInvalidResource; 78 resource_id_ = command_buffer::kInvalidResource;
88 } 79 }
89 } 80 }
90 81
91 RenderDepthStencilSurfaceCB::RenderDepthStencilSurfaceCB( 82 RenderDepthStencilSurfaceCB::RenderDepthStencilSurfaceCB(
92 ServiceLocator *service_locator, 83 ServiceLocator *service_locator,
93 int width, 84 int width,
94 int height, 85 int height,
95 RendererCB *renderer) 86 RendererCB *renderer)
96 : RenderDepthStencilSurface(service_locator, width, height), 87 : RenderDepthStencilSurface(service_locator, width, height),
97 resource_id_(command_buffer::kInvalidResource), 88 resource_id_(command_buffer::kInvalidResource),
98 renderer_(renderer) { 89 renderer_(renderer) {
99 DCHECK_GT(width, 0); 90 DCHECK_GT(width, 0);
100 DCHECK_GT(height, 0); 91 DCHECK_GT(height, 0);
101 DCHECK(renderer); 92 DCHECK(renderer);
102 ResourceID id = renderer_->depth_surface_ids().AllocateID(); 93 ResourceID id = renderer_->depth_surface_ids().AllocateID();
103 resource_id_ = id; 94 resource_id_ = id;
104 CommandBufferHelper *helper = renderer_->helper(); 95 CommandBufferHelper *helper = renderer_->helper();
105 CommandBufferEntry args[2]; 96 helper->CreateDepthSurface(id, width, height);
106 args[0].value_uint32 = id;
107 args[1].value_uint32 =
108 create_render_surface_cmd::Width::MakeValue(width) |
109 create_render_surface_cmd::Height::MakeValue(height);
110 helper->AddCommand(command_buffer::CREATE_DEPTH_SURFACE, 2, args);
111 } 97 }
112 98
113 void RenderDepthStencilSurfaceCB::Destroy() { 99 void RenderDepthStencilSurfaceCB::Destroy() {
114 if (resource_id_ != command_buffer::kInvalidResource) { 100 if (resource_id_ != command_buffer::kInvalidResource) {
115 CommandBufferHelper *helper = renderer_->helper(); 101 CommandBufferHelper *helper = renderer_->helper();
116 CommandBufferEntry args[1]; 102 helper->DestroyDepthSurface(resource_id_);
117 args[0].value_uint32 = resource_id_;
118 helper->AddCommand(command_buffer::DESTROY_DEPTH_SURFACE, 1, args);
119 renderer_->depth_surface_ids().FreeID(resource_id_); 103 renderer_->depth_surface_ids().FreeID(resource_id_);
120 resource_id_ = command_buffer::kInvalidResource; 104 resource_id_ = command_buffer::kInvalidResource;
121 } 105 }
122 } 106 }
123 107
124 } // namespace o3d 108 } // namespace o3d
125 109
OLDNEW
« no previous file with comments | « core/cross/command_buffer/primitive_cb.cc ('k') | core/cross/command_buffer/renderer_cb.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698