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

Side by Side Diff: gpu/command_buffer/service/texture_definition.cc

Issue 500243002: Remove implicit conversions from scoped_refptr to T* in gpu/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert silliness Created 6 years, 3 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
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 "gpu/command_buffer/service/texture_definition.h" 5 #include "gpu/command_buffer/service/texture_definition.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/memory/linked_ptr.h" 9 #include "base/memory/linked_ptr.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 private: 51 private:
52 scoped_refptr<NativeImageBuffer> buffer_; 52 scoped_refptr<NativeImageBuffer> buffer_;
53 gfx::Size size_; 53 gfx::Size size_;
54 54
55 DISALLOW_COPY_AND_ASSIGN(GLImageSync); 55 DISALLOW_COPY_AND_ASSIGN(GLImageSync);
56 }; 56 };
57 57
58 GLImageSync::GLImageSync(const scoped_refptr<NativeImageBuffer>& buffer, 58 GLImageSync::GLImageSync(const scoped_refptr<NativeImageBuffer>& buffer,
59 const gfx::Size& size) 59 const gfx::Size& size)
60 : buffer_(buffer), size_(size) { 60 : buffer_(buffer), size_(size) {
61 if (buffer) 61 if (buffer.get())
62 buffer->AddClient(this); 62 buffer->AddClient(this);
63 } 63 }
64 64
65 GLImageSync::~GLImageSync() { 65 GLImageSync::~GLImageSync() {
66 if (buffer_) 66 if (buffer_.get())
67 buffer_->RemoveClient(this); 67 buffer_->RemoveClient(this);
68 } 68 }
69 69
70 void GLImageSync::Destroy(bool have_context) { 70 void GLImageSync::Destroy(bool have_context) {
71 } 71 }
72 72
73 gfx::Size GLImageSync::GetSize() { 73 gfx::Size GLImageSync::GetSize() {
74 return size_; 74 return size_;
75 } 75 }
76 76
77 bool GLImageSync::BindTexImage(unsigned target) { 77 bool GLImageSync::BindTexImage(unsigned target) {
78 NOTREACHED(); 78 NOTREACHED();
79 return false; 79 return false;
80 } 80 }
81 81
82 void GLImageSync::ReleaseTexImage(unsigned target) { 82 void GLImageSync::ReleaseTexImage(unsigned target) {
83 NOTREACHED(); 83 NOTREACHED();
84 } 84 }
85 85
86 void GLImageSync::WillUseTexImage() { 86 void GLImageSync::WillUseTexImage() {
87 if (buffer_) 87 if (buffer_.get())
88 buffer_->WillRead(this); 88 buffer_->WillRead(this);
89 } 89 }
90 90
91 void GLImageSync::DidUseTexImage() { 91 void GLImageSync::DidUseTexImage() {
92 if (buffer_) 92 if (buffer_.get())
93 buffer_->DidRead(this); 93 buffer_->DidRead(this);
94 } 94 }
95 95
96 void GLImageSync::WillModifyTexImage() { 96 void GLImageSync::WillModifyTexImage() {
97 if (buffer_) 97 if (buffer_.get())
98 buffer_->WillWrite(this); 98 buffer_->WillWrite(this);
99 } 99 }
100 100
101 void GLImageSync::DidModifyTexImage() { 101 void GLImageSync::DidModifyTexImage() {
102 if (buffer_) 102 if (buffer_.get())
103 buffer_->DidWrite(this); 103 buffer_->DidWrite(this);
104 } 104 }
105 105
106 bool GLImageSync::ScheduleOverlayPlane(gfx::AcceleratedWidget widget, 106 bool GLImageSync::ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
107 int z_order, 107 int z_order,
108 gfx::OverlayTransform transform, 108 gfx::OverlayTransform transform,
109 const gfx::Rect& bounds_rect, 109 const gfx::Rect& bounds_rect,
110 const gfx::RectF& crop_rect) { 110 const gfx::RectF& crop_rect) {
111 NOTREACHED(); 111 NOTREACHED();
112 return false; 112 return false;
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 357
358 TextureDefinition::LevelInfo::~LevelInfo() {} 358 TextureDefinition::LevelInfo::~LevelInfo() {}
359 359
360 TextureDefinition::TextureDefinition( 360 TextureDefinition::TextureDefinition(
361 GLenum target, 361 GLenum target,
362 Texture* texture, 362 Texture* texture,
363 unsigned int version, 363 unsigned int version,
364 const scoped_refptr<NativeImageBuffer>& image_buffer) 364 const scoped_refptr<NativeImageBuffer>& image_buffer)
365 : version_(version), 365 : version_(version),
366 target_(target), 366 target_(target),
367 image_buffer_(image_buffer ? image_buffer : NativeImageBuffer::Create( 367 image_buffer_(image_buffer.get()
368 texture->service_id())), 368 ? image_buffer
369 : NativeImageBuffer::Create(texture->service_id())),
369 min_filter_(texture->min_filter()), 370 min_filter_(texture->min_filter()),
370 mag_filter_(texture->mag_filter()), 371 mag_filter_(texture->mag_filter()),
371 wrap_s_(texture->wrap_s()), 372 wrap_s_(texture->wrap_s()),
372 wrap_t_(texture->wrap_t()), 373 wrap_t_(texture->wrap_t()),
373 usage_(texture->usage()), 374 usage_(texture->usage()),
374 immutable_(texture->IsImmutable()) { 375 immutable_(texture->IsImmutable()) {
375
376 // TODO 376 // TODO
377 DCHECK(!texture->level_infos_.empty()); 377 DCHECK(!texture->level_infos_.empty());
378 DCHECK(!texture->level_infos_[0].empty()); 378 DCHECK(!texture->level_infos_[0].empty());
379 DCHECK(!texture->NeedsMips()); 379 DCHECK(!texture->NeedsMips());
380 DCHECK(texture->level_infos_[0][0].width); 380 DCHECK(texture->level_infos_[0][0].width);
381 DCHECK(texture->level_infos_[0][0].height); 381 DCHECK(texture->level_infos_[0][0].height);
382 382
383 scoped_refptr<gfx::GLImage> gl_image( 383 scoped_refptr<gfx::GLImage> gl_image(
384 new GLImageSync(image_buffer_, 384 new GLImageSync(image_buffer_,
385 gfx::Size(texture->level_infos_[0][0].width, 385 gfx::Size(texture->level_infos_[0][0].width,
386 texture->level_infos_[0][0].height))); 386 texture->level_infos_[0][0].height)));
387 texture->SetLevelImage(NULL, target, 0, gl_image); 387 texture->SetLevelImage(NULL, target, 0, gl_image.get());
388 388
389 // TODO: all levels 389 // TODO: all levels
390 level_infos_.clear(); 390 level_infos_.clear();
391 const Texture::LevelInfo& level = texture->level_infos_[0][0]; 391 const Texture::LevelInfo& level = texture->level_infos_[0][0];
392 LevelInfo info(level.target, 392 LevelInfo info(level.target,
393 level.internal_format, 393 level.internal_format,
394 level.width, 394 level.width,
395 level.height, 395 level.height,
396 level.depth, 396 level.depth,
397 level.border, 397 level.border,
398 level.format, 398 level.format,
399 level.type, 399 level.type,
400 level.cleared); 400 level.cleared);
401 std::vector<LevelInfo> infos; 401 std::vector<LevelInfo> infos;
402 infos.push_back(info); 402 infos.push_back(info);
403 level_infos_.push_back(infos); 403 level_infos_.push_back(infos);
404 } 404 }
405 405
406 TextureDefinition::~TextureDefinition() { 406 TextureDefinition::~TextureDefinition() {
407 } 407 }
408 408
409 Texture* TextureDefinition::CreateTexture() const { 409 Texture* TextureDefinition::CreateTexture() const {
410 if (!image_buffer_) 410 if (!image_buffer_.get())
411 return NULL; 411 return NULL;
412 412
413 GLuint texture_id; 413 GLuint texture_id;
414 glGenTextures(1, &texture_id); 414 glGenTextures(1, &texture_id);
415 415
416 Texture* texture(new Texture(texture_id)); 416 Texture* texture(new Texture(texture_id));
417 UpdateTexture(texture); 417 UpdateTexture(texture);
418 418
419 return texture; 419 return texture;
420 } 420 }
421 421
422 void TextureDefinition::UpdateTexture(Texture* texture) const { 422 void TextureDefinition::UpdateTexture(Texture* texture) const {
423 gfx::ScopedTextureBinder texture_binder(target_, texture->service_id()); 423 gfx::ScopedTextureBinder texture_binder(target_, texture->service_id());
424 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter_); 424 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter_);
425 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter_); 425 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter_);
426 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_s_); 426 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_s_);
427 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t_); 427 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t_);
428 if (image_buffer_) 428 if (image_buffer_.get())
429 image_buffer_->BindToTexture(target_); 429 image_buffer_->BindToTexture(target_);
430 // We have to make sure the changes are visible to other clients in this share 430 // We have to make sure the changes are visible to other clients in this share
431 // group. As far as the clients are concerned, the mailbox semantics only 431 // group. As far as the clients are concerned, the mailbox semantics only
432 // demand a single flush from the client after changes are first made, 432 // demand a single flush from the client after changes are first made,
433 // and it is not visible to them when another share group boundary is crossed. 433 // and it is not visible to them when another share group boundary is crossed.
434 // We could probably track this and be a bit smarter about when to flush 434 // We could probably track this and be a bit smarter about when to flush
435 // though. 435 // though.
436 glFlush(); 436 glFlush();
437 437
438 texture->level_infos_.resize(1); 438 texture->level_infos_.resize(1);
(...skipping 11 matching lines...) Expand all
450 info.internal_format, 450 info.internal_format,
451 info.width, 451 info.width,
452 info.height, 452 info.height,
453 info.depth, 453 info.depth,
454 info.border, 454 info.border,
455 info.format, 455 info.format,
456 info.type, 456 info.type,
457 info.cleared); 457 info.cleared);
458 } 458 }
459 } 459 }
460 if (image_buffer_) { 460 if (image_buffer_.get()) {
461 texture->SetLevelImage( 461 texture->SetLevelImage(
462 NULL, 462 NULL,
463 target_, 463 target_,
464 0, 464 0,
465 new GLImageSync( 465 new GLImageSync(
466 image_buffer_, 466 image_buffer_,
467 gfx::Size(level_infos_[0][0].width, level_infos_[0][0].height))); 467 gfx::Size(level_infos_[0][0].width, level_infos_[0][0].height)));
468 } 468 }
469 469
470 texture->target_ = target_; 470 texture->target_ = target_;
471 texture->SetImmutable(immutable_); 471 texture->SetImmutable(immutable_);
472 texture->min_filter_ = min_filter_; 472 texture->min_filter_ = min_filter_;
473 texture->mag_filter_ = mag_filter_; 473 texture->mag_filter_ = mag_filter_;
474 texture->wrap_s_ = wrap_s_; 474 texture->wrap_s_ = wrap_s_;
475 texture->wrap_t_ = wrap_t_; 475 texture->wrap_t_ = wrap_t_;
476 texture->usage_ = usage_; 476 texture->usage_ = usage_;
477 } 477 }
478 478
479 bool TextureDefinition::Matches(const Texture* texture) const { 479 bool TextureDefinition::Matches(const Texture* texture) const {
480 DCHECK(target_ == texture->target()); 480 DCHECK(target_ == texture->target());
481 if (texture->min_filter_ != min_filter_ || 481 if (texture->min_filter_ != min_filter_ ||
482 texture->mag_filter_ != mag_filter_ || 482 texture->mag_filter_ != mag_filter_ ||
483 texture->wrap_s_ != wrap_s_ || 483 texture->wrap_s_ != wrap_s_ ||
484 texture->wrap_t_ != wrap_t_) { 484 texture->wrap_t_ != wrap_t_) {
485 return false; 485 return false;
486 } 486 }
487 487
488 // All structural changes should have orphaned the texture. 488 // All structural changes should have orphaned the texture.
489 if (image_buffer_ && !texture->GetLevelImage(texture->target(), 0)) 489 if (image_buffer_.get() && !texture->GetLevelImage(texture->target(), 0))
490 return false; 490 return false;
491 491
492 return true; 492 return true;
493 } 493 }
494 494
495 } // namespace gles2 495 } // namespace gles2
496 } // namespace gpu 496 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/query_manager.cc ('k') | gpu/command_buffer/service/texture_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698