Index: gpu/ipc/host/gpu_memory_buffer_support.cc |
diff --git a/gpu/ipc/host/gpu_memory_buffer_support.cc b/gpu/ipc/host/gpu_memory_buffer_support.cc |
index 566a9a3a8522d2d2c605f2d0d700fab5366aaa4c..9c83048c77f74bd4c8f6bf3f129caf7f1c40322e 100644 |
--- a/gpu/ipc/host/gpu_memory_buffer_support.cc |
+++ b/gpu/ipc/host/gpu_memory_buffer_support.cc |
@@ -9,6 +9,7 @@ |
#include "build/build_config.h" |
#include "gpu/ipc/common/gpu_memory_buffer_support.h" |
#include "gpu/ipc/host/gpu_switches.h" |
+#include "ui/gl/gl_bindings.h" |
#include "ui/gl/gl_switches.h" |
namespace gpu { |
@@ -82,4 +83,32 @@ GpuMemoryBufferConfigurationSet GetNativeGpuMemoryBufferConfigurations() { |
return configurations; |
} |
+uint32_t GetImageTextureTarget(gfx::BufferFormat format, |
+ gfx::BufferUsage usage) { |
+ GpuMemoryBufferConfigurationSet native_configurations = |
+ GetNativeGpuMemoryBufferConfigurations(); |
+ if (native_configurations.find(std::make_pair(format, usage)) == |
+ native_configurations.end()) { |
+ return GL_TEXTURE_2D; |
+ } |
+ |
+ switch (GetNativeGpuMemoryBufferType()) { |
+ case gfx::OZONE_NATIVE_PIXMAP: |
+ // GPU memory buffers that are shared with the GL using EGLImages |
+ // require TEXTURE_EXTERNAL_OES. |
+ return GL_TEXTURE_EXTERNAL_OES; |
+ case gfx::IO_SURFACE_BUFFER: |
+ // IOSurface backed images require GL_TEXTURE_RECTANGLE_ARB. |
+ return GL_TEXTURE_RECTANGLE_ARB; |
+ case gfx::SHARED_MEMORY_BUFFER: |
+ return GL_TEXTURE_2D; |
+ case gfx::EMPTY_BUFFER: |
+ NOTREACHED(); |
+ return GL_TEXTURE_2D; |
+ } |
+ |
+ NOTREACHED(); |
+ return GL_TEXTURE_2D; |
+} |
+ |
} // namespace gpu |