Commit 183b60aa authored by rvargas@google.com's avatar rvargas@google.com

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
parent 22d63ebb
include_rules = [
"+third_party/angle",
"+../../gpu_export.h",
"+../command_buffer",
"+../client",
"+../common",
......
......@@ -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();
......
// 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.
......
// 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_
......@@ -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 {
......
// 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);
......
......@@ -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;
......
......@@ -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,
......
......@@ -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
......
// 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();
......
......@@ -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;
......
// 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);
......
......@@ -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();
......
// 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();
......
......@@ -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;
......
......@@ -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;
......
// 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;
......
......@@ -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;
......
// 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,
......
// 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();
......
......@@ -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;
......
......@@ -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;
......
// 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;
......
// 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();
......
......@@ -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;
......
......@@ -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 {
......
......@@ -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': [
......
......@@ -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': [
......
# 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)',
],
}
This diff is collapsed.
# 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',
],
},
],
}
// 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_
......@@ -4,8 +4,7 @@
{
'dependencies': [
'gles2_c_lib',
'../base/base.gyp:base',
'../ipc/ipc.gyp:ipc',
],
'include_dirs': [
'..',
......
// 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);
......
......@@ -22,6 +22,7 @@
'../base/base.gyp:base_i18n',
'../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
'../build/temp_gyp/googleurl.gyp:googleurl',
'../gpu/gpu.gyp:command_buffer_client',
'../gpu/gpu.gyp:gles2_implementation',
'../net/net.gyp:net',
'../skia/skia.gyp:skia',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment