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

Side by Side Diff: ui/compositor/test/in_process_context_factory.cc

Issue 2089753003: cc: Use the correct internal format for glCopyTexImage2D calls. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: copytextureformat: bufferqueue Created 4 years, 6 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 "ui/compositor/test/in_process_context_factory.h" 5 #include "ui/compositor/test/in_process_context_factory.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 void OnMirroringCompositorResized() override {} 43 void OnMirroringCompositorResized() override {}
44 void AddMirroringLayer(Layer* layer) override {} 44 void AddMirroringLayer(Layer* layer) override {}
45 void RemoveMirroringLayer(Layer* layer) override {} 45 void RemoveMirroringLayer(Layer* layer) override {}
46 }; 46 };
47 47
48 // An OutputSurface implementation that directly draws and swaps to an actual 48 // An OutputSurface implementation that directly draws and swaps to an actual
49 // GL surface. 49 // GL surface.
50 class DirectOutputSurface : public cc::OutputSurface { 50 class DirectOutputSurface : public cc::OutputSurface {
51 public: 51 public:
52 DirectOutputSurface( 52 DirectOutputSurface(
53 scoped_refptr<cc::ContextProvider> context_provider, 53 scoped_refptr<InProcessContextProvider> context_provider,
54 scoped_refptr<cc::ContextProvider> worker_context_provider) 54 scoped_refptr<InProcessContextProvider> worker_context_provider)
55 : cc::OutputSurface(std::move(context_provider), 55 : cc::OutputSurface(std::move(context_provider),
56 std::move(worker_context_provider), 56 std::move(worker_context_provider),
57 nullptr), 57 nullptr),
58 weak_ptr_factory_(this) {} 58 weak_ptr_factory_(this) {}
59 59
60 ~DirectOutputSurface() override {} 60 ~DirectOutputSurface() override {}
61 61
62 // cc::OutputSurface implementation 62 // cc::OutputSurface implementation.
63 bool BindToClient(cc::OutputSurfaceClient* client) override { 63 bool BindToClient(cc::OutputSurfaceClient* client) override {
64 if (!OutputSurface::BindToClient(client)) 64 if (!OutputSurface::BindToClient(client))
65 return false; 65 return false;
66 return true; 66 return true;
67 } 67 }
68 void SwapBuffers(cc::CompositorFrame* frame) override { 68 void SwapBuffers(cc::CompositorFrame* frame) override {
69 DCHECK(context_provider_.get()); 69 DCHECK(context_provider_.get());
70 DCHECK(frame->gl_frame_data); 70 DCHECK(frame->gl_frame_data);
71 if (frame->gl_frame_data->sub_buffer_rect == 71 if (frame->gl_frame_data->sub_buffer_rect ==
72 gfx::Rect(frame->gl_frame_data->size)) { 72 gfx::Rect(frame->gl_frame_data->size)) {
73 context_provider_->ContextSupport()->Swap(); 73 context_provider_->ContextSupport()->Swap();
74 } else { 74 } else {
75 context_provider_->ContextSupport()->PartialSwapBuffers( 75 context_provider_->ContextSupport()->PartialSwapBuffers(
76 frame->gl_frame_data->sub_buffer_rect); 76 frame->gl_frame_data->sub_buffer_rect);
77 } 77 }
78 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL(); 78 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL();
79 const uint64_t fence_sync = gl->InsertFenceSyncCHROMIUM(); 79 const uint64_t fence_sync = gl->InsertFenceSyncCHROMIUM();
80 gl->ShallowFlushCHROMIUM(); 80 gl->ShallowFlushCHROMIUM();
81 81
82 gpu::SyncToken sync_token; 82 gpu::SyncToken sync_token;
83 gl->GenUnverifiedSyncTokenCHROMIUM(fence_sync, sync_token.GetData()); 83 gl->GenUnverifiedSyncTokenCHROMIUM(fence_sync, sync_token.GetData());
84 84
85 context_provider_->ContextSupport()->SignalSyncToken( 85 context_provider_->ContextSupport()->SignalSyncToken(
86 sync_token, base::Bind(&OutputSurface::OnSwapBuffersComplete, 86 sync_token, base::Bind(&OutputSurface::OnSwapBuffersComplete,
87 weak_ptr_factory_.GetWeakPtr())); 87 weak_ptr_factory_.GetWeakPtr()));
88 client_->DidSwapBuffers(); 88 client_->DidSwapBuffers();
89 } 89 }
90 uint32_t GetFramebufferCopyTextureFormat() override {
91 auto* gl = static_cast<InProcessContextProvider*>(context_provider());
92 return gl->GetCopyTextureInternalFormat();
93 }
90 94
91 private: 95 private:
92 base::WeakPtrFactory<DirectOutputSurface> weak_ptr_factory_; 96 base::WeakPtrFactory<DirectOutputSurface> weak_ptr_factory_;
93 97
94 DISALLOW_COPY_AND_ASSIGN(DirectOutputSurface); 98 DISALLOW_COPY_AND_ASSIGN(DirectOutputSurface);
95 }; 99 };
96 100
97 } // namespace 101 } // namespace
98 102
99 InProcessContextFactory::InProcessContextFactory( 103 InProcessContextFactory::InProcessContextFactory(
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 } 259 }
256 260
257 void InProcessContextFactory::ResizeDisplay(ui::Compositor* compositor, 261 void InProcessContextFactory::ResizeDisplay(ui::Compositor* compositor,
258 const gfx::Size& size) { 262 const gfx::Size& size) {
259 if (!per_compositor_data_.count(compositor)) 263 if (!per_compositor_data_.count(compositor))
260 return; 264 return;
261 per_compositor_data_[compositor]->Resize(size); 265 per_compositor_data_[compositor]->Resize(size);
262 } 266 }
263 267
264 } // namespace ui 268 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698