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

Side by Side Diff: cc/layers/video_layer_impl.cc

Issue 1062043003: cc: Add ResourceId validation checks at the time of AppendQuads. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: resource-validate: fixtests Created 5 years, 8 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
« no previous file with comments | « cc/layers/ui_resource_layer_impl_unittest.cc ('k') | cc/resources/resource_provider.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/layers/video_layer_impl.h" 5 #include "cc/layers/video_layer_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "cc/layers/video_frame_provider_client_impl.h" 9 #include "cc/layers/video_frame_provider_client_impl.h"
10 #include "cc/quads/io_surface_draw_quad.h" 10 #include "cc/quads/io_surface_draw_quad.h"
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 DCHECK_EQ(frame_resources_.size(), 0u); 194 DCHECK_EQ(frame_resources_.size(), 0u);
195 DCHECK_EQ(software_resources_.size(), 1u); 195 DCHECK_EQ(software_resources_.size(), 1u);
196 if (software_resources_.size() < 1u) 196 if (software_resources_.size() < 1u)
197 break; 197 break;
198 bool premultiplied_alpha = true; 198 bool premultiplied_alpha = true;
199 gfx::PointF uv_top_left(0.f, 0.f); 199 gfx::PointF uv_top_left(0.f, 0.f);
200 gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale); 200 gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale);
201 float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; 201 float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
202 bool flipped = false; 202 bool flipped = false;
203 bool nearest_neighbor = false; 203 bool nearest_neighbor = false;
204 // TODO(danakj): crbug.com/455931
205 layer_tree_impl()->resource_provider()->ValidateResource(
206 software_resources_[0]);
204 TextureDrawQuad* texture_quad = 207 TextureDrawQuad* texture_quad =
205 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 208 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
206 texture_quad->SetNew(shared_quad_state, 209 texture_quad->SetNew(shared_quad_state,
207 quad_rect, 210 quad_rect,
208 opaque_rect, 211 opaque_rect,
209 visible_quad_rect, 212 visible_quad_rect,
210 software_resources_[0], 213 software_resources_[0],
211 premultiplied_alpha, 214 premultiplied_alpha,
212 uv_top_left, 215 uv_top_left,
213 uv_bottom_right, 216 uv_bottom_right,
(...skipping 19 matching lines...) Expand all
233 frame_->format(), media::VideoFrame::kUPlane, coded_size); 236 frame_->format(), media::VideoFrame::kUPlane, coded_size);
234 DCHECK(uv_tex_size == 237 DCHECK(uv_tex_size ==
235 media::VideoFrame::PlaneSize( 238 media::VideoFrame::PlaneSize(
236 frame_->format(), media::VideoFrame::kVPlane, coded_size)); 239 frame_->format(), media::VideoFrame::kVPlane, coded_size));
237 if (frame_resources_.size() > 3) { 240 if (frame_resources_.size() > 3) {
238 DCHECK(ya_tex_size == 241 DCHECK(ya_tex_size ==
239 media::VideoFrame::PlaneSize( 242 media::VideoFrame::PlaneSize(
240 frame_->format(), media::VideoFrame::kAPlane, coded_size)); 243 frame_->format(), media::VideoFrame::kAPlane, coded_size));
241 } 244 }
242 245
246 // TODO(danakj): crbug.com/455931
247 layer_tree_impl()->resource_provider()->ValidateResource(
248 frame_resources_[0]);
249 layer_tree_impl()->resource_provider()->ValidateResource(
250 frame_resources_[1]);
251 layer_tree_impl()->resource_provider()->ValidateResource(
252 frame_resources_[2]);
253 if (frame_resources_.size() > 3) {
254 layer_tree_impl()->resource_provider()->ValidateResource(
255 frame_resources_[3]);
256 }
243 gfx::RectF tex_coord_rect( 257 gfx::RectF tex_coord_rect(
244 tex_x_offset, tex_y_offset, tex_width_scale, tex_height_scale); 258 tex_x_offset, tex_y_offset, tex_width_scale, tex_height_scale);
245 YUVVideoDrawQuad* yuv_video_quad = 259 YUVVideoDrawQuad* yuv_video_quad =
246 render_pass->CreateAndAppendDrawQuad<YUVVideoDrawQuad>(); 260 render_pass->CreateAndAppendDrawQuad<YUVVideoDrawQuad>();
247 yuv_video_quad->SetNew( 261 yuv_video_quad->SetNew(
248 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect, 262 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect,
249 tex_coord_rect, ya_tex_size, uv_tex_size, frame_resources_[0], 263 tex_coord_rect, ya_tex_size, uv_tex_size, frame_resources_[0],
250 frame_resources_[1], frame_resources_[2], 264 frame_resources_[1], frame_resources_[2],
251 frame_resources_.size() > 3 ? frame_resources_[3] : 0, color_space); 265 frame_resources_.size() > 3 ? frame_resources_[3] : 0, color_space);
252 break; 266 break;
253 } 267 }
254 case VideoFrameExternalResources::RGB_RESOURCE: { 268 case VideoFrameExternalResources::RGB_RESOURCE: {
255 DCHECK_EQ(frame_resources_.size(), 1u); 269 DCHECK_EQ(frame_resources_.size(), 1u);
256 if (frame_resources_.size() < 1u) 270 if (frame_resources_.size() < 1u)
257 break; 271 break;
258 bool premultiplied_alpha = true; 272 bool premultiplied_alpha = true;
259 gfx::PointF uv_top_left(0.f, 0.f); 273 gfx::PointF uv_top_left(0.f, 0.f);
260 gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale); 274 gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale);
261 float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; 275 float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
262 bool flipped = false; 276 bool flipped = false;
263 bool nearest_neighbor = false; 277 bool nearest_neighbor = false;
278 // TODO(danakj): crbug.com/455931
279 layer_tree_impl()->resource_provider()->ValidateResource(
280 frame_resources_[0]);
264 TextureDrawQuad* texture_quad = 281 TextureDrawQuad* texture_quad =
265 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 282 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
266 texture_quad->SetNew(shared_quad_state, 283 texture_quad->SetNew(shared_quad_state,
267 quad_rect, 284 quad_rect,
268 opaque_rect, 285 opaque_rect,
269 visible_quad_rect, 286 visible_quad_rect,
270 frame_resources_[0], 287 frame_resources_[0],
271 premultiplied_alpha, 288 premultiplied_alpha,
272 uv_top_left, 289 uv_top_left,
273 uv_bottom_right, 290 uv_bottom_right,
274 SK_ColorTRANSPARENT, 291 SK_ColorTRANSPARENT,
275 opacity, 292 opacity,
276 flipped, 293 flipped,
277 nearest_neighbor); 294 nearest_neighbor);
278 break; 295 break;
279 } 296 }
280 case VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE: { 297 case VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE: {
281 DCHECK_EQ(frame_resources_.size(), 1u); 298 DCHECK_EQ(frame_resources_.size(), 1u);
282 if (frame_resources_.size() < 1u) 299 if (frame_resources_.size() < 1u)
283 break; 300 break;
301 // TODO(danakj): crbug.com/455931
302 layer_tree_impl()->resource_provider()->ValidateResource(
303 frame_resources_[0]);
284 gfx::Transform scale; 304 gfx::Transform scale;
285 scale.Scale(tex_width_scale, tex_height_scale); 305 scale.Scale(tex_width_scale, tex_height_scale);
286 StreamVideoDrawQuad* stream_video_quad = 306 StreamVideoDrawQuad* stream_video_quad =
287 render_pass->CreateAndAppendDrawQuad<StreamVideoDrawQuad>(); 307 render_pass->CreateAndAppendDrawQuad<StreamVideoDrawQuad>();
288 stream_video_quad->SetNew( 308 stream_video_quad->SetNew(
289 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect, 309 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect,
290 frame_resources_[0], 310 frame_resources_[0],
291 scale * provider_client_impl_->StreamTextureMatrix()); 311 scale * provider_client_impl_->StreamTextureMatrix());
292 break; 312 break;
293 } 313 }
294 case VideoFrameExternalResources::IO_SURFACE: { 314 case VideoFrameExternalResources::IO_SURFACE: {
295 DCHECK_EQ(frame_resources_.size(), 1u); 315 DCHECK_EQ(frame_resources_.size(), 1u);
296 if (frame_resources_.size() < 1u) 316 if (frame_resources_.size() < 1u)
297 break; 317 break;
318 // TODO(danakj): crbug.com/455931
319 layer_tree_impl()->resource_provider()->ValidateResource(
320 frame_resources_[0]);
298 IOSurfaceDrawQuad* io_surface_quad = 321 IOSurfaceDrawQuad* io_surface_quad =
299 render_pass->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>(); 322 render_pass->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>();
300 io_surface_quad->SetNew(shared_quad_state, 323 io_surface_quad->SetNew(shared_quad_state,
301 quad_rect, 324 quad_rect,
302 opaque_rect, 325 opaque_rect,
303 visible_quad_rect, 326 visible_quad_rect,
304 visible_rect.size(), 327 visible_rect.size(),
305 frame_resources_[0], 328 frame_resources_[0],
306 IOSurfaceDrawQuad::UNFLIPPED); 329 IOSurfaceDrawQuad::UNFLIPPED);
307 break; 330 break;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 void VideoLayerImpl::SetNeedsRedraw() { 393 void VideoLayerImpl::SetNeedsRedraw() {
371 SetUpdateRect(gfx::UnionRects(update_rect(), gfx::Rect(bounds()))); 394 SetUpdateRect(gfx::UnionRects(update_rect(), gfx::Rect(bounds())));
372 layer_tree_impl()->SetNeedsRedraw(); 395 layer_tree_impl()->SetNeedsRedraw();
373 } 396 }
374 397
375 const char* VideoLayerImpl::LayerTypeAsString() const { 398 const char* VideoLayerImpl::LayerTypeAsString() const {
376 return "cc::VideoLayerImpl"; 399 return "cc::VideoLayerImpl";
377 } 400 }
378 401
379 } // namespace cc 402 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/ui_resource_layer_impl_unittest.cc ('k') | cc/resources/resource_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698