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

Side by Side Diff: cc/output/direct_renderer.cc

Issue 558083002: [cc] Add nearest neighbor filtering for TextureLayer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add nearest_neighbor field to TextureMailbox. Created 6 years, 1 month 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/output/direct_renderer.h" 5 #include "cc/output/direct_renderer.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
11 #include "base/containers/scoped_ptr_hash_map.h" 11 #include "base/containers/scoped_ptr_hash_map.h"
12 #include "base/debug/trace_event.h" 12 #include "base/debug/trace_event.h"
13 #include "base/metrics/histogram.h" 13 #include "base/metrics/histogram.h"
14 #include "cc/base/math_util.h" 14 #include "cc/base/math_util.h"
15 #include "cc/output/copy_output_request.h" 15 #include "cc/output/copy_output_request.h"
16 #include "cc/quads/draw_quad.h" 16 #include "cc/quads/draw_quad.h"
17 #include "cc/quads/texture_draw_quad.h"
17 #include "ui/gfx/geometry/rect_conversions.h" 18 #include "ui/gfx/geometry/rect_conversions.h"
18 #include "ui/gfx/transform.h" 19 #include "ui/gfx/transform.h"
19 20
20 static gfx::Transform OrthoProjectionMatrix(float left, 21 static gfx::Transform OrthoProjectionMatrix(float left,
21 float right, 22 float right,
22 float bottom, 23 float bottom,
23 float top) { 24 float top) {
24 // Use the standard formula to map the clipping frustum to the cube from 25 // Use the standard formula to map the clipping frustum to the cube from
25 // [-1, -1, -1] to [1, 1, 1]. 26 // [-1, -1, -1] to [1, 1, 1].
26 float delta_x = right - left; 27 float delta_x = right - left;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 127
127 DirectRenderer::DirectRenderer(RendererClient* client, 128 DirectRenderer::DirectRenderer(RendererClient* client,
128 const LayerTreeSettings* settings, 129 const LayerTreeSettings* settings,
129 OutputSurface* output_surface, 130 OutputSurface* output_surface,
130 ResourceProvider* resource_provider) 131 ResourceProvider* resource_provider)
131 : Renderer(client, settings), 132 : Renderer(client, settings),
132 output_surface_(output_surface), 133 output_surface_(output_surface),
133 resource_provider_(resource_provider), 134 resource_provider_(resource_provider),
134 overlay_processor_( 135 overlay_processor_(
135 new OverlayProcessor(output_surface, resource_provider)) { 136 new OverlayProcessor(output_surface, resource_provider)) {
137 //printf("DirectRenderer %p\n", this);
136 overlay_processor_->Initialize(); 138 overlay_processor_->Initialize();
137 } 139 }
138 140
139 DirectRenderer::~DirectRenderer() {} 141 DirectRenderer::~DirectRenderer() {}
140 142
141 void DirectRenderer::SetEnlargePassTextureAmountForTesting( 143 void DirectRenderer::SetEnlargePassTextureAmountForTesting(
142 const gfx::Vector2d& amount) { 144 const gfx::Vector2d& amount) {
143 enlarge_pass_texture_amount_ = amount; 145 enlarge_pass_texture_amount_ = amount;
144 } 146 }
145 147
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 texture.Pass()); 192 texture.Pass());
191 } 193 }
192 } 194 }
193 } 195 }
194 196
195 void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order, 197 void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order,
196 float device_scale_factor, 198 float device_scale_factor,
197 const gfx::Rect& device_viewport_rect, 199 const gfx::Rect& device_viewport_rect,
198 const gfx::Rect& device_clip_rect, 200 const gfx::Rect& device_clip_rect,
199 bool disable_picture_quad_image_filtering) { 201 bool disable_picture_quad_image_filtering) {
202 /*for (auto* render_pass : *render_passes_in_draw_order) {
203 for (auto& quad : render_pass->quad_list) {
204 if (quad.material == DrawQuad::TEXTURE_CONTENT) {
205 TextureDrawQuad& tq = static_cast<TextureDrawQuad&>(quad);
206 printf("DirectRenderer::DrawFrame texture quad %d %d\n", tq.nearest_neig hbor, tq.resource_id);
207 }
208 }
209 }*/
200 TRACE_EVENT0("cc", "DirectRenderer::DrawFrame"); 210 TRACE_EVENT0("cc", "DirectRenderer::DrawFrame");
201 UMA_HISTOGRAM_COUNTS("Renderer4.renderPassCount", 211 UMA_HISTOGRAM_COUNTS("Renderer4.renderPassCount",
202 render_passes_in_draw_order->size()); 212 render_passes_in_draw_order->size());
203 213
204 const RenderPass* root_render_pass = render_passes_in_draw_order->back(); 214 const RenderPass* root_render_pass = render_passes_in_draw_order->back();
205 DCHECK(root_render_pass); 215 DCHECK(root_render_pass);
206 216
207 DrawingFrame frame; 217 DrawingFrame frame;
208 frame.render_passes_in_draw_order = render_passes_in_draw_order; 218 frame.render_passes_in_draw_order = render_passes_in_draw_order;
209 frame.root_render_pass = root_render_pass; 219 frame.root_render_pass = root_render_pass;
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 const DrawQuad& quad = *it; 384 const DrawQuad& quad = *it;
375 bool should_skip_quad = false; 385 bool should_skip_quad = false;
376 386
377 if (using_scissor_as_optimization) { 387 if (using_scissor_as_optimization) {
378 SetScissorStateForQuadWithRenderPassScissor( 388 SetScissorStateForQuadWithRenderPassScissor(
379 frame, quad, render_pass_scissor, &should_skip_quad); 389 frame, quad, render_pass_scissor, &should_skip_quad);
380 } else { 390 } else {
381 SetScissorStateForQuad(frame, quad); 391 SetScissorStateForQuad(frame, quad);
382 } 392 }
383 393
394 /*if (quad.material == DrawQuad::TEXTURE_CONTENT) {
395 const TextureDrawQuad& tquad = static_cast<const TextureDrawQuad&>(quad);
396 printf("DirectRenderer::DrawRenderPass %d %d\n", tquad.nearest_neighbor, t quad.resource_id);
397 }*/
384 if (!should_skip_quad) 398 if (!should_skip_quad)
385 DoDrawQuad(frame, &quad); 399 DoDrawQuad(frame, &quad);
386 } 400 }
387 FinishDrawingQuadList(); 401 FinishDrawingQuadList();
388 } 402 }
389 403
390 bool DirectRenderer::UseRenderPass(DrawingFrame* frame, 404 bool DirectRenderer::UseRenderPass(DrawingFrame* frame,
391 const RenderPass* render_pass) { 405 const RenderPass* render_pass) {
392 frame->current_render_pass = render_pass; 406 frame->current_render_pass = render_pass;
393 frame->current_texture = NULL; 407 frame->current_texture = NULL;
(...skipping 25 matching lines...) Expand all
419 ScopedResource* texture = render_pass_textures_.get(id); 433 ScopedResource* texture = render_pass_textures_.get(id);
420 return texture && texture->id(); 434 return texture && texture->id();
421 } 435 }
422 436
423 // static 437 // static
424 gfx::Size DirectRenderer::RenderPassTextureSize(const RenderPass* render_pass) { 438 gfx::Size DirectRenderer::RenderPassTextureSize(const RenderPass* render_pass) {
425 return render_pass->output_rect.size(); 439 return render_pass->output_rect.size();
426 } 440 }
427 441
428 } // namespace cc 442 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698