| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/ozone/platform/drm/gpu/drm_thread.h" | 5 #include "ui/ozone/platform/drm/gpu/drm_thread.h" |
| 6 | 6 |
| 7 #include <gbm.h> | 7 #include <gbm.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 | 107 |
| 108 void DrmThread::CreateBuffer(gfx::AcceleratedWidget widget, | 108 void DrmThread::CreateBuffer(gfx::AcceleratedWidget widget, |
| 109 const gfx::Size& size, | 109 const gfx::Size& size, |
| 110 gfx::BufferFormat format, | 110 gfx::BufferFormat format, |
| 111 gfx::BufferUsage usage, | 111 gfx::BufferUsage usage, |
| 112 scoped_refptr<GbmBuffer>* buffer) { | 112 scoped_refptr<GbmBuffer>* buffer) { |
| 113 scoped_refptr<GbmDevice> gbm = | 113 scoped_refptr<GbmDevice> gbm = |
| 114 static_cast<GbmDevice*>(device_manager_->GetDrmDevice(widget).get()); | 114 static_cast<GbmDevice*>(device_manager_->GetDrmDevice(widget).get()); |
| 115 DCHECK(gbm); | 115 DCHECK(gbm); |
| 116 | 116 |
| 117 uint32_t flags = 0; | 117 uint32_t flags = GetGbmFlagsFromBufferUsage(usage); |
| 118 switch (usage) { | |
| 119 case gfx::BufferUsage::GPU_READ: | |
| 120 flags = GBM_BO_USE_TEXTURING; | |
| 121 break; | |
| 122 case gfx::BufferUsage::SCANOUT: | |
| 123 flags = GBM_BO_USE_SCANOUT; | |
| 124 break; | |
| 125 case gfx::BufferUsage::SCANOUT_CPU_READ_WRITE: | |
| 126 flags = GBM_BO_USE_SCANOUT | GBM_BO_USE_LINEAR; | |
| 127 break; | |
| 128 case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE: | |
| 129 case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT: | |
| 130 flags = GBM_BO_USE_TEXTURING | GBM_BO_USE_LINEAR; | |
| 131 break; | |
| 132 } | |
| 133 | |
| 134 DrmWindow* window = screen_manager_->GetWindow(widget); | 118 DrmWindow* window = screen_manager_->GetWindow(widget); |
| 135 std::vector<uint64_t> modifiers; | 119 std::vector<uint64_t> modifiers; |
| 136 | 120 |
| 137 uint32_t fourcc_format = ui::GetFourCCFormatFromBufferFormat(format); | 121 uint32_t fourcc_format = ui::GetFourCCFormatFromBufferFormat(format); |
| 138 | 122 |
| 139 // TODO(hoegsberg): We shouldn't really get here without a window, | 123 // TODO(hoegsberg): We shouldn't really get here without a window, |
| 140 // but it happens during init. Need to figure out why. | 124 // but it happens during init. Need to figure out why. |
| 141 if (window && window->GetController()) | 125 if (window && window->GetController()) |
| 142 modifiers = window->GetController()->GetFormatModifiers(fourcc_format); | 126 modifiers = window->GetController()->GetFormatModifiers(fourcc_format); |
| 143 | 127 |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 correction_matrix); | 283 correction_matrix); |
| 300 } | 284 } |
| 301 | 285 |
| 302 // DrmThread requires a BindingSet instead of a simple Binding because it will | 286 // DrmThread requires a BindingSet instead of a simple Binding because it will |
| 303 // be used from multiple threads in multiple processes. | 287 // be used from multiple threads in multiple processes. |
| 304 void DrmThread::AddBinding(ozone::mojom::DeviceCursorRequest request) { | 288 void DrmThread::AddBinding(ozone::mojom::DeviceCursorRequest request) { |
| 305 bindings_.AddBinding(this, std::move(request)); | 289 bindings_.AddBinding(this, std::move(request)); |
| 306 } | 290 } |
| 307 | 291 |
| 308 } // namespace ui | 292 } // namespace ui |
| OLD | NEW |