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

Side by Side Diff: cc/blink/web_external_texture_layer_impl.cc

Issue 558083002: [cc] Add nearest neighbor filtering for TextureLayer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove printfs, clean up CL. 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/blink/web_external_texture_layer_impl.h" 5 #include "cc/blink/web_external_texture_layer_impl.h"
6 6
7 #include "cc/blink/web_external_bitmap_impl.h" 7 #include "cc/blink/web_external_bitmap_impl.h"
8 #include "cc/blink/web_layer_impl.h" 8 #include "cc/blink/web_layer_impl.h"
9 #include "cc/layers/texture_layer.h" 9 #include "cc/layers/texture_layer.h"
10 #include "cc/resources/resource_update_queue.h" 10 #include "cc/resources/resource_update_queue.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 } 55 }
56 56
57 void WebExternalTextureLayerImpl::setBlendBackgroundColor(bool blend) { 57 void WebExternalTextureLayerImpl::setBlendBackgroundColor(bool blend) {
58 static_cast<TextureLayer*>(layer_->layer())->SetBlendBackgroundColor(blend); 58 static_cast<TextureLayer*>(layer_->layer())->SetBlendBackgroundColor(blend);
59 } 59 }
60 60
61 void WebExternalTextureLayerImpl::setRateLimitContext(bool rate_limit) { 61 void WebExternalTextureLayerImpl::setRateLimitContext(bool rate_limit) {
62 static_cast<TextureLayer*>(layer_->layer())->SetRateLimitContext(rate_limit); 62 static_cast<TextureLayer*>(layer_->layer())->SetRateLimitContext(rate_limit);
63 } 63 }
64 64
65 void WebExternalTextureLayerImpl::setFilterLevel(
66 SkPaint::FilterLevel filter_level) {
67 static_cast<TextureLayer*>(layer_->layer())
68 ->SetNearestNeighbor(filter_level == SkPaint::kNone_FilterLevel);
danakj 2014/11/04 16:02:42 You have multiple ways of setting nearest neighbou
piman 2014/11/04 21:14:35 There's 2 things, that may or may not be in sync:
danakj 2014/11/04 21:30:23 Ah okay, thanks.
69 }
70
65 bool WebExternalTextureLayerImpl::PrepareTextureMailbox( 71 bool WebExternalTextureLayerImpl::PrepareTextureMailbox(
66 cc::TextureMailbox* mailbox, 72 cc::TextureMailbox* mailbox,
67 scoped_ptr<cc::SingleReleaseCallback>* release_callback, 73 scoped_ptr<cc::SingleReleaseCallback>* release_callback,
68 bool use_shared_memory) { 74 bool use_shared_memory) {
69 blink::WebExternalTextureMailbox client_mailbox; 75 blink::WebExternalTextureMailbox client_mailbox;
70 WebExternalBitmapImpl* bitmap = nullptr; 76 WebExternalBitmapImpl* bitmap = nullptr;
71 77
72 if (use_shared_memory) 78 if (use_shared_memory)
73 bitmap = AllocateBitmap(); 79 bitmap = AllocateBitmap();
74 if (!client_->prepareMailbox(&client_mailbox, bitmap)) { 80 if (!client_->prepareMailbox(&client_mailbox, bitmap)) {
75 if (bitmap) 81 if (bitmap)
76 free_bitmaps_.push_back(bitmap); 82 free_bitmaps_.push_back(bitmap);
77 return false; 83 return false;
78 } 84 }
79 gpu::Mailbox name; 85 gpu::Mailbox name;
80 name.SetName(client_mailbox.name); 86 name.SetName(client_mailbox.name);
81 if (bitmap) { 87 if (bitmap) {
82 *mailbox = cc::TextureMailbox(bitmap->shared_memory(), bitmap->size()); 88 *mailbox = cc::TextureMailbox(bitmap->shared_memory(), bitmap->size());
83 } else { 89 } else {
84 *mailbox = 90 *mailbox =
85 cc::TextureMailbox(name, GL_TEXTURE_2D, client_mailbox.syncPoint); 91 cc::TextureMailbox(name, GL_TEXTURE_2D, client_mailbox.syncPoint);
86 } 92 }
87 mailbox->set_allow_overlay(client_mailbox.allowOverlay); 93 mailbox->set_allow_overlay(client_mailbox.allowOverlay);
94 mailbox->set_nearest_neighbor(client_mailbox.nearestNeighbor);
88 95
89 if (mailbox->IsValid()) { 96 if (mailbox->IsValid()) {
90 *release_callback = cc::SingleReleaseCallback::Create( 97 *release_callback = cc::SingleReleaseCallback::Create(
91 base::Bind(&WebExternalTextureLayerImpl::DidReleaseMailbox, 98 base::Bind(&WebExternalTextureLayerImpl::DidReleaseMailbox,
92 this->AsWeakPtr(), 99 this->AsWeakPtr(),
93 client_mailbox, 100 client_mailbox,
94 bitmap)); 101 bitmap));
95 } 102 }
96 103
97 return true; 104 return true;
(...skipping 18 matching lines...) Expand all
116 DCHECK(layer); 123 DCHECK(layer);
117 blink::WebExternalTextureMailbox available_mailbox; 124 blink::WebExternalTextureMailbox available_mailbox;
118 memcpy(available_mailbox.name, mailbox.name, sizeof(available_mailbox.name)); 125 memcpy(available_mailbox.name, mailbox.name, sizeof(available_mailbox.name));
119 available_mailbox.syncPoint = sync_point; 126 available_mailbox.syncPoint = sync_point;
120 if (bitmap) 127 if (bitmap)
121 layer->free_bitmaps_.push_back(bitmap); 128 layer->free_bitmaps_.push_back(bitmap);
122 layer->client_->mailboxReleased(available_mailbox, lost_resource); 129 layer->client_->mailboxReleased(available_mailbox, lost_resource);
123 } 130 }
124 131
125 } // namespace cc_blink 132 } // namespace cc_blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698