Skip to content

Commit

Permalink
ui: allow R_8 for CAMERA_READ_WRITE on Chrome OS
Browse files Browse the repository at this point in the history
Add a new CAMERA_READ_WRITE gfx::BufferUsage, which is used to specify
buffer usage capable of CPU read/write and camera read/write.

The R_8 format is used by the Chrome OS camera HAL as the underlying
format for the generic blob format.  Blob format is usually used to
store the picture taken by the camera in JPEG format.

BUG=832772

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: Ibd8d4e193ced3c7d2a6284a8576f02a40ede74b3
Reviewed-on: https://chromium-review.googlesource.com/1018922
Commit-Queue: Ricky Liang <jcliang@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Daniele Castagna <dcastagna@chromium.org>
Reviewed-by: David Reveman <reveman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#554378}
  • Loading branch information
Ricky Liang authored and Commit Bot committed Apr 27, 2018
1 parent 366f1bc commit 59bde77
Show file tree
Hide file tree
Showing 13 changed files with 32 additions and 0 deletions.
2 changes: 2 additions & 0 deletions content/browser/gpu/gpu_internals_ui.cc
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,8 @@ const char* BufferUsageToString(gfx::BufferUsage usage) {
return "SCANOUT";
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
return "SCANOUT_CAMERA_READ_WRITE";
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
return "CAMERA_AND_CPU_READ_WRITE";
case gfx::BufferUsage::SCANOUT_CPU_READ_WRITE:
return "SCANOUT_CPU_READ_WRITE";
case gfx::BufferUsage::SCANOUT_VDA_WRITE:
Expand Down
1 change: 1 addition & 0 deletions gpu/command_buffer/build_raster_cmd_buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@
],
'invalid': [
'gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE',
'gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE',
],
},
'viz::ResourceFormat': {
Expand Down
1 change: 1 addition & 0 deletions gpu/ipc/common/gpu_memory_buffer_impl_io_surface.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ uint32_t LockFlags(gfx::BufferUsage usage) {
case gfx::BufferUsage::GPU_READ:
case gfx::BufferUsage::SCANOUT:
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
case gfx::BufferUsage::SCANOUT_CPU_READ_WRITE:
case gfx::BufferUsage::SCANOUT_VDA_WRITE:
case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT:
Expand Down
1 change: 1 addition & 0 deletions gpu/ipc/common/gpu_memory_buffer_impl_shared_memory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ bool GpuMemoryBufferImplSharedMemory::IsUsageSupported(gfx::BufferUsage usage) {
return true;
case gfx::BufferUsage::SCANOUT:
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
case gfx::BufferUsage::SCANOUT_VDA_WRITE:
return false;
}
Expand Down
1 change: 1 addition & 0 deletions gpu/ipc/common/gpu_memory_buffer_impl_test_template.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ TYPED_TEST_P(GpuMemoryBufferImplTest, CreateFromHandle) {
gfx::BufferUsage::GPU_READ,
gfx::BufferUsage::SCANOUT,
gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE,
gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE,
gfx::BufferUsage::SCANOUT_CPU_READ_WRITE,
gfx::BufferUsage::SCANOUT_VDA_WRITE,
gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
Expand Down
3 changes: 3 additions & 0 deletions gpu/ipc/common/gpu_memory_buffer_support.cc
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferConfigurationSupported(
format == gfx::BufferFormat::YUV_420_BIPLANAR;
case gfx::BufferUsage::SCANOUT_VDA_WRITE:
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
return false;
}
NOTREACHED();
Expand All @@ -106,6 +107,7 @@ bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferConfigurationSupported(
case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT:
case gfx::BufferUsage::SCANOUT_VDA_WRITE:
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
return false;
}
NOTREACHED();
Expand All @@ -125,6 +127,7 @@ bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferConfigurationSupported(
case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT:
case gfx::BufferUsage::SCANOUT_VDA_WRITE:
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
return false;
default:
NOTREACHED();
Expand Down
2 changes: 2 additions & 0 deletions gpu/ipc/host/gpu_memory_buffer_support.cc
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ GpuMemoryBufferConfigurationSet GetNativeGpuMemoryBufferConfigurations(
gfx::BufferUsage::GPU_READ,
gfx::BufferUsage::SCANOUT,
gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE,
gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE,
gfx::BufferUsage::SCANOUT_CPU_READ_WRITE,
gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT};
Expand All @@ -82,6 +83,7 @@ GpuMemoryBufferConfigurationSet GetNativeGpuMemoryBufferConfigurations(
const gfx::BufferUsage kGPUReadWriteUsages[] = {
gfx::BufferUsage::GPU_READ, gfx::BufferUsage::SCANOUT,
gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE,
gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE,
gfx::BufferUsage::SCANOUT_CPU_READ_WRITE,
gfx::BufferUsage::SCANOUT_VDA_WRITE};
for (auto format : kGPUReadWriteFormats) {
Expand Down
1 change: 1 addition & 0 deletions gpu/ipc/service/gpu_memory_buffer_factory_test_template.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ TYPED_TEST_P(GpuMemoryBufferFactoryTest, CreateGpuMemoryBuffer) {
gfx::BufferUsage::GPU_READ,
gfx::BufferUsage::SCANOUT,
gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE,
gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE,
gfx::BufferUsage::SCANOUT_CPU_READ_WRITE,
gfx::BufferUsage::SCANOUT_VDA_WRITE,
gfx::BufferUsage::GPU_READ_CPU_READ_WRITE,
Expand Down
1 change: 1 addition & 0 deletions ui/gfx/buffer_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ enum class BufferUsage {
SCANOUT,
// SCANOUT_CAMERA_READ_WRITE implies CPU_READ_WRITE.
SCANOUT_CAMERA_READ_WRITE,
CAMERA_AND_CPU_READ_WRITE,
SCANOUT_CPU_READ_WRITE,
SCANOUT_VDA_WRITE,
GPU_READ_CPU_READ_WRITE,
Expand Down
9 changes: 9 additions & 0 deletions ui/gfx/linux/client_native_pixmap_factory_dmabuf.cc
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,14 @@ class ClientNativePixmapFactoryDmabuf : public ClientNativePixmapFactory {
return format == gfx::BufferFormat::YUV_420_BIPLANAR;
#else
return false;
#endif
}
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE: {
#if defined(OS_CHROMEOS)
// R_8 is used as the underlying pixel format for BLOB buffers.
return format == gfx::BufferFormat::R_8;
#else
return false;
#endif
}
}
Expand All @@ -124,6 +132,7 @@ class ClientNativePixmapFactoryDmabuf : public ClientNativePixmapFactory {
case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE:
case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT:
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
#if defined(OS_CHROMEOS)
return ClientNativePixmapDmaBuf::ImportFromDmabuf(handle, size);
#else
Expand Down
1 change: 1 addition & 0 deletions ui/gfx/mojo/buffer_types.mojom
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ enum BufferUsage {
GPU_READ,
SCANOUT,
SCANOUT_CAMERA_READ_WRITE,
CAMERA_AND_CPU_READ_WRITE,
SCANOUT_CPU_READ_WRITE,
SCANOUT_VDA_WRITE,
GPU_READ_CPU_READ_WRITE,
Expand Down
5 changes: 5 additions & 0 deletions ui/gfx/mojo/buffer_types_struct_traits.h
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ struct EnumTraits<gfx::mojom::BufferUsage, gfx::BufferUsage> {
return gfx::mojom::BufferUsage::SCANOUT;
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
return gfx::mojom::BufferUsage::SCANOUT_CAMERA_READ_WRITE;
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
return gfx::mojom::BufferUsage::CAMERA_AND_CPU_READ_WRITE;
case gfx::BufferUsage::SCANOUT_CPU_READ_WRITE:
return gfx::mojom::BufferUsage::SCANOUT_CPU_READ_WRITE;
case gfx::BufferUsage::SCANOUT_VDA_WRITE:
Expand All @@ -163,6 +165,9 @@ struct EnumTraits<gfx::mojom::BufferUsage, gfx::BufferUsage> {
case gfx::mojom::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
*out = gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE;
return true;
case gfx::mojom::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
*out = gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE;
return true;
case gfx::mojom::BufferUsage::SCANOUT_CPU_READ_WRITE:
*out = gfx::BufferUsage::SCANOUT_CPU_READ_WRITE;
return true;
Expand Down
4 changes: 4 additions & 0 deletions ui/ozone/platform/drm/gpu/drm_thread.cc
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ void DrmThread::CreateBuffer(gfx::AcceleratedWidget widget,
flags = GBM_BO_USE_LINEAR | GBM_BO_USE_CAMERA_WRITE | GBM_BO_USE_SCANOUT |
GBM_BO_USE_TEXTURING;
break;
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
flags =
GBM_BO_USE_LINEAR | GBM_BO_USE_CAMERA_WRITE | GBM_BO_USE_TEXTURING;
break;
case gfx::BufferUsage::SCANOUT_CPU_READ_WRITE:
flags = GBM_BO_USE_LINEAR | GBM_BO_USE_SCANOUT | GBM_BO_USE_TEXTURING;
break;
Expand Down

0 comments on commit 59bde77

Please sign in to comment.