summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorreveman <reveman@chromium.org>2015-10-26 13:27:47 -0700
committerCommit bot <commit-bot@chromium.org>2015-10-26 20:28:42 +0000
commiteb0fda21bf0fc43f591dfe2a6302fc014c425118 (patch)
treebb053cf4e4557a8c94910f48a4dbe118988e5a1f /gpu
parentb65cfea2a48ce74ac98e2b10006e9d8b868d4553 (diff)
downloadchromium_src-eb0fda21bf0fc43f591dfe2a6302fc014c425118.zip
chromium_src-eb0fda21bf0fc43f591dfe2a6302fc014c425118.tar.gz
chromium_src-eb0fda21bf0fc43f591dfe2a6302fc014c425118.tar.bz2
ui: Rename gfx::BufferUsage enum values and add BufferUsage::GPU_READ.
The problem with the current usage modes is that we currently use SCANOUT for anything that doesn't require CPU access. When importing a buffer we typically don't care about anything but having the GPU be able to read from it. SCANOUT is not a good description of that and currently means GPU read/write support. This patch attempts to make usage more explicit and it solves the use case where a buffer type can only provide GPU read and not GPU write support (e.g. SHM fallback). Here are the new usage modes: - GPU_READ - GPU_READ_WRITE - GPU_READ_CPU_READ_WRITE GPU_READ is useful when importing a buffer and all you care about is being able to use it for sampling and optionally scanout. GPU_READ_WRITE is useful for things like WebGL or GPU raster where we want the ability to write to the buffer using GL and potentially use it for scanout. GPU_READ_CPU_READ_WRITE is the usage mode that allows CPU access and is used for one-copy and zero-copy texture initialization. There's nothing preventing this mode from also supporting scanout. - GPU_READ_CPU_READ_WRITE_PERSISTENT This usage mode indicates that the data will be persistent across Unmap()/Map() calls but will likely become part of the normal GPU_READ_CPU_READ_WRITE usage once all buffer types support this. BUG=538325 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1420923005 Cr-Commit-Position: refs/heads/master@{#356108}
Diffstat (limited to 'gpu')
-rw-r--r--gpu/GLES2/extensions/CHROMIUM/CHROMIUM_gpu_memory_buffer_image.txt6
-rw-r--r--gpu/GLES2/gl2extchromium.h8
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py3
-rw-r--r--gpu/command_buffer/client/gles2_implementation.cc8
-rw-r--r--gpu/command_buffer/client/gles2_implementation_unittest.cc6
-rw-r--r--gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h10
-rw-r--r--gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h2
-rw-r--r--gpu/command_buffer/service/image_factory.cc14
-rw-r--r--gpu/command_buffer/service/image_factory.h4
-rw-r--r--gpu/command_buffer/service/in_process_command_buffer.cc2
-rw-r--r--gpu/command_buffer/tests/gl_manager.cc2
11 files changed, 16 insertions, 49 deletions
diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_gpu_memory_buffer_image.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_gpu_memory_buffer_image.txt
index 9f4d09d..d185894 100644
--- a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_gpu_memory_buffer_image.txt
+++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_gpu_memory_buffer_image.txt
@@ -29,8 +29,7 @@ New Tokens
Accepted by the <usage> parameter of CreateGpuMemoryBufferImageCHROMIUM:
- MAP_CHROMIUM 0x78F1
- SCANOUT_CHROMIUM 0x78F2
+ READ_WRITE_CHROMIUM 0x78F2
New Procedures and Functions
@@ -50,8 +49,7 @@ New Procedures and Functions
INVALID_ENUM is generated if <internalformat> is not one of
RGB or RGBA.
- INVALID_ENUM is generated if <usage> is not one of
- MAP_CHROMIUM or SCANOUT_CHROMIUM.
+ INVALID_ENUM is generated if <usage> is not READ_WRTIE_CHROMIUM.
Errors
diff --git a/gpu/GLES2/gl2extchromium.h b/gpu/GLES2/gl2extchromium.h
index a79b3e7..31958b3 100644
--- a/gpu/GLES2/gl2extchromium.h
+++ b/gpu/GLES2/gl2extchromium.h
@@ -111,12 +111,8 @@ typedef void (
#ifndef GL_CHROMIUM_gpu_memory_buffer_image
#define GL_CHROMIUM_gpu_memory_buffer_image 1
-#ifndef GL_MAP_CHROMIUM
-#define GL_MAP_CHROMIUM 0x78F1
-#endif
-
-#ifndef GL_SCANOUT_CHROMIUM
-#define GL_SCANOUT_CHROMIUM 0x78F2
+#ifndef GL_READ_WRITE_CHROMIUM
+#define GL_READ_WRITE_CHROMIUM 0x78F2
#endif
#ifndef GL_RGB_YUV_420_CHROMIUM
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 6c1a705..a1071ab 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -1861,8 +1861,7 @@ _NAMED_TYPE_INFO = {
'ImageUsage': {
'type': 'GLenum',
'valid': [
- 'GL_MAP_CHROMIUM',
- 'GL_SCANOUT_CHROMIUM'
+ 'GL_READ_WRITE_CHROMIUM',
],
},
'ValueBufferTarget': {
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
index 984c483..f0e4e9b 100644
--- a/gpu/command_buffer/client/gles2_implementation.cc
+++ b/gpu/command_buffer/client/gles2_implementation.cc
@@ -5484,13 +5484,7 @@ bool ValidImageFormat(GLenum internalformat,
}
bool ValidImageUsage(GLenum usage) {
- switch (usage) {
- case GL_MAP_CHROMIUM:
- case GL_SCANOUT_CHROMIUM:
- return true;
- default:
- return false;
- }
+ return usage == GL_READ_WRITE_CHROMIUM;
}
} // namespace
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest.cc b/gpu/command_buffer/client/gles2_implementation_unittest.cc
index 8ff533d..2eabd33 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest.cc
+++ b/gpu/command_buffer/client/gles2_implementation_unittest.cc
@@ -4111,7 +4111,8 @@ TEST_F(GLES2ImplementationManualInitTest, LoseContextOnOOM) {
GLsizei max = std::numeric_limits<GLsizei>::max();
EXPECT_CALL(*gpu_control_, CreateGpuMemoryBufferImage(max, max, _, _))
.WillOnce(Return(-1));
- gl_->CreateGpuMemoryBufferImageCHROMIUM(max, max, GL_RGBA, GL_MAP_CHROMIUM);
+ gl_->CreateGpuMemoryBufferImageCHROMIUM(max, max, GL_RGBA,
+ GL_READ_WRITE_CHROMIUM);
// The context should be lost.
Cmds expected;
expected.cmd.Init(GL_GUILTY_CONTEXT_RESET_ARB, GL_UNKNOWN_CONTEXT_RESET_ARB);
@@ -4129,7 +4130,8 @@ TEST_F(GLES2ImplementationManualInitTest, NoLoseContextOnOOM) {
GLsizei max = std::numeric_limits<GLsizei>::max();
EXPECT_CALL(*gpu_control_, CreateGpuMemoryBufferImage(max, max, _, _))
.WillOnce(Return(-1));
- gl_->CreateGpuMemoryBufferImageCHROMIUM(max, max, GL_RGBA, GL_MAP_CHROMIUM);
+ gl_->CreateGpuMemoryBufferImageCHROMIUM(max, max, GL_RGBA,
+ GL_READ_WRITE_CHROMIUM);
// The context should not be lost.
EXPECT_TRUE(NoCommandsWritten());
}
diff --git a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
index 82c83fa..ba69729 100644
--- a/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h
@@ -97,7 +97,7 @@ static const GLES2Util::EnumToString enum_to_string_table[] = {
0x9500, "GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL",
},
{
- 0x78F2, "GL_SCANOUT_CHROMIUM",
+ 0x78F2, "GL_READ_WRITE_CHROMIUM",
},
{
0x9138, "GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG",
@@ -1906,7 +1906,7 @@ static const GLES2Util::EnumToString enum_to_string_table[] = {
0x84CA, "GL_TEXTURE10",
},
{
- 0x78F1, "GL_MAP_CHROMIUM",
+ 0x0BA7, "GL_PATH_PROJECTION_MATRIX_CHROMIUM",
},
{
0x84CF, "GL_TEXTURE15",
@@ -2752,9 +2752,6 @@ static const GLES2Util::EnumToString enum_to_string_table[] = {
0x8A2A, "GL_UNIFORM_BUFFER_SIZE",
},
{
- 0x0BA7, "GL_PATH_PROJECTION_MATRIX_CHROMIUM",
- },
- {
0x0DE1, "GL_TEXTURE_2D",
},
{
@@ -3925,8 +3922,7 @@ std::string GLES2Util::GetStringImageInternalFormat(uint32_t value) {
std::string GLES2Util::GetStringImageUsage(uint32_t value) {
static const EnumToString string_table[] = {
- {GL_MAP_CHROMIUM, "GL_MAP_CHROMIUM"},
- {GL_SCANOUT_CHROMIUM, "GL_SCANOUT_CHROMIUM"},
+ {GL_READ_WRITE_CHROMIUM, "GL_READ_WRITE_CHROMIUM"},
};
return GLES2Util::GetQualifiedEnumString(string_table,
arraysize(string_table), value);
diff --git a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
index aa05581..4f75b7d 100644
--- a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
@@ -367,7 +367,7 @@ static const GLenum valid_image_internal_format_table[] = {
};
static const GLenum valid_image_usage_table[] = {
- GL_MAP_CHROMIUM, GL_SCANOUT_CHROMIUM,
+ GL_READ_WRITE_CHROMIUM,
};
static const GLenum valid_index_type_table[] = {
diff --git a/gpu/command_buffer/service/image_factory.cc b/gpu/command_buffer/service/image_factory.cc
index 2a1257e..bcfd121 100644
--- a/gpu/command_buffer/service/image_factory.cc
+++ b/gpu/command_buffer/service/image_factory.cc
@@ -48,20 +48,6 @@ gfx::BufferFormat ImageFactory::DefaultBufferFormatForImageFormat(
}
// static
-gfx::BufferUsage ImageFactory::ImageUsageToGpuMemoryBufferUsage(
- unsigned usage) {
- switch (usage) {
- case GL_MAP_CHROMIUM:
- return gfx::BufferUsage::MAP;
- case GL_SCANOUT_CHROMIUM:
- return gfx::BufferUsage::SCANOUT;
- default:
- NOTREACHED();
- return gfx::BufferUsage::MAP;
- }
-}
-
-// static
bool ImageFactory::IsImageFormatCompatibleWithGpuMemoryBufferFormat(
unsigned internalformat,
gfx::BufferFormat format) {
diff --git a/gpu/command_buffer/service/image_factory.h b/gpu/command_buffer/service/image_factory.h
index c805db0..3746d56 100644
--- a/gpu/command_buffer/service/image_factory.h
+++ b/gpu/command_buffer/service/image_factory.h
@@ -26,10 +26,6 @@ class GPU_EXPORT ImageFactory {
static gfx::BufferFormat DefaultBufferFormatForImageFormat(
unsigned internalformat);
- // Returns a valid GpuMemoryBuffer usage given a valid usage as defined by
- // CHROMIUM_gpu_memory_buffer_image.
- static gfx::BufferUsage ImageUsageToGpuMemoryBufferUsage(unsigned usage);
-
// Returns true if |internalformat| is compatible with |format|.
static bool IsImageFormatCompatibleWithGpuMemoryBufferFormat(
unsigned internalformat,
diff --git a/gpu/command_buffer/service/in_process_command_buffer.cc b/gpu/command_buffer/service/in_process_command_buffer.cc
index 51b0b0a..5493054 100644
--- a/gpu/command_buffer/service/in_process_command_buffer.cc
+++ b/gpu/command_buffer/service/in_process_command_buffer.cc
@@ -778,7 +778,7 @@ int32 InProcessCommandBuffer::CreateGpuMemoryBufferImage(
gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer(
gfx::Size(width, height),
gpu::ImageFactory::DefaultBufferFormatForImageFormat(internalformat),
- gpu::ImageFactory::ImageUsageToGpuMemoryBufferUsage(usage)));
+ gfx::BufferUsage::GPU_READ_WRITE));
if (!buffer)
return -1;
diff --git a/gpu/command_buffer/tests/gl_manager.cc b/gpu/command_buffer/tests/gl_manager.cc
index 9bb2a68..4daa466 100644
--- a/gpu/command_buffer/tests/gl_manager.cc
+++ b/gpu/command_buffer/tests/gl_manager.cc
@@ -450,7 +450,7 @@ int32 GLManager::CreateGpuMemoryBufferImage(size_t width,
size_t height,
unsigned internalformat,
unsigned usage) {
- DCHECK_EQ(usage, static_cast<unsigned>(GL_MAP_CHROMIUM));
+ DCHECK_EQ(usage, static_cast<unsigned>(GL_READ_WRITE_CHROMIUM));
scoped_ptr<gfx::GpuMemoryBuffer> buffer = GLManager::CreateGpuMemoryBuffer(
gfx::Size(width, height), gfx::BufferFormat::RGBA_8888);
return CreateImage(buffer->AsClientBuffer(), width, height, internalformat);