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

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

Issue 180723023: gpu: Mailbox emulation with EGLImage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: oops Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "gpu/command_buffer/service/texture_manager.h" 5 #include "gpu/command_buffer/service/texture_manager.h"
6 #include "base/bits.h" 6 #include "base/bits.h"
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 8 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
9 #include "gpu/command_buffer/service/context_state.h" 9 #include "gpu/command_buffer/service/context_state.h"
10 #include "gpu/command_buffer/service/error_state.h" 10 #include "gpu/command_buffer/service/error_state.h"
(...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 Texture::LevelInfo& info = 799 Texture::LevelInfo& info =
800 level_infos_[GLTargetToFaceIndex(target)][level]; 800 level_infos_[GLTargetToFaceIndex(target)][level];
801 DCHECK_EQ(info.target, target); 801 DCHECK_EQ(info.target, target);
802 DCHECK_EQ(info.level, level); 802 DCHECK_EQ(info.level, level);
803 info.image = image; 803 info.image = image;
804 UpdateCanRenderCondition(); 804 UpdateCanRenderCondition();
805 UpdateHasImages(); 805 UpdateHasImages();
806 } 806 }
807 807
808 gfx::GLImage* Texture::GetLevelImage(GLint target, GLint level) const { 808 gfx::GLImage* Texture::GetLevelImage(GLint target, GLint level) const {
809 if (target != GL_TEXTURE_2D && target != GL_TEXTURE_EXTERNAL_OES &&
810 target != GL_TEXTURE_RECTANGLE_ARB) {
811 return NULL;
812 }
piman 2014/03/13 04:41:58 Won't that break cube maps?
no sievers 2014/03/13 20:50:15 I noticed recently that we actually don't support
813
809 size_t face_index = GLTargetToFaceIndex(target); 814 size_t face_index = GLTargetToFaceIndex(target);
810 if (level >= 0 && face_index < level_infos_.size() && 815 if (level >= 0 && face_index < level_infos_.size() &&
811 static_cast<size_t>(level) < level_infos_[face_index].size()) { 816 static_cast<size_t>(level) < level_infos_[face_index].size()) {
812 const LevelInfo& info = level_infos_[GLTargetToFaceIndex(target)][level]; 817 const LevelInfo& info = level_infos_[GLTargetToFaceIndex(target)][level];
813 if (info.target != 0) { 818 if (info.target != 0) {
814 return info.image.get(); 819 return info.image.get();
815 } 820 }
816 } 821 }
817 return 0; 822 return 0;
818 } 823 }
819 824
825 void Texture::OnWillModifyPixels() {
826 gfx::GLImage* image = GetLevelImage(target(), 0);
827 if (image)
828 image->WillModifyTexImage();
829 }
830
831 void Texture::OnDidModifyPixels() {
832 gfx::GLImage* image = GetLevelImage(target(), 0);
833 if (image)
834 image->DidModifyTexImage();
835 }
820 836
821 TextureRef::TextureRef(TextureManager* manager, 837 TextureRef::TextureRef(TextureManager* manager,
822 GLuint client_id, 838 GLuint client_id,
823 Texture* texture) 839 Texture* texture)
824 : manager_(manager), 840 : manager_(manager),
825 texture_(texture), 841 texture_(texture),
826 client_id_(client_id) { 842 client_id_(client_id) {
827 DCHECK(manager_); 843 DCHECK(manager_);
828 DCHECK(texture_); 844 DCHECK(texture_);
829 texture_->AddTextureRef(this); 845 texture_->AddTextureRef(this);
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
1493 } 1509 }
1494 1510
1495 ScopedTextureUploadTimer::~ScopedTextureUploadTimer() { 1511 ScopedTextureUploadTimer::~ScopedTextureUploadTimer() {
1496 texture_state_->texture_upload_count++; 1512 texture_state_->texture_upload_count++;
1497 texture_state_->total_texture_upload_time += 1513 texture_state_->total_texture_upload_time +=
1498 base::TimeTicks::HighResNow() - begin_time_; 1514 base::TimeTicks::HighResNow() - begin_time_;
1499 } 1515 }
1500 1516
1501 } // namespace gles2 1517 } // namespace gles2
1502 } // namespace gpu 1518 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698