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

Unified Diff: cc/output/gl_renderer.cc

Issue 1057283003: Remove parts of //cc we aren't using (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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/output/gl_renderer.h ('k') | cc/output/latency_info_swap_promise.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/gl_renderer.cc
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
index e614d8b56131bd8402fde62e17b13980da162268..fe11f9dd792cfb8d0b95dba9bc416522a94ef9b0 100644
--- a/cc/output/gl_renderer.cc
+++ b/cc/output/gl_renderer.cc
@@ -28,12 +28,10 @@
#include "cc/output/render_surface_filters.h"
#include "cc/output/static_geometry_binding.h"
#include "cc/quads/draw_polygon.h"
-#include "cc/quads/picture_draw_quad.h"
#include "cc/quads/render_pass.h"
#include "cc/quads/stream_video_draw_quad.h"
#include "cc/quads/texture_draw_quad.h"
#include "cc/resources/layer_quad.h"
-#include "cc/resources/scoped_gpu_raster.h"
#include "cc/resources/scoped_resource.h"
#include "cc/resources/texture_mailbox_deleter.h"
#include "gpu/GLES2/gl2extchromium.h"
@@ -158,40 +156,6 @@ static GLint GetActiveTextureUnit(GLES2Interface* gl) {
return active_unit;
}
-class GLRenderer::ScopedUseGrContext {
- public:
- static scoped_ptr<ScopedUseGrContext> Create(GLRenderer* renderer,
- DrawingFrame* frame) {
- return make_scoped_ptr(new ScopedUseGrContext(renderer, frame));
- }
-
- ~ScopedUseGrContext() {
- // Pass context control back to GLrenderer.
- scoped_gpu_raster_ = nullptr;
- renderer_->RestoreGLState();
- renderer_->RestoreFramebuffer(frame_);
- }
-
- GrContext* context() const {
- return renderer_->output_surface_->context_provider()->GrContext();
- }
-
- private:
- ScopedUseGrContext(GLRenderer* renderer, DrawingFrame* frame)
- : scoped_gpu_raster_(
- new ScopedGpuRaster(renderer->output_surface_->context_provider())),
- renderer_(renderer),
- frame_(frame) {
- // scoped_gpu_raster_ passes context control to Skia.
- }
-
- scoped_ptr<ScopedGpuRaster> scoped_gpu_raster_;
- GLRenderer* renderer_;
- DrawingFrame* frame_;
-
- DISALLOW_COPY_AND_ASSIGN(ScopedUseGrContext);
-};
-
struct GLRenderer::PendingAsyncReadPixels {
PendingAsyncReadPixels() : buffer(0) {}
@@ -521,6 +485,7 @@ void GLRenderer::DoDrawQuad(DrawingFrame* frame,
switch (quad->material) {
case DrawQuad::INVALID:
+ case DrawQuad::UNUSED_SPACE_FOR_PICTURE_CONTENT:
NOTREACHED();
break;
case DrawQuad::CHECKERBOARD:
@@ -534,10 +499,6 @@ void GLRenderer::DoDrawQuad(DrawingFrame* frame,
DrawIOSurfaceQuad(frame, IOSurfaceDrawQuad::MaterialCast(quad),
clip_region);
break;
- case DrawQuad::PICTURE_CONTENT:
- // PictureDrawQuad should only be used for resourceless software draws.
- NOTREACHED();
- break;
case DrawQuad::RENDER_PASS:
DrawRenderPassQuad(frame, RenderPassDrawQuad::MaterialCast(quad),
clip_region);
@@ -661,100 +622,6 @@ void GLRenderer::DrawDebugBorderQuad(const DrawingFrame* frame,
GLC(gl_, gl_->DrawElements(GL_LINE_LOOP, 4, GL_UNSIGNED_SHORT, 0));
}
-static skia::RefPtr<SkImage> ApplyImageFilter(
- scoped_ptr<GLRenderer::ScopedUseGrContext> use_gr_context,
- ResourceProvider* resource_provider,
- const gfx::Rect& rect,
- const gfx::Vector2dF& scale,
- SkImageFilter* filter,
- ScopedResource* source_texture_resource) {
- if (!filter)
- return skia::RefPtr<SkImage>();
-
- if (!use_gr_context)
- return skia::RefPtr<SkImage>();
-
- ResourceProvider::ScopedReadLockGL lock(resource_provider,
- source_texture_resource->id());
-
- // Wrap the source texture in a Ganesh platform texture.
- GrBackendTextureDesc backend_texture_description;
- backend_texture_description.fWidth = source_texture_resource->size().width();
- backend_texture_description.fHeight =
- source_texture_resource->size().height();
- backend_texture_description.fConfig = kSkia8888_GrPixelConfig;
- backend_texture_description.fTextureHandle = lock.texture_id();
- backend_texture_description.fOrigin = kBottomLeft_GrSurfaceOrigin;
- skia::RefPtr<GrTexture> texture =
- skia::AdoptRef(use_gr_context->context()->wrapBackendTexture(
- backend_texture_description));
- if (!texture) {
- TRACE_EVENT_INSTANT0("cc",
- "ApplyImageFilter wrap background texture failed",
- TRACE_EVENT_SCOPE_THREAD);
- return skia::RefPtr<SkImage>();
- }
-
- SkImageInfo info =
- SkImageInfo::MakeN32Premul(source_texture_resource->size().width(),
- source_texture_resource->size().height());
- // Place the platform texture inside an SkBitmap.
- SkBitmap source;
- source.setInfo(info);
- skia::RefPtr<SkGrPixelRef> pixel_ref =
- skia::AdoptRef(new SkGrPixelRef(info, texture.get()));
- source.setPixelRef(pixel_ref.get());
-
- // Create a scratch texture for backing store.
- GrTextureDesc desc;
- desc.fFlags = kRenderTarget_GrTextureFlagBit | kNoStencil_GrTextureFlagBit;
- desc.fSampleCnt = 0;
- desc.fWidth = source.width();
- desc.fHeight = source.height();
- desc.fConfig = kSkia8888_GrPixelConfig;
- desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
- skia::RefPtr<GrTexture> backing_store =
- skia::AdoptRef(use_gr_context->context()->refScratchTexture(
- desc, GrContext::kExact_ScratchTexMatch));
- if (!backing_store) {
- TRACE_EVENT_INSTANT0("cc",
- "ApplyImageFilter scratch texture allocation failed",
- TRACE_EVENT_SCOPE_THREAD);
- return skia::RefPtr<SkImage>();
- }
-
- // Create surface to draw into.
- skia::RefPtr<SkSurface> surface = skia::AdoptRef(
- SkSurface::NewRenderTargetDirect(backing_store->asRenderTarget()));
- skia::RefPtr<SkCanvas> canvas = skia::SharePtr(surface->getCanvas());
-
- // Draw the source bitmap through the filter to the canvas.
- SkPaint paint;
- paint.setImageFilter(filter);
- canvas->clear(SK_ColorTRANSPARENT);
-
- // The origin of the filter is top-left and the origin of the source is
- // bottom-left, but the orientation is the same, so we must translate the
- // filter so that it renders at the bottom of the texture to avoid
- // misregistration.
- int y_translate = source.height() - rect.height() - rect.origin().y();
- canvas->translate(-rect.origin().x(), y_translate);
- canvas->scale(scale.x(), scale.y());
- canvas->drawSprite(source, 0, 0, &paint);
-
- skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot());
- if (!image || !image->getTexture()) {
- return skia::RefPtr<SkImage>();
- }
-
- // Flush the GrContext to ensure all buffered GL calls are drawn to the
- // backing store before we access and return it, and have cc begin using the
- // GL context again.
- canvas->flush();
-
- return image;
-}
-
bool GLRenderer::CanApplyBlendModeUsingBlendFunc(SkXfermode::Mode blend_mode) {
return use_blend_equation_advanced_ ||
blend_mode == SkXfermode::kScreen_Mode ||
@@ -837,24 +704,6 @@ void GLRenderer::RestoreBlendFuncToDefault(SkXfermode::Mode blend_mode) {
}
}
-bool GLRenderer::ShouldApplyBackgroundFilters(DrawingFrame* frame,
- const RenderPassDrawQuad* quad) {
- if (quad->background_filters.IsEmpty())
- return false;
-
- // TODO(danakj): We only allow background filters on an opaque render surface
- // because other surfaces may contain translucent pixels, and the contents
- // behind those translucent pixels wouldn't have the filter applied.
- if (frame->current_render_pass->has_transparent_background)
- return false;
-
- // TODO(ajuma): Add support for reference filters once
- // FilterOperations::GetOutsets supports reference filters.
- if (quad->background_filters.HasReferenceFilter())
- return false;
- return true;
-}
-
// This takes a gfx::Rect and a clip region quad in the same space,
// and returns a quad with the same proportions in the space -0.5->0.5.
bool GetScaledRegion(const gfx::Rect& rect,
@@ -906,12 +755,6 @@ gfx::Rect GLRenderer::GetBackdropBoundingBoxForRenderPassQuad(
gfx::Rect backdrop_rect = gfx::ToEnclosingRect(MathUtil::MapClippedRect(
contents_device_transform, scaled_region.BoundingBox()));
- if (ShouldApplyBackgroundFilters(frame, quad)) {
- int top, right, bottom, left;
- quad->background_filters.GetOutsets(&top, &right, &bottom, &left);
- backdrop_rect.Inset(-left, -top, -right, -bottom);
- }
-
if (!backdrop_rect.IsEmpty() && use_aa) {
const int kOutsetForAntialiasing = 1;
backdrop_rect.Inset(-kOutsetForAntialiasing, -kOutsetForAntialiasing);
@@ -938,20 +781,6 @@ scoped_ptr<ScopedResource> GLRenderer::GetBackdropTexture(
return device_background_texture.Pass();
}
-skia::RefPtr<SkImage> GLRenderer::ApplyBackgroundFilters(
- DrawingFrame* frame,
- const RenderPassDrawQuad* quad,
- ScopedResource* background_texture) {
- DCHECK(ShouldApplyBackgroundFilters(frame, quad));
- skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter(
- quad->background_filters, background_texture->size());
-
- skia::RefPtr<SkImage> background_with_filters = ApplyImageFilter(
- ScopedUseGrContext::Create(this, frame), resource_provider_, quad->rect,
- quad->filters_scale, filter.get(), background_texture);
- return background_with_filters;
-}
-
void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
const RenderPassDrawQuad* quad,
const gfx::QuadF* clip_region) {
@@ -981,7 +810,6 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
SkXfermode::Mode blend_mode = quad->shared_quad_state->blend_mode;
bool use_shaders_for_blending =
!CanApplyBlendModeUsingBlendFunc(blend_mode) ||
- ShouldApplyBackgroundFilters(frame, quad) ||
settings_->force_blending_with_shaders;
scoped_ptr<ScopedResource> background_texture;
@@ -1004,13 +832,6 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
// amount of memory used by render surfaces:
// LayerTreeHost::CalculateMemoryForRenderSurfaces.
background_texture = GetBackdropTexture(background_rect);
-
- if (ShouldApplyBackgroundFilters(frame, quad) && background_texture) {
- // Apply the background filters to R, so that it is applied in the
- // pixels' coordinate space.
- background_image =
- ApplyBackgroundFilters(frame, quad, background_texture.get());
- }
}
if (!background_texture) {
@@ -1021,11 +842,6 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
// Reset original background texture if there is not any mask
if (!quad->mask_resource_id)
background_texture.reset();
- } else if (CanApplyBlendModeUsingBlendFunc(blend_mode) &&
- ShouldApplyBackgroundFilters(frame, quad)) {
- // Something went wrong with applying background filters to the backdrop.
- use_shaders_for_blending = false;
- background_texture.reset();
}
}
// Need original background texture for mask?
@@ -1042,29 +858,7 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
skia::RefPtr<SkImage> filter_image;
SkScalar color_matrix[20];
bool use_color_matrix = false;
- if (!quad->filters.IsEmpty()) {
- skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter(
- quad->filters, contents_texture->size());
- if (filter) {
- skia::RefPtr<SkColorFilter> cf;
-
- {
- SkColorFilter* colorfilter_rawptr = NULL;
- filter->asColorFilter(&colorfilter_rawptr);
- cf = skia::AdoptRef(colorfilter_rawptr);
- }
-
- if (cf && cf->asColorMatrix(color_matrix) && !filter->getInput(0)) {
- // We have a single color matrix as a filter; apply it locally
- // in the compositor.
- use_color_matrix = true;
- } else {
- filter_image = ApplyImageFilter(
- ScopedUseGrContext::Create(this, frame), resource_provider_,
- quad->rect, quad->filters_scale, filter.get(), contents_texture);
- }
- }
- }
+ DCHECK(quad->filters.IsEmpty());
scoped_ptr<ResourceProvider::ScopedSamplerGL> mask_resource_lock;
unsigned mask_texture_id = 0;
« no previous file with comments | « cc/output/gl_renderer.h ('k') | cc/output/latency_info_swap_promise.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698