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

Unified Diff: cc/delegating_renderer.cc

Issue 11777025: cc: Implement DelegatingRender::drawFrame() method. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: for-landing Created 7 years, 11 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 | « cc/delegating_renderer.h ('k') | cc/delegating_renderer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/delegating_renderer.cc
diff --git a/cc/delegating_renderer.cc b/cc/delegating_renderer.cc
index da4bee48b2633e0f08dd01b000e6a8eab5fdef2d..1be86eab6e869039d669bc9ca73cb63501f6750d 100644
--- a/cc/delegating_renderer.cc
+++ b/cc/delegating_renderer.cc
@@ -12,6 +12,7 @@
#include "base/string_split.h"
#include "base/string_util.h"
#include "cc/checkerboard_draw_quad.h"
+#include "cc/compositor_frame.h"
#include "cc/compositor_frame_ack.h"
#include "cc/debug_border_draw_quad.h"
#include "cc/render_pass.h"
@@ -28,17 +29,22 @@ using WebKit::WebGraphicsContext3D;
namespace cc {
scoped_ptr<DelegatingRenderer> DelegatingRenderer::Create(
- RendererClient* client, ResourceProvider* resource_provider) {
+ RendererClient* client,
+ OutputSurface* output_surface,
+ ResourceProvider* resource_provider) {
scoped_ptr<DelegatingRenderer> renderer(
- new DelegatingRenderer(client, resource_provider));
+ new DelegatingRenderer(client, output_surface, resource_provider));
if (!renderer->Initialize())
return scoped_ptr<DelegatingRenderer>();
return renderer.Pass();
}
DelegatingRenderer::DelegatingRenderer(
- RendererClient* client, ResourceProvider* resource_provider)
+ RendererClient* client,
+ OutputSurface* output_surface,
+ ResourceProvider* resource_provider)
: Renderer(client),
+ output_surface_(output_surface),
resource_provider_(resource_provider),
visible_(true) {
DCHECK(resource_provider_);
@@ -128,7 +134,24 @@ const RendererCapabilities& DelegatingRenderer::capabilities() const {
void DelegatingRenderer::drawFrame(
RenderPassList& render_passes_in_draw_order) {
TRACE_EVENT0("cc", "DelegatingRenderer::drawFrame");
- NOTIMPLEMENTED();
+
+ CompositorFrame out_frame;
+ out_frame.metadata = m_client->makeCompositorFrameMetadata();
+
+ out_frame.delegated_frame_data = make_scoped_ptr(new DelegatedFrameData);
+ DelegatedFrameData& out_data = *out_frame.delegated_frame_data;
+
+ out_data.size = viewportSize();
+ out_data.render_pass_list.swap(render_passes_in_draw_order);
+
+ ResourceProvider::ResourceIdArray resources;
+ for (size_t i = 0; i < out_data.render_pass_list.size(); ++i) {
+ for (size_t j = 0; j < out_data.render_pass_list[i]->quad_list.size(); ++j)
+ out_data.render_pass_list[i]->quad_list[j]->AppendResources(&resources);
+ }
+ resource_provider_->prepareSendToParent(resources, &out_data.resource_list);
+
+ output_surface_->SendFrameToParentCompositor(&out_frame);
}
bool DelegatingRenderer::swapBuffers() {
« no previous file with comments | « cc/delegating_renderer.h ('k') | cc/delegating_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698