| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef GPU_IPC_COMMON_SURFACE_HANDLE_H_ |
| #define GPU_IPC_COMMON_SURFACE_HANDLE_H_ |
| |
| #include <stdint.h> |
| |
| #include "build/build_config.h" |
| |
| #if (defined(OS_MACOSX) || defined(OS_WIN) || defined(USE_X11) || \ |
| defined(USE_OZONE)) && \ |
| !defined(OS_NACL) |
| #include "ui/gfx/native_widget_types.h" |
| #define GPU_SURFACE_HANDLE_IS_ACCELERATED_WINDOW |
| #endif |
| |
| namespace gpu { |
| |
| // SurfaceHandle is the native type used to reference a native surface in the |
| // GPU process so that we can create "view" contexts on it. |
| |
| // On Windows, Mac, Linux and Chrome OS, we can use a AcceleratedWidget across |
| // processes, so SurfaceHandle is exactly that. |
| // On Android, there is no type we can directly access across processes, so we |
| // go through the GpuSurfaceTracker, and SurfaceHandle is a (scalar) handle |
| // generated by that. |
| // On NaCl, we don't have native surfaces per se, but we need SurfaceHandle to |
| // be defined, because some APIs that use it are referenced there. |
| // |
| // TODO(fuchsia): Figure out the right approach for Fuchsia. |
| #if defined(GPU_SURFACE_HANDLE_IS_ACCELERATED_WINDOW) |
| using SurfaceHandle = gfx::AcceleratedWidget; |
| constexpr SurfaceHandle kNullSurfaceHandle = gfx::kNullAcceleratedWidget; |
| #elif defined(OS_ANDROID) || defined(OS_NACL) || defined(OS_FUCHSIA) |
| using SurfaceHandle = int32_t; |
| constexpr SurfaceHandle kNullSurfaceHandle = 0; |
| #else |
| #error Platform not supported. |
| #endif |
| |
| } // namespace gpu |
| |
| #endif // GPU_IPC_COMMON_SURFACE_HANDLE_H_ |