summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-02 19:11:44 +0000
committerrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-02 19:11:44 +0000
commit183b60aae43ff5ef5556e7debd9480a96ce5dd46 (patch)
tree4b9910ef4399051b5c2717133094ff7719f32932 /gpu
parent22d63ebbd65ee881edf1143f4a2e4f38f3f4ea39 (diff)
downloadchromium_src-183b60aae43ff5ef5556e7debd9480a96ce5dd46.zip
chromium_src-183b60aae43ff5ef5556e7debd9480a96ce5dd46.tar.gz
chromium_src-183b60aae43ff5ef5556e7debd9480a96ce5dd46.tar.bz2
GPU: Buld most of the gpu as a single DLL.
BUG=114261 TEST=none Review URL: https://chromiumcodereview.appspot.com/9514020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124702 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r--gpu/DEPS1
-rw-r--r--gpu/command_buffer/client/cmd_buffer_helper.h3
-rw-r--r--gpu/command_buffer/client/fenced_allocator.h6
-rw-r--r--gpu/command_buffer/client/gles2_impl_export.h26
-rw-r--r--gpu/command_buffer/client/gles2_implementation.h3
-rw-r--r--gpu/command_buffer/client/mapped_memory.h7
-rw-r--r--gpu/command_buffer/client/ring_buffer.h4
-rw-r--r--gpu/command_buffer/client/transfer_buffer.h7
-rw-r--r--gpu/command_buffer/common/command_buffer.h3
-rw-r--r--gpu/command_buffer/common/id_allocator.h7
-rw-r--r--gpu/command_buffer/service/buffer_manager.h5
-rw-r--r--gpu/command_buffer/service/cmd_parser.h5
-rw-r--r--gpu/command_buffer/service/command_buffer_service.h2
-rw-r--r--gpu/command_buffer/service/common_decoder.h7
-rw-r--r--gpu/command_buffer/service/context_group.h3
-rw-r--r--gpu/command_buffer/service/feature_info.h3
-rw-r--r--gpu/command_buffer/service/framebuffer_manager.h7
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder.h2
-rw-r--r--gpu/command_buffer/service/gpu_scheduler.h7
-rw-r--r--gpu/command_buffer/service/id_manager.h5
-rw-r--r--gpu/command_buffer/service/program_manager.h5
-rw-r--r--gpu/command_buffer/service/renderbuffer_manager.h6
-rw-r--r--gpu/command_buffer/service/shader_manager.h7
-rw-r--r--gpu/command_buffer/service/shader_translator.h6
-rw-r--r--gpu/command_buffer/service/texture_manager.h5
-rw-r--r--gpu/command_buffer/service/vertex_attrib_manager.h5
-rw-r--r--gpu/demos/demos.gyp1
-rw-r--r--gpu/gles2_conform_support/gles2_conform_support.gyp2
-rw-r--r--gpu/gles2_implementation.gypi20
-rw-r--r--gpu/gpu.gyp360
-rw-r--r--gpu/gpu_common.gypi212
-rw-r--r--gpu/gpu_export.h26
-rw-r--r--gpu/gpu_ipc.gypi3
-rw-r--r--gpu/ipc/gpu_command_buffer_traits.h5
34 files changed, 474 insertions, 302 deletions
diff --git a/gpu/DEPS b/gpu/DEPS
index e12e724..8e88544 100644
--- a/gpu/DEPS
+++ b/gpu/DEPS
@@ -1,5 +1,6 @@
include_rules = [
"+third_party/angle",
+ "+../../gpu_export.h",
"+../command_buffer",
"+../client",
"+../common",
diff --git a/gpu/command_buffer/client/cmd_buffer_helper.h b/gpu/command_buffer/client/cmd_buffer_helper.h
index bc3fd56..8a7e122 100644
--- a/gpu/command_buffer/client/cmd_buffer_helper.h
+++ b/gpu/command_buffer/client/cmd_buffer_helper.h
@@ -10,6 +10,7 @@
#include <string.h>
#include <time.h>
+#include "../../gpu_export.h"
#include "../common/logging.h"
#include "../common/constants.h"
#include "../common/cmd_buffer_common.h"
@@ -32,7 +33,7 @@ namespace gpu {
//
// helper.WaitForToken(token); // this doesn't return until the first two
// // commands have been executed.
-class CommandBufferHelper {
+class GPU_EXPORT CommandBufferHelper {
public:
explicit CommandBufferHelper(CommandBuffer* command_buffer);
virtual ~CommandBufferHelper();
diff --git a/gpu/command_buffer/client/fenced_allocator.h b/gpu/command_buffer/client/fenced_allocator.h
index 74cdf33..3ccad45 100644
--- a/gpu/command_buffer/client/fenced_allocator.h
+++ b/gpu/command_buffer/client/fenced_allocator.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -8,6 +8,8 @@
#define GPU_COMMAND_BUFFER_CLIENT_FENCED_ALLOCATOR_H_
#include <vector>
+
+#include "../../gpu_export.h"
#include "../common/logging.h"
#include "../common/types.h"
@@ -24,7 +26,7 @@ class CommandBufferHelper;
// environment which is multi-process, this class isn't "thread safe", because
// it isn't meant to be shared across modules. It is thread-compatible though
// (see http://www.corp.google.com/eng/doc/cpp_primer.html#thread_safety).
-class FencedAllocator {
+class GPU_EXPORT FencedAllocator {
public:
typedef unsigned int Offset;
// Invalid offset, returned by Alloc in case of failure.
diff --git a/gpu/command_buffer/client/gles2_impl_export.h b/gpu/command_buffer/client/gles2_impl_export.h
new file mode 100644
index 0000000..9bf1871
--- /dev/null
+++ b/gpu/command_buffer/client/gles2_impl_export.h
@@ -0,0 +1,26 @@
+// Copyright (c) 2012 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_COMMAND_BUFFER_CLIENT_GLES2_IMPL_EXPORT_H_
+#define GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPL_EXPORT_H_
+#pragma once
+
+#if defined(COMPONENT_BUILD)
+#if defined(WIN32)
+
+#if defined(GLES2_IMPL_IMPLEMENTATION)
+#define GLES2_IMPL_EXPORT __declspec(dllexport)
+#else
+#define GLES2_IMPL_EXPORT __declspec(dllimport)
+#endif // defined(GLES2_IMPL_IMPLEMENTATION)
+
+#else // defined(WIN32)
+#define GLES2_IMPL_EXPORT __attribute__((visibility("default")))
+#endif
+
+#else // defined(COMPONENT_BUILD)
+#define GLES2_IMPL_EXPORT
+#endif
+
+#endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPL_EXPORT_H_
diff --git a/gpu/command_buffer/client/gles2_implementation.h b/gpu/command_buffer/client/gles2_implementation.h
index 97622ea..dbdb271 100644
--- a/gpu/command_buffer/client/gles2_implementation.h
+++ b/gpu/command_buffer/client/gles2_implementation.h
@@ -17,6 +17,7 @@
#include "../common/scoped_ptr.h"
#include "../client/gles2_cmd_helper.h"
#include "../client/ring_buffer.h"
+#include "gles2_impl_export.h"
#if !defined(NDEBUG) && !defined(__native_client__) && !defined(GLES2_CONFORMANCE_TESTS) // NOLINT
#if defined(GLES2_INLINE_OPTIMIZATION)
@@ -104,7 +105,7 @@ class IdHandlerInterface {
// be had by changing your code to use command buffers directly by using the
// GLES2CmdHelper but that entails changing your code to use and deal with
// shared memory and synchronization issues.
-class GLES2Implementation {
+class GLES2_IMPL_EXPORT GLES2Implementation {
public:
// Stores client side cached GL state.
struct GLState {
diff --git a/gpu/command_buffer/client/mapped_memory.h b/gpu/command_buffer/client/mapped_memory.h
index f38470f..93390a7 100644
--- a/gpu/command_buffer/client/mapped_memory.h
+++ b/gpu/command_buffer/client/mapped_memory.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -7,6 +7,7 @@
#include <vector>
+#include "../../gpu_export.h"
#include "../common/types.h"
#include "../client/fenced_allocator.h"
#include "../common/buffer.h"
@@ -16,7 +17,7 @@ namespace gpu {
class CommandBufferHelper;
// Manages a shared memory segment.
-class MemoryChunk {
+class GPU_EXPORT MemoryChunk {
public:
MemoryChunk(int32 shm_id, gpu::Buffer shm, CommandBufferHelper* helper);
@@ -104,7 +105,7 @@ class MemoryChunk {
};
// Manages MemoryChucks.
-class MappedMemoryManager {
+class GPU_EXPORT MappedMemoryManager {
public:
explicit MappedMemoryManager(CommandBufferHelper* helper);
diff --git a/gpu/command_buffer/client/ring_buffer.h b/gpu/command_buffer/client/ring_buffer.h
index 582d4ee..c08cccd 100644
--- a/gpu/command_buffer/client/ring_buffer.h
+++ b/gpu/command_buffer/client/ring_buffer.h
@@ -8,6 +8,8 @@
#define GPU_COMMAND_BUFFER_CLIENT_RING_BUFFER_H_
#include <deque>
+
+#include "../../gpu_export.h"
#include "../common/logging.h"
#include "../common/types.h"
@@ -17,7 +19,7 @@ class CommandBufferHelper;
// RingBuffer manages a piece of memory as a ring buffer. Memory is allocated
// with Alloc and then a is freed pending a token with FreePendingToken. Old
// allocations must not be kept past new allocations.
-class RingBuffer {
+class GPU_EXPORT RingBuffer {
public:
typedef unsigned int Offset;
diff --git a/gpu/command_buffer/client/transfer_buffer.h b/gpu/command_buffer/client/transfer_buffer.h
index b3a58d2d..0921b74 100644
--- a/gpu/command_buffer/client/transfer_buffer.h
+++ b/gpu/command_buffer/client/transfer_buffer.h
@@ -5,6 +5,7 @@
#ifndef GPU_COMMAND_BUFFER_CLIENT_TRANSFER_BUFFER_H_
#define GPU_COMMAND_BUFFER_CLIENT_TRANSFER_BUFFER_H_
+#include "../../gpu_export.h"
#include "../common/buffer.h"
#include "../common/compiler_specific.h"
#include "../common/gles2_cmd_utils.h"
@@ -50,7 +51,7 @@ class AlignedRingBuffer : public RingBufferWrapper {
};
// Interface for managing the transfer buffer.
-class TransferBufferInterface {
+class GPU_EXPORT TransferBufferInterface {
public:
TransferBufferInterface() { }
virtual ~TransferBufferInterface() { }
@@ -84,7 +85,7 @@ class TransferBufferInterface {
};
// Class that manages the transfer buffer.
-class TransferBuffer : public TransferBufferInterface {
+class GPU_EXPORT TransferBuffer : public TransferBufferInterface {
public:
TransferBuffer(CommandBufferHelper* helper);
virtual ~TransferBuffer();
@@ -156,7 +157,7 @@ class TransferBuffer : public TransferBufferInterface {
};
// A class that will manage the lifetime of a transferbuffer allocation.
-class ScopedTransferBufferPtr {
+class GPU_EXPORT ScopedTransferBufferPtr {
public:
ScopedTransferBufferPtr(
unsigned int size,
diff --git a/gpu/command_buffer/common/command_buffer.h b/gpu/command_buffer/common/command_buffer.h
index ee8fe06..6a2da68 100644
--- a/gpu/command_buffer/common/command_buffer.h
+++ b/gpu/command_buffer/common/command_buffer.h
@@ -5,6 +5,7 @@
#ifndef GPU_COMMAND_BUFFER_COMMON_COMMAND_BUFFER_H_
#define GPU_COMMAND_BUFFER_COMMON_COMMAND_BUFFER_H_
+#include "../../gpu_export.h"
#include "../common/buffer.h"
#include "../common/constants.h"
@@ -15,7 +16,7 @@ class SharedMemory;
namespace gpu {
// Common interface for CommandBuffer implementations.
-class CommandBuffer {
+class GPU_EXPORT CommandBuffer {
public:
enum {
kMaxCommandBufferSize = 4 * 1024 * 1024
diff --git a/gpu/command_buffer/common/id_allocator.h b/gpu/command_buffer/common/id_allocator.h
index de2d658..7e25dbb 100644
--- a/gpu/command_buffer/common/id_allocator.h
+++ b/gpu/command_buffer/common/id_allocator.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -12,6 +12,7 @@
#include "base/compiler_specific.h"
+#include "../../gpu_export.h"
#include "../common/types.h"
namespace gpu {
@@ -21,7 +22,7 @@ typedef uint32 ResourceId;
// Invalid resource ID.
static const ResourceId kInvalidResource = 0u;
-class IdAllocatorInterface {
+class GPU_EXPORT IdAllocatorInterface {
public:
virtual ~IdAllocatorInterface();
@@ -43,7 +44,7 @@ class IdAllocatorInterface {
};
// A class to manage the allocation of resource IDs.
-class IdAllocator : public IdAllocatorInterface {
+class GPU_EXPORT IdAllocator : public IdAllocatorInterface {
public:
IdAllocator();
virtual ~IdAllocator();
diff --git a/gpu/command_buffer/service/buffer_manager.h b/gpu/command_buffer/service/buffer_manager.h
index 32be176..f2db2f9 100644
--- a/gpu/command_buffer/service/buffer_manager.h
+++ b/gpu/command_buffer/service/buffer_manager.h
@@ -12,6 +12,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "gpu/command_buffer/service/gl_utils.h"
+#include "gpu/gpu_export.h"
namespace gpu {
namespace gles2 {
@@ -21,10 +22,10 @@ namespace gles2 {
//
// NOTE: To support shared resources an instance of this class will need to be
// shared by multiple GLES2Decoders.
-class BufferManager {
+class GPU_EXPORT BufferManager {
public:
// Info about Buffers currently in the system.
- class BufferInfo : public base::RefCounted<BufferInfo> {
+ class GPU_EXPORT BufferInfo : public base::RefCounted<BufferInfo> {
public:
typedef scoped_refptr<BufferInfo> Ref;
diff --git a/gpu/command_buffer/service/cmd_parser.h b/gpu/command_buffer/service/cmd_parser.h
index 567b7f6..de2fe29 100644
--- a/gpu/command_buffer/service/cmd_parser.h
+++ b/gpu/command_buffer/service/cmd_parser.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -9,6 +9,7 @@
#include "gpu/command_buffer/common/constants.h"
#include "gpu/command_buffer/common/cmd_buffer_common.h"
+#include "gpu/gpu_export.h"
namespace gpu {
@@ -16,7 +17,7 @@ class AsyncAPIInterface;
// Command parser class. This class parses commands from a shared memory
// buffer, to implement some asynchronous RPC mechanism.
-class CommandParser {
+class GPU_EXPORT CommandParser {
public:
explicit CommandParser(AsyncAPIInterface* handler);
diff --git a/gpu/command_buffer/service/command_buffer_service.h b/gpu/command_buffer/service/command_buffer_service.h
index 2c59678..8b3e038 100644
--- a/gpu/command_buffer/service/command_buffer_service.h
+++ b/gpu/command_buffer/service/command_buffer_service.h
@@ -19,7 +19,7 @@ namespace gpu {
// An object that implements a shared memory command buffer and a synchronous
// API to manage the put and get pointers.
-class CommandBufferService : public CommandBuffer {
+class GPU_EXPORT CommandBufferService : public CommandBuffer {
public:
typedef base::Callback<bool(int32)> GetBufferChangedCallback;
CommandBufferService();
diff --git a/gpu/command_buffer/service/common_decoder.h b/gpu/command_buffer/service/common_decoder.h
index bdc1461..7ac9abb 100644
--- a/gpu/command_buffer/service/common_decoder.h
+++ b/gpu/command_buffer/service/common_decoder.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -11,6 +11,7 @@
#include "base/memory/linked_ptr.h"
#include "base/memory/scoped_ptr.h"
#include "gpu/command_buffer/service/cmd_parser.h"
+#include "gpu/gpu_export.h"
namespace gpu {
@@ -18,7 +19,7 @@ class CommandBufferEngine;
// This class is a helper base class for implementing the common parts of the
// o3d/gl2 command buffer decoder.
-class CommonDecoder : public AsyncAPIInterface {
+class GPU_EXPORT CommonDecoder : NON_EXPORTED_BASE(public AsyncAPIInterface) {
public:
typedef error::Error Error;
@@ -46,7 +47,7 @@ class CommonDecoder : public AsyncAPIInterface {
// arbitary size, the service puts the string in a bucket. The client can
// then query the size of a bucket and request sections of the bucket to
// be passed across shared memory.
- class Bucket {
+ class GPU_EXPORT Bucket {
public:
Bucket();
~Bucket();
diff --git a/gpu/command_buffer/service/context_group.h b/gpu/command_buffer/service/context_group.h
index 9a9943b..7c78f97 100644
--- a/gpu/command_buffer/service/context_group.h
+++ b/gpu/command_buffer/service/context_group.h
@@ -14,6 +14,7 @@
#include "gpu/command_buffer/common/gles2_cmd_format.h"
#include "gpu/command_buffer/service/gles2_cmd_validation.h"
#include "gpu/command_buffer/service/feature_info.h"
+#include "gpu/gpu_export.h"
namespace gpu {
@@ -32,7 +33,7 @@ struct DisallowedFeatures;
// A Context Group helps manage multiple GLES2Decoders that share
// resources.
-class ContextGroup : public base::RefCounted<ContextGroup> {
+class GPU_EXPORT ContextGroup : public base::RefCounted<ContextGroup> {
public:
typedef scoped_refptr<ContextGroup> Ref;
diff --git a/gpu/command_buffer/service/feature_info.h b/gpu/command_buffer/service/feature_info.h
index 3fcf3c9..bdb4c0a 100644
--- a/gpu/command_buffer/service/feature_info.h
+++ b/gpu/command_buffer/service/feature_info.h
@@ -9,12 +9,13 @@
#include "base/memory/ref_counted.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
#include "gpu/command_buffer/service/gles2_cmd_validation.h"
+#include "gpu/gpu_export.h"
namespace gpu {
namespace gles2 {
// FeatureInfo records the features that are available for a ContextGroup.
-class FeatureInfo : public base::RefCounted<FeatureInfo> {
+class GPU_EXPORT FeatureInfo : public base::RefCounted<FeatureInfo> {
public:
typedef scoped_refptr<FeatureInfo> Ref;
diff --git a/gpu/command_buffer/service/framebuffer_manager.h b/gpu/command_buffer/service/framebuffer_manager.h
index f66b519..a21fa8e 100644
--- a/gpu/command_buffer/service/framebuffer_manager.h
+++ b/gpu/command_buffer/service/framebuffer_manager.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -12,16 +12,17 @@
#include "gpu/command_buffer/service/gl_utils.h"
#include "gpu/command_buffer/service/renderbuffer_manager.h"
#include "gpu/command_buffer/service/texture_manager.h"
+#include "gpu/gpu_export.h"
namespace gpu {
namespace gles2 {
// This class keeps track of the frambebuffers and their attached renderbuffers
// so we can correctly clear them.
-class FramebufferManager {
+class GPU_EXPORT FramebufferManager {
public:
// Info about Framebuffers currently in the system.
- class FramebufferInfo : public base::RefCounted<FramebufferInfo> {
+ class GPU_EXPORT FramebufferInfo : public base::RefCounted<FramebufferInfo> {
public:
typedef scoped_refptr<FramebufferInfo> Ref;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.h b/gpu/command_buffer/service/gles2_cmd_decoder.h
index cb17176..89e1dd7 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.h
@@ -40,7 +40,7 @@ struct DisallowedFeatures {
// This class implements the AsyncAPIInterface interface, decoding GLES2
// commands and calling GL.
-class GLES2Decoder : public CommonDecoder {
+class GPU_EXPORT GLES2Decoder : public CommonDecoder {
public:
typedef error::Error Error;
typedef base::Callback<void(int32 id, const std::string& msg)> MsgCallback;
diff --git a/gpu/command_buffer/service/gpu_scheduler.h b/gpu/command_buffer/service/gpu_scheduler.h
index 7a7bdff..a03ffdf 100644
--- a/gpu/command_buffer/service/gpu_scheduler.h
+++ b/gpu/command_buffer/service/gpu_scheduler.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -16,6 +16,7 @@
#include "gpu/command_buffer/service/cmd_buffer_engine.h"
#include "gpu/command_buffer/service/cmd_parser.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
+#include "gpu/gpu_export.h"
namespace gfx {
class GLFence;
@@ -27,8 +28,8 @@ namespace gpu {
// a command buffer and forwarded to a command parser. TODO(apatrick): This
// class should not know about the decoder. Do not add additional dependencies
// on it.
-class GpuScheduler
- : public CommandBufferEngine,
+class GPU_EXPORT GpuScheduler
+ : NON_EXPORTED_BASE(public CommandBufferEngine),
public base::SupportsWeakPtr<GpuScheduler> {
public:
GpuScheduler(CommandBuffer* command_buffer,
diff --git a/gpu/command_buffer/service/id_manager.h b/gpu/command_buffer/service/id_manager.h
index 3668534..bffbc94 100644
--- a/gpu/command_buffer/service/id_manager.h
+++ b/gpu/command_buffer/service/id_manager.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -8,6 +8,7 @@
#include "base/basictypes.h"
#include "base/hash_tables.h"
#include "gpu/command_buffer/service/gl_utils.h"
+#include "gpu/gpu_export.h"
namespace gpu {
namespace gles2 {
@@ -16,7 +17,7 @@ namespace gles2 {
//
// NOTE: To support shared resources an instance of this class will
// need to be shared by multiple GLES2Decoders.
-class IdManager {
+class GPU_EXPORT IdManager {
public:
IdManager();
~IdManager();
diff --git a/gpu/command_buffer/service/program_manager.h b/gpu/command_buffer/service/program_manager.h
index 77b9065..330ef53 100644
--- a/gpu/command_buffer/service/program_manager.h
+++ b/gpu/command_buffer/service/program_manager.h
@@ -15,6 +15,7 @@
#include "gpu/command_buffer/service/common_decoder.h"
#include "gpu/command_buffer/service/gl_utils.h"
#include "gpu/command_buffer/service/shader_manager.h"
+#include "gpu/gpu_export.h"
namespace gpu {
namespace gles2 {
@@ -23,12 +24,12 @@ namespace gles2 {
//
// NOTE: To support shared resources an instance of this class will
// need to be shared by multiple GLES2Decoders.
-class ProgramManager {
+class GPU_EXPORT ProgramManager {
public:
// This is used to track which attributes a particular program needs
// so we can verify at glDrawXXX time that every attribute is either disabled
// or if enabled that it points to a valid source.
- class ProgramInfo : public base::RefCounted<ProgramInfo> {
+ class GPU_EXPORT ProgramInfo : public base::RefCounted<ProgramInfo> {
public:
typedef scoped_refptr<ProgramInfo> Ref;
diff --git a/gpu/command_buffer/service/renderbuffer_manager.h b/gpu/command_buffer/service/renderbuffer_manager.h
index 8cfd993..0d29c2c 100644
--- a/gpu/command_buffer/service/renderbuffer_manager.h
+++ b/gpu/command_buffer/service/renderbuffer_manager.h
@@ -10,16 +10,18 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "gpu/command_buffer/service/gl_utils.h"
+#include "gpu/gpu_export.h"
namespace gpu {
namespace gles2 {
// This class keeps track of the renderbuffers and whether or not they have
// been cleared.
-class RenderbufferManager {
+class GPU_EXPORT RenderbufferManager {
public:
// Info about Renderbuffers currently in the system.
- class RenderbufferInfo : public base::RefCounted<RenderbufferInfo> {
+ class GPU_EXPORT RenderbufferInfo
+ : public base::RefCounted<RenderbufferInfo> {
public:
typedef scoped_refptr<RenderbufferInfo> Ref;
diff --git a/gpu/command_buffer/service/shader_manager.h b/gpu/command_buffer/service/shader_manager.h
index 4168152..04b431a 100644
--- a/gpu/command_buffer/service/shader_manager.h
+++ b/gpu/command_buffer/service/shader_manager.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -13,6 +13,7 @@
#include "base/memory/scoped_ptr.h"
#include "gpu/command_buffer/service/gl_utils.h"
#include "gpu/command_buffer/service/shader_translator.h"
+#include "gpu/gpu_export.h"
namespace gpu {
namespace gles2 {
@@ -21,13 +22,13 @@ namespace gles2 {
//
// NOTE: To support shared resources an instance of this class will
// need to be shared by multiple GLES2Decoders.
-class ShaderManager {
+class GPU_EXPORT ShaderManager {
public:
// This is used to keep the source code for a shader. This is because in order
// to emluate GLES2 the shaders will have to be re-written before passed to
// the underlying OpenGL. But, when the user calls glGetShaderSource they
// should get the source they passed in, not the re-written source.
- class ShaderInfo : public base::RefCounted<ShaderInfo> {
+ class GPU_EXPORT ShaderInfo : public base::RefCounted<ShaderInfo> {
public:
typedef scoped_refptr<ShaderInfo> Ref;
typedef ShaderTranslator::VariableInfo VariableInfo;
diff --git a/gpu/command_buffer/service/shader_translator.h b/gpu/command_buffer/service/shader_translator.h
index af132b9..ea981c6 100644
--- a/gpu/command_buffer/service/shader_translator.h
+++ b/gpu/command_buffer/service/shader_translator.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -10,6 +10,7 @@
#include "base/basictypes.h"
#include "base/hash_tables.h"
#include "base/memory/scoped_ptr.h"
+#include "gpu/gpu_export.h"
#include "third_party/angle/include/GLSLANG/ShaderLang.h"
namespace gpu {
@@ -72,7 +73,8 @@ class ShaderTranslatorInterface {
};
// Implementation of ShaderTranslatorInterface
-class ShaderTranslator : public ShaderTranslatorInterface {
+class GPU_EXPORT ShaderTranslator
+ : NON_EXPORTED_BASE(public ShaderTranslatorInterface) {
public:
ShaderTranslator();
virtual ~ShaderTranslator();
diff --git a/gpu/command_buffer/service/texture_manager.h b/gpu/command_buffer/service/texture_manager.h
index 3fdc258..e55c012 100644
--- a/gpu/command_buffer/service/texture_manager.h
+++ b/gpu/command_buffer/service/texture_manager.h
@@ -12,6 +12,7 @@
#include "base/memory/ref_counted.h"
#include "gpu/command_buffer/service/feature_info.h"
#include "gpu/command_buffer/service/gl_utils.h"
+#include "gpu/gpu_export.h"
namespace gpu {
namespace gles2 {
@@ -23,7 +24,7 @@ class GLES2Decoder;
//
// NOTE: To support shared resources an instance of this class will need to be
// shared by multiple GLES2Decoders.
-class TextureManager {
+class GPU_EXPORT TextureManager {
public:
enum DefaultAndBlackTextures {
kTexture2D,
@@ -34,7 +35,7 @@ class TextureManager {
};
// Info about Textures currently in the system.
- class TextureInfo : public base::RefCounted<TextureInfo> {
+ class GPU_EXPORT TextureInfo : public base::RefCounted<TextureInfo> {
public:
typedef scoped_refptr<TextureInfo> Ref;
diff --git a/gpu/command_buffer/service/vertex_attrib_manager.h b/gpu/command_buffer/service/vertex_attrib_manager.h
index cd24abd..c42c8d6 100644
--- a/gpu/command_buffer/service/vertex_attrib_manager.h
+++ b/gpu/command_buffer/service/vertex_attrib_manager.h
@@ -8,17 +8,18 @@
#include "build/build_config.h"
#include "gpu/command_buffer/service/buffer_manager.h"
#include "gpu/command_buffer/service/gl_utils.h"
+#include "gpu/gpu_export.h"
namespace gpu {
namespace gles2 {
// Manages vertex attributes.
-class VertexAttribManager {
+class GPU_EXPORT VertexAttribManager {
public:
// Info about Vertex Attributes. This is used to track what the user currently
// has bound on each Vertex Attribute so that checking can be done at
// glDrawXXX time.
- class VertexAttribInfo {
+ class GPU_EXPORT VertexAttribInfo {
public:
typedef std::list<VertexAttribInfo*> VertexAttribInfoList;
struct Vec4 {
diff --git a/gpu/demos/demos.gyp b/gpu/demos/demos.gyp
index 59800c8c..802b328e 100644
--- a/gpu/demos/demos.gyp
+++ b/gpu/demos/demos.gyp
@@ -44,6 +44,7 @@
'../gpu.gyp:gles2_implementation',
'../../base/base.gyp:base',
'../../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
+ '../../ui/gfx/gl/gl.gyp:gl',
'../../ui/ui.gyp:ui',
],
'sources': [
diff --git a/gpu/gles2_conform_support/gles2_conform_support.gyp b/gpu/gles2_conform_support/gles2_conform_support.gyp
index 2bb3af2..73f83b2 100644
--- a/gpu/gles2_conform_support/gles2_conform_support.gyp
+++ b/gpu/gles2_conform_support/gles2_conform_support.gyp
@@ -33,6 +33,8 @@
'<(DEPTH)/base/base.gyp:base',
'<(DEPTH)/gpu/gpu.gyp:gles2_implementation_client_side_arrays_no_check',
'<(DEPTH)/gpu/gpu.gyp:command_buffer_service',
+ '<(DEPTH)/ui/gfx/gl/gl.gyp:gl',
+ '<(DEPTH)/ui/ui.gyp:ui',
],
'include_dirs': ['<(DEPTH)/third_party/khronos'],
'sources': [
diff --git a/gpu/gles2_implementation.gypi b/gpu/gles2_implementation.gypi
deleted file mode 100644
index b98f554..0000000
--- a/gpu/gles2_implementation.gypi
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (c) 2012 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.
-
-{
- # Library emulates GLES2 using command_buffers.
- 'dependencies': [
- '../base/base.gyp:base',
- '../ui/gfx/gl/gl.gyp:gl',
- ],
- 'all_dependent_settings': {
- 'include_dirs': [
- # For GLES2/gl2.h
- '<(DEPTH)/third_party/khronos',
- ],
- },
- 'sources': [
- '<@(gles2_implementation_source_files)',
- ],
-}
diff --git a/gpu/gpu.gyp b/gpu/gpu.gyp
index 26af34a..301e10a 100644
--- a/gpu/gpu.gyp
+++ b/gpu/gpu.gyp
@@ -19,6 +19,7 @@
# with without support for client side arrays and once with for pepper and
# the OpenGL ES 2.0 compliant for the conformance tests.
'gles2_implementation_source_files': [
+ 'command_buffer/client/gles2_impl_export.h',
'command_buffer/client/gles2_implementation_autogen.h',
'command_buffer/client/gles2_implementation.cc',
'command_buffer/client/gles2_implementation.h',
@@ -26,238 +27,135 @@
'command_buffer/client/program_info_manager.h',
]
},
- 'targets': [
- {
- 'target_name': 'command_buffer_common',
- 'type': 'static_library',
- 'includes': [
- 'command_buffer_common.gypi',
- ],
- 'export_dependent_settings': [
- '../base/base.gyp:base',
- ],
- },
- {
- # Library helps make GLES2 command buffers.
- 'target_name': 'gles2_cmd_helper',
- 'type': 'static_library',
- 'includes': [
- 'gles2_cmd_helper.gypi',
- ],
- 'dependencies': [
- 'command_buffer_client',
- ],
- },
- {
- # Library emulates GLES2 using command_buffers.
- 'target_name': 'gles2_implementation',
- 'type': 'static_library',
- 'includes': [
- 'gles2_implementation.gypi',
- ],
- 'dependencies': [
- 'gles2_cmd_helper',
- ],
- },
- {
- # Library emulates GLES2 using command_buffers.
- 'target_name': 'gles2_implementation_client_side_arrays',
- 'type': 'static_library',
- 'defines': [
- 'GLES2_SUPPORT_CLIENT_SIDE_ARRAYS=1',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- 'gles2_cmd_helper',
- ],
- 'all_dependent_settings': {
- 'include_dirs': [
- # For GLES2/gl2.h
- '<(DEPTH)/third_party/khronos',
- ],
- },
- 'sources': [
- '<@(gles2_implementation_source_files)',
- ],
- },
- {
- # Library emulates GLES2 using command_buffers.
- 'target_name': 'gles2_implementation_client_side_arrays_no_check',
- 'type': 'static_library',
- 'defines': [
- 'GLES2_SUPPORT_CLIENT_SIDE_ARRAYS=1',
- 'GLES2_CONFORMANCE_TESTS=1',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- 'gles2_cmd_helper',
- ],
- 'all_dependent_settings': {
- 'include_dirs': [
- # For GLES2/gl2.h
- '<(DEPTH)/third_party/khronos',
- ],
- },
- 'sources': [
- '<@(gles2_implementation_source_files)',
- ],
- },
- {
- # Stub to expose gles2_implemenation in C instead of C++.
- # so GLES2 C programs can work with no changes.
- 'target_name': 'gles2_c_lib',
- 'type': '<(component)',
- 'dependencies': [
- '../base/base.gyp:base',
- '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
- 'gles2_implementation',
- ],
- 'defines': [
- 'GLES2_C_LIB_IMPLEMENTATION',
- ],
- 'sources': [
- '<@(gles2_c_lib_source_files)',
- ],
- },
- {
- # Same as gles2_c_lib except with no parameter checking. Required for
- # OpenGL ES 2.0 conformance tests.
- 'target_name': 'gles2_c_lib_nocheck',
- 'type': '<(component)',
- 'defines': [
- 'GLES2_C_LIB_IMPLEMENTATION',
- 'GLES2_CONFORMANCE_TESTS=1',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
- 'gles2_implementation_client_side_arrays_no_check',
- ],
- 'sources': [
- '<@(gles2_c_lib_source_files)',
- ],
- },
- {
- 'target_name': 'command_buffer_client',
- 'type': 'static_library',
- 'includes': [
- 'command_buffer_client.gypi',
- ],
- 'dependencies': [
- 'command_buffer_common',
- ],
- },
- {
- 'target_name': 'command_buffer_service',
- 'type': 'static_library',
- 'includes': [
- 'command_buffer_service.gypi',
- ],
- 'dependencies': [
- 'command_buffer_common',
- ],
- },
- {
- 'target_name': 'gpu_unittests',
- 'type': 'executable',
- 'dependencies': [
- '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
- '../testing/gmock.gyp:gmock',
- '../testing/gmock.gyp:gmock_main',
- '../testing/gtest.gyp:gtest',
- '../ui/gfx/gl/gl.gyp:gl',
- 'command_buffer_client',
- 'command_buffer_common',
- 'command_buffer_service',
- 'gpu_unittest_utils',
- 'gles2_implementation_client_side_arrays',
- 'gles2_cmd_helper',
- ],
- 'defines': [
- 'GLES2_C_LIB_IMPLEMENTATION',
- ],
- 'sources': [
- '<@(gles2_c_lib_source_files)',
- 'command_buffer/client/client_test_helper.cc',
- 'command_buffer/client/client_test_helper.h',
- 'command_buffer/client/cmd_buffer_helper_test.cc',
- 'command_buffer/client/fenced_allocator_test.cc',
- 'command_buffer/client/gles2_implementation_unittest.cc',
- 'command_buffer/client/mapped_memory_unittest.cc',
- 'command_buffer/client/program_info_manager_unittest.cc',
- 'command_buffer/client/ring_buffer_test.cc',
- 'command_buffer/client/transfer_buffer_unittest.cc',
- 'command_buffer/common/bitfield_helpers_test.cc',
- 'command_buffer/common/command_buffer_mock.cc',
- 'command_buffer/common/command_buffer_mock.h',
- 'command_buffer/common/command_buffer_shared_test.cc',
- 'command_buffer/common/gles2_cmd_format_test.cc',
- 'command_buffer/common/gles2_cmd_format_test_autogen.h',
- 'command_buffer/common/gles2_cmd_utils_unittest.cc',
- 'command_buffer/common/id_allocator_test.cc',
- 'command_buffer/common/trace_event.h',
- 'command_buffer/common/unittest_main.cc',
- 'command_buffer/service/buffer_manager_unittest.cc',
- 'command_buffer/service/cmd_parser_test.cc',
- 'command_buffer/service/common_decoder_unittest.cc',
- 'command_buffer/service/context_group_unittest.cc',
- 'command_buffer/service/feature_info_unittest.cc',
- 'command_buffer/service/framebuffer_manager_unittest.cc',
- 'command_buffer/service/gles2_cmd_decoder_unittest.cc',
- 'command_buffer/service/gles2_cmd_decoder_unittest_1.cc',
- 'command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h',
- 'command_buffer/service/gles2_cmd_decoder_unittest_2.cc',
- 'command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h',
- 'command_buffer/service/gles2_cmd_decoder_unittest_3.cc',
- 'command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h',
- 'command_buffer/service/gles2_cmd_decoder_unittest_base.cc',
- 'command_buffer/service/gles2_cmd_decoder_unittest_base.h',
- 'command_buffer/service/gpu_scheduler_unittest.cc',
- 'command_buffer/service/id_manager_unittest.cc',
- 'command_buffer/service/mocks.cc',
- 'command_buffer/service/mocks.h',
- 'command_buffer/service/program_manager_unittest.cc',
- 'command_buffer/service/renderbuffer_manager_unittest.cc',
- 'command_buffer/service/shader_manager_unittest.cc',
- 'command_buffer/service/shader_translator_unittest.cc',
- 'command_buffer/service/stream_texture_mock.cc',
- 'command_buffer/service/stream_texture_mock.h',
- 'command_buffer/service/stream_texture_manager_mock.cc',
- 'command_buffer/service/stream_texture_manager_mock.h',
- 'command_buffer/service/test_helper.cc',
- 'command_buffer/service/test_helper.h',
- 'command_buffer/service/texture_manager_unittest.cc',
- 'command_buffer/service/vertex_attrib_manager_unittest.cc',
- ],
- },
- {
- 'target_name': 'gpu_unittest_utils',
- 'type': 'static_library',
- 'dependencies': [
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- '../ui/gfx/gl/gl.gyp:gl',
- ],
- 'include_dirs': [
- '..',
- '<(DEPTH)/third_party/khronos',
- ],
- 'sources': [
- 'command_buffer/common/gl_mock.h',
- 'command_buffer/common/gl_mock.cc',
- 'command_buffer/service/gles2_cmd_decoder_mock.cc',
- 'command_buffer/service/gles2_cmd_decoder_mock.cc',
- ],
- },
- {
- 'target_name': 'gpu_ipc',
- 'type': 'static_library',
- 'includes': [
- 'gpu_ipc.gypi',
- ],
- 'dependencies': [
- 'command_buffer_client',
+ 'includes': [
+ 'gpu_common.gypi',
+ ],
+ 'conditions': [
+ ['component=="static_library" or incremental_chrome_dll==1', {
+ 'targets': [
+ {
+ 'target_name': 'gpu',
+ 'type': 'none',
+ 'dependencies': [
+ 'command_buffer_client',
+ 'command_buffer_common',
+ 'command_buffer_service',
+ 'gles2_cmd_helper',
+ 'gpu_ipc',
+ ],
+ 'sources': [
+ 'gpu_export.h',
+ ],
+ },
+ {
+ 'target_name': 'command_buffer_common',
+ 'type': 'static_library',
+ 'includes': [
+ 'command_buffer_common.gypi',
+ ],
+ 'export_dependent_settings': [
+ '../base/base.gyp:base',
+ ],
+ },
+ {
+ # Library helps make GLES2 command buffers.
+ 'target_name': 'gles2_cmd_helper',
+ 'type': 'static_library',
+ 'includes': [
+ 'gles2_cmd_helper.gypi',
+ ],
+ 'dependencies': [
+ 'command_buffer_client',
+ ],
+ },
+ {
+ 'target_name': 'command_buffer_client',
+ 'type': 'static_library',
+ 'includes': [
+ 'command_buffer_client.gypi',
+ ],
+ 'dependencies': [
+ 'command_buffer_common',
+ ],
+ },
+ {
+ 'target_name': 'command_buffer_service',
+ 'type': 'static_library',
+ 'includes': [
+ 'command_buffer_service.gypi',
+ ],
+ 'dependencies': [
+ 'command_buffer_common',
+ ],
+ },
+ {
+ 'target_name': 'gpu_ipc',
+ 'type': 'static_library',
+ 'includes': [
+ 'gpu_ipc.gypi',
+ ],
+ 'dependencies': [
+ 'command_buffer_common',
+ ],
+ },
],
},
+ { # component != static_library
+ 'targets': [
+ {
+ 'target_name': 'gpu',
+ 'type': 'shared_library',
+ 'includes': [
+ 'command_buffer_client.gypi',
+ 'command_buffer_common.gypi',
+ 'command_buffer_service.gypi',
+ 'gles2_cmd_helper.gypi',
+ 'gpu_ipc.gypi',
+ ],
+ 'defines': [
+ 'GPU_IMPLEMENTATION',
+ ],
+ 'sources': [
+ 'gpu_export.h',
+ ],
+ },
+ {
+ 'target_name': 'command_buffer_common',
+ 'type': 'none',
+ 'dependencies': [
+ 'gpu',
+ ],
+ },
+ {
+ # Library helps make GLES2 command buffers.
+ 'target_name': 'gles2_cmd_helper',
+ 'type': 'none',
+ 'dependencies': [
+ 'gpu',
+ ],
+ },
+ {
+ 'target_name': 'command_buffer_client',
+ 'type': 'none',
+ 'dependencies': [
+ 'gpu',
+ ],
+ },
+ {
+ 'target_name': 'command_buffer_service',
+ 'type': 'none',
+ 'dependencies': [
+ 'gpu',
+ ],
+ },
+ {
+ 'target_name': 'gpu_ipc',
+ 'type': 'none',
+ 'dependencies': [
+ 'gpu',
+ ],
+ },
+ ],
+ }],
],
}
diff --git a/gpu/gpu_common.gypi b/gpu/gpu_common.gypi
new file mode 100644
index 0000000..43209be
--- /dev/null
+++ b/gpu/gpu_common.gypi
@@ -0,0 +1,212 @@
+# Copyright (c) 2012 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.
+
+{
+ 'targets': [
+ {
+ # Library emulates GLES2 using command_buffers.
+ 'target_name': 'gles2_implementation',
+ 'type': '<(component)',
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../ui/gfx/gl/gl.gyp:gl',
+ 'command_buffer/command_buffer.gyp:gles2_utils',
+ 'gles2_cmd_helper',
+ ],
+ 'all_dependent_settings': {
+ 'include_dirs': [
+ # For GLES2/gl2.h
+ '<(DEPTH)/third_party/khronos',
+ ],
+ },
+ 'defines': [
+ 'GLES2_IMPL_IMPLEMENTATION',
+ ],
+ 'sources': [
+ '<@(gles2_implementation_source_files)',
+ ],
+ },
+ {
+ # Library emulates GLES2 using command_buffers.
+ 'target_name': 'gles2_implementation_client_side_arrays',
+ 'type': '<(component)',
+ 'defines': [
+ 'GLES2_IMPL_IMPLEMENTATION',
+ 'GLES2_SUPPORT_CLIENT_SIDE_ARRAYS=1',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../ui/gfx/gl/gl.gyp:gl',
+ 'command_buffer/command_buffer.gyp:gles2_utils',
+ 'gles2_cmd_helper',
+ ],
+ 'all_dependent_settings': {
+ 'include_dirs': [
+ # For GLES2/gl2.h
+ '<(DEPTH)/third_party/khronos',
+ ],
+ },
+ 'sources': [
+ '<@(gles2_implementation_source_files)',
+ ],
+ },
+ {
+ # Library emulates GLES2 using command_buffers.
+ 'target_name': 'gles2_implementation_client_side_arrays_no_check',
+ 'type': '<(component)',
+ 'defines': [
+ 'GLES2_IMPL_IMPLEMENTATION',
+ 'GLES2_SUPPORT_CLIENT_SIDE_ARRAYS=1',
+ 'GLES2_CONFORMANCE_TESTS=1',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ 'command_buffer/command_buffer.gyp:gles2_utils',
+ 'gles2_cmd_helper',
+ ],
+ 'all_dependent_settings': {
+ 'include_dirs': [
+ # For GLES2/gl2.h
+ '<(DEPTH)/third_party/khronos',
+ ],
+ },
+ 'sources': [
+ '<@(gles2_implementation_source_files)',
+ ],
+ },
+ {
+ # Stub to expose gles2_implemenation in C instead of C++.
+ # so GLES2 C programs can work with no changes.
+ 'target_name': 'gles2_c_lib',
+ 'type': '<(component)',
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
+ 'command_buffer/command_buffer.gyp:gles2_utils',
+ 'gles2_implementation',
+ ],
+ 'defines': [
+ 'GLES2_C_LIB_IMPLEMENTATION',
+ ],
+ 'sources': [
+ '<@(gles2_c_lib_source_files)',
+ ],
+ },
+ {
+ # Same as gles2_c_lib except with no parameter checking. Required for
+ # OpenGL ES 2.0 conformance tests.
+ 'target_name': 'gles2_c_lib_nocheck',
+ 'type': '<(component)',
+ 'defines': [
+ 'GLES2_C_LIB_IMPLEMENTATION',
+ 'GLES2_CONFORMANCE_TESTS=1',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
+ 'command_buffer/command_buffer.gyp:gles2_utils',
+ 'gles2_implementation_client_side_arrays_no_check',
+ ],
+ 'sources': [
+ '<@(gles2_c_lib_source_files)',
+ ],
+ },
+ {
+ 'target_name': 'gpu_unittests',
+ 'type': 'executable',
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
+ '../testing/gmock.gyp:gmock',
+ '../testing/gmock.gyp:gmock_main',
+ '../testing/gtest.gyp:gtest',
+ '../third_party/angle/src/build_angle.gyp:translator_glsl',
+ '../ui/gfx/gl/gl.gyp:gl',
+ '../ui/ui.gyp:ui',
+ 'command_buffer/command_buffer.gyp:gles2_utils',
+ 'command_buffer_client',
+ 'command_buffer_common',
+ 'command_buffer_service',
+ 'gpu_unittest_utils',
+ 'gles2_implementation_client_side_arrays',
+ 'gles2_cmd_helper',
+ ],
+ 'defines': [
+ 'GLES2_C_LIB_IMPLEMENTATION',
+ ],
+ 'sources': [
+ '<@(gles2_c_lib_source_files)',
+ 'command_buffer/client/client_test_helper.cc',
+ 'command_buffer/client/client_test_helper.h',
+ 'command_buffer/client/cmd_buffer_helper_test.cc',
+ 'command_buffer/client/fenced_allocator_test.cc',
+ 'command_buffer/client/gles2_implementation_unittest.cc',
+ 'command_buffer/client/mapped_memory_unittest.cc',
+ 'command_buffer/client/program_info_manager_unittest.cc',
+ 'command_buffer/client/ring_buffer_test.cc',
+ 'command_buffer/client/transfer_buffer_unittest.cc',
+ 'command_buffer/common/bitfield_helpers_test.cc',
+ 'command_buffer/common/command_buffer_mock.cc',
+ 'command_buffer/common/command_buffer_mock.h',
+ 'command_buffer/common/command_buffer_shared_test.cc',
+ 'command_buffer/common/gles2_cmd_format_test.cc',
+ 'command_buffer/common/gles2_cmd_format_test_autogen.h',
+ 'command_buffer/common/gles2_cmd_utils_unittest.cc',
+ 'command_buffer/common/id_allocator_test.cc',
+ 'command_buffer/common/trace_event.h',
+ 'command_buffer/common/unittest_main.cc',
+ 'command_buffer/service/buffer_manager_unittest.cc',
+ 'command_buffer/service/cmd_parser_test.cc',
+ 'command_buffer/service/common_decoder_unittest.cc',
+ 'command_buffer/service/context_group_unittest.cc',
+ 'command_buffer/service/feature_info_unittest.cc',
+ 'command_buffer/service/framebuffer_manager_unittest.cc',
+ 'command_buffer/service/gles2_cmd_decoder_unittest.cc',
+ 'command_buffer/service/gles2_cmd_decoder_unittest_1.cc',
+ 'command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h',
+ 'command_buffer/service/gles2_cmd_decoder_unittest_2.cc',
+ 'command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h',
+ 'command_buffer/service/gles2_cmd_decoder_unittest_3.cc',
+ 'command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h',
+ 'command_buffer/service/gles2_cmd_decoder_unittest_base.cc',
+ 'command_buffer/service/gles2_cmd_decoder_unittest_base.h',
+ 'command_buffer/service/gpu_scheduler_unittest.cc',
+ 'command_buffer/service/id_manager_unittest.cc',
+ 'command_buffer/service/mocks.cc',
+ 'command_buffer/service/mocks.h',
+ 'command_buffer/service/program_manager_unittest.cc',
+ 'command_buffer/service/renderbuffer_manager_unittest.cc',
+ 'command_buffer/service/shader_manager_unittest.cc',
+ 'command_buffer/service/shader_translator_unittest.cc',
+ 'command_buffer/service/stream_texture_mock.cc',
+ 'command_buffer/service/stream_texture_mock.h',
+ 'command_buffer/service/stream_texture_manager_mock.cc',
+ 'command_buffer/service/stream_texture_manager_mock.h',
+ 'command_buffer/service/test_helper.cc',
+ 'command_buffer/service/test_helper.h',
+ 'command_buffer/service/texture_manager_unittest.cc',
+ 'command_buffer/service/vertex_attrib_manager_unittest.cc',
+ ],
+ },
+ {
+ 'target_name': 'gpu_unittest_utils',
+ 'type': 'static_library',
+ 'dependencies': [
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ '../ui/gfx/gl/gl.gyp:gl',
+ ],
+ 'include_dirs': [
+ '..',
+ '<(DEPTH)/third_party/khronos',
+ ],
+ 'sources': [
+ 'command_buffer/common/gl_mock.h',
+ 'command_buffer/common/gl_mock.cc',
+ 'command_buffer/service/gles2_cmd_decoder_mock.cc',
+ 'command_buffer/service/gles2_cmd_decoder_mock.cc',
+ ],
+ },
+ ],
+}
diff --git a/gpu/gpu_export.h b/gpu/gpu_export.h
new file mode 100644
index 0000000..91f35e2
--- /dev/null
+++ b/gpu/gpu_export.h
@@ -0,0 +1,26 @@
+// Copyright (c) 2012 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_GPU_EXPORT_H_
+#define GPU_GPU_EXPORT_H_
+#pragma once
+
+#if defined(COMPONENT_BUILD)
+#if defined(WIN32)
+
+#if defined(GPU_IMPLEMENTATION)
+#define GPU_EXPORT __declspec(dllexport)
+#else
+#define GPU_EXPORT __declspec(dllimport)
+#endif // defined(GPU_IMPLEMENTATION)
+
+#else // defined(WIN32)
+#define GPU_EXPORT __attribute__((visibility("default")))
+#endif
+
+#else // defined(COMPONENT_BUILD)
+#define GPU_EXPORT
+#endif
+
+#endif // GPU_GPU_EXPORT_H_
diff --git a/gpu/gpu_ipc.gypi b/gpu/gpu_ipc.gypi
index 65bc854..9e583d0 100644
--- a/gpu/gpu_ipc.gypi
+++ b/gpu/gpu_ipc.gypi
@@ -4,8 +4,7 @@
{
'dependencies': [
- 'gles2_c_lib',
- '../base/base.gyp:base',
+ '../ipc/ipc.gyp:ipc',
],
'include_dirs': [
'..',
diff --git a/gpu/ipc/gpu_command_buffer_traits.h b/gpu/ipc/gpu_command_buffer_traits.h
index 2237c1e9..12f1306 100644
--- a/gpu/ipc/gpu_command_buffer_traits.h
+++ b/gpu/ipc/gpu_command_buffer_traits.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -7,11 +7,12 @@
#include "ipc/ipc_message_utils.h"
#include "gpu/command_buffer/common/command_buffer.h"
+#include "gpu/gpu_export.h"
namespace IPC {
template <>
-struct ParamTraits<gpu::CommandBuffer::State> {
+struct GPU_EXPORT ParamTraits<gpu::CommandBuffer::State> {
typedef gpu::CommandBuffer::State param_type;
static void Write(Message* m, const param_type& p);
static bool Read(const Message* m, void** iter, param_type* p);