Skip to content

Commit

Permalink
GPU: Buld most of the gpu as a single DLL.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
rvargas@google.com committed Mar 2, 2012
1 parent 22d63eb commit 183b60a
Show file tree
Hide file tree
Showing 35 changed files with 475 additions and 302 deletions.
1 change: 1 addition & 0 deletions gpu/DEPS
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
include_rules = [
"+third_party/angle",
"+../../gpu_export.h",
"+../command_buffer",
"+../client",
"+../common",
Expand Down
3 changes: 2 additions & 1 deletion gpu/command_buffer/client/cmd_buffer_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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();
Expand Down
6 changes: 4 additions & 2 deletions gpu/command_buffer/client/fenced_allocator.h
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -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"

Expand All @@ -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.
Expand Down
26 changes: 26 additions & 0 deletions gpu/command_buffer/client/gles2_impl_export.h
Original file line number Diff line number Diff line change
@@ -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_
3 changes: 2 additions & 1 deletion gpu/command_buffer/client/gles2_implementation.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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 {
Expand Down
7 changes: 4 additions & 3 deletions gpu/command_buffer/client/mapped_memory.h
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -7,6 +7,7 @@

#include <vector>

#include "../../gpu_export.h"
#include "../common/types.h"
#include "../client/fenced_allocator.h"
#include "../common/buffer.h"
Expand All @@ -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);

Expand Down Expand Up @@ -104,7 +105,7 @@ class MemoryChunk {
};

// Manages MemoryChucks.
class MappedMemoryManager {
class GPU_EXPORT MappedMemoryManager {
public:
explicit MappedMemoryManager(CommandBufferHelper* helper);

Expand Down
4 changes: 3 additions & 1 deletion gpu/command_buffer/client/ring_buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -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;

Expand Down
7 changes: 4 additions & 3 deletions gpu/command_buffer/client/transfer_buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -50,7 +51,7 @@ class AlignedRingBuffer : public RingBufferWrapper {
};

// Interface for managing the transfer buffer.
class TransferBufferInterface {
class GPU_EXPORT TransferBufferInterface {
public:
TransferBufferInterface() { }
virtual ~TransferBufferInterface() { }
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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,
Expand Down
3 changes: 2 additions & 1 deletion gpu/command_buffer/common/command_buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -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
Expand Down
7 changes: 4 additions & 3 deletions gpu/command_buffer/common/id_allocator.h
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -12,6 +12,7 @@

#include "base/compiler_specific.h"

#include "../../gpu_export.h"
#include "../common/types.h"

namespace gpu {
Expand All @@ -21,7 +22,7 @@ typedef uint32 ResourceId;
// Invalid resource ID.
static const ResourceId kInvalidResource = 0u;

class IdAllocatorInterface {
class GPU_EXPORT IdAllocatorInterface {
public:
virtual ~IdAllocatorInterface();

Expand All @@ -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();
Expand Down
5 changes: 3 additions & 2 deletions gpu/command_buffer/service/buffer_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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;

Expand Down
5 changes: 3 additions & 2 deletions gpu/command_buffer/service/cmd_parser.h
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -9,14 +9,15 @@

#include "gpu/command_buffer/common/constants.h"
#include "gpu/command_buffer/common/cmd_buffer_common.h"
#include "gpu/gpu_export.h"

namespace gpu {

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);

Expand Down
2 changes: 1 addition & 1 deletion gpu/command_buffer/service/command_buffer_service.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
7 changes: 4 additions & 3 deletions gpu/command_buffer/service/common_decoder.h
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -11,14 +11,15 @@
#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 {

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;

Expand Down Expand Up @@ -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();
Expand Down
3 changes: 2 additions & 1 deletion gpu/command_buffer/service/context_group.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand All @@ -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;

Expand Down
3 changes: 2 additions & 1 deletion gpu/command_buffer/service/feature_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
7 changes: 4 additions & 3 deletions gpu/command_buffer/service/framebuffer_manager.h
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion gpu/command_buffer/service/gles2_cmd_decoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Loading

0 comments on commit 183b60a

Please sign in to comment.