Revert 35509 - linux: implement gpu plugin
Review URL: http://codereview.chromium.org/500132 TBR=piman@chromium.org Review URL: http://codereview.chromium.org/525022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35511 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
build
chrome
gpu
third_party/glew/src
webkit
@ -148,6 +148,9 @@
|
||||
# Whether to add the experimental build define.
|
||||
'chrome_frame_define%': 0,
|
||||
|
||||
# Whether GPU plugin build is enabled.
|
||||
'enable_gpu%': 0,
|
||||
|
||||
# Whether usage of OpenMAX is enabled.
|
||||
'enable_openmax%': 0,
|
||||
|
||||
@ -346,7 +349,7 @@
|
||||
}],
|
||||
],
|
||||
}],
|
||||
['OS=="win" or (OS=="linux" and target_arch!="arm")', {
|
||||
['OS=="win"', {
|
||||
'defines': [
|
||||
'ENABLE_GPU=1',
|
||||
],
|
||||
|
@ -450,6 +450,9 @@
|
||||
# end up using this module as well.
|
||||
'conditions': [
|
||||
['OS=="win"', {
|
||||
'dependencies': [
|
||||
'../gpu/gpu.gyp:command_buffer_service',
|
||||
],
|
||||
'defines': [
|
||||
'__STD_C',
|
||||
'_CRT_SECURE_NO_DEPRECATE',
|
||||
@ -458,11 +461,6 @@
|
||||
'include_dirs': [
|
||||
'third_party/wtl/include',
|
||||
],
|
||||
}],
|
||||
['OS=="win" or (OS=="linux" and target_arch!="arm")', {
|
||||
'dependencies': [
|
||||
'../gpu/gpu.gyp:command_buffer_service',
|
||||
],
|
||||
'sources': [
|
||||
'plugin/command_buffer_stub.cc',
|
||||
'plugin/command_buffer_stub.h',
|
||||
|
@ -165,6 +165,10 @@
|
||||
'include_dirs': [
|
||||
'third_party/wtl/include',
|
||||
],
|
||||
'sources': [
|
||||
'renderer/command_buffer_proxy.cc',
|
||||
'renderer/command_buffer_proxy.h',
|
||||
],
|
||||
'conditions': [
|
||||
['win_use_allocator_shim==1', {
|
||||
'dependencies': [
|
||||
@ -176,12 +180,6 @@
|
||||
}],
|
||||
],
|
||||
}],
|
||||
['OS=="win" or (OS=="linux" and target_arch!="arm")', {
|
||||
'sources': [
|
||||
'renderer/command_buffer_proxy.cc',
|
||||
'renderer/command_buffer_proxy.h',
|
||||
],
|
||||
}],
|
||||
],
|
||||
},
|
||||
],
|
||||
|
@ -11,9 +11,9 @@
|
||||
using gpu::Buffer;
|
||||
|
||||
CommandBufferStub::CommandBufferStub(PluginChannel* channel,
|
||||
gfx::PluginWindowHandle window)
|
||||
gfx::NativeView view)
|
||||
: channel_(channel),
|
||||
window_(window) {
|
||||
view_(view) {
|
||||
route_id_ = channel->GenerateRouteID();
|
||||
channel->AddRoute(route_id_, this, false);
|
||||
}
|
||||
@ -54,7 +54,7 @@ void CommandBufferStub::OnInitialize(int32 size,
|
||||
Buffer buffer = command_buffer_->GetRingBuffer();
|
||||
if (buffer.shared_memory) {
|
||||
processor_ = new gpu::GPUProcessor(command_buffer_.get());
|
||||
if (processor_->Initialize(window_)) {
|
||||
if (processor_->Initialize(view_)) {
|
||||
command_buffer_->SetPutOffsetChangeCallback(
|
||||
NewCallback(processor_.get(),
|
||||
&gpu::GPUProcessor::ProcessCommands));
|
||||
@ -93,7 +93,7 @@ void CommandBufferStub::OnGetTransferBuffer(
|
||||
int32 id,
|
||||
base::SharedMemoryHandle* transfer_buffer,
|
||||
size_t* size) {
|
||||
*transfer_buffer = base::SharedMemoryHandle();
|
||||
*transfer_buffer = 0;
|
||||
*size = 0;
|
||||
|
||||
// Assume service is responsible for duplicating the handle to the calling
|
||||
|
@ -21,7 +21,7 @@ class CommandBufferService;
|
||||
class CommandBufferStub : public IPC::Channel::Listener,
|
||||
public IPC::Message::Sender {
|
||||
public:
|
||||
CommandBufferStub(PluginChannel* channel, gfx::PluginWindowHandle window);
|
||||
CommandBufferStub(PluginChannel* channel, gfx::NativeView view);
|
||||
|
||||
virtual ~CommandBufferStub();
|
||||
|
||||
@ -50,7 +50,7 @@ class CommandBufferStub : public IPC::Channel::Listener,
|
||||
void OnGetErrorStatus(bool* error_status);
|
||||
|
||||
scoped_refptr<PluginChannel> channel_;
|
||||
gfx::PluginWindowHandle window_;
|
||||
gfx::NativeView view_;
|
||||
int route_id_;
|
||||
scoped_ptr<gpu::CommandBufferService> command_buffer_;
|
||||
scoped_refptr<gpu::GPUProcessor> processor_;
|
||||
|
@ -153,20 +153,12 @@ Buffer CommandBufferProxy::GetTransferBuffer(int32 id) {
|
||||
}
|
||||
|
||||
// Cache the transfer buffer shared memory object client side.
|
||||
#if defined(OS_WIN)
|
||||
// TODO(piman): Does Windows needs this version of the constructor ? It
|
||||
// duplicates the handle, but I'm not sure why it is necessary - it was
|
||||
// already duped by the CommandBufferStub.
|
||||
base::SharedMemory* shared_memory =
|
||||
new base::SharedMemory(handle, false, base::GetCurrentProcessHandle());
|
||||
#else
|
||||
base::SharedMemory* shared_memory =
|
||||
new base::SharedMemory(handle, false);
|
||||
#endif
|
||||
|
||||
// Map the shared memory on demand.
|
||||
if (!shared_memory->memory()) {
|
||||
if (!shared_memory->Map(size)) {
|
||||
if (!shared_memory->Map(shared_memory->max_size())) {
|
||||
delete shared_memory;
|
||||
return Buffer();
|
||||
}
|
||||
|
@ -14,9 +14,6 @@
|
||||
#include "gpu/command_buffer/service/cmd_buffer_engine.h"
|
||||
#include "gpu/command_buffer/service/gl_utils.h"
|
||||
#include "gpu/command_buffer/service/gles2_cmd_validation.h"
|
||||
#if defined(OS_LINUX)
|
||||
#include "gpu/command_buffer/service/x_utils.h"
|
||||
#endif
|
||||
|
||||
namespace gpu {
|
||||
namespace gles2 {
|
||||
@ -985,6 +982,7 @@ parse_error::ParseError GLES2DecoderImpl::DoCommand(
|
||||
parse_error::ParseError result = parse_error::kParseNoError;
|
||||
if (debug()) {
|
||||
// TODO(gman): Change output to something useful for NaCl.
|
||||
const char* f = GetCommandName(command);
|
||||
printf("cmd: %s\n", GetCommandName(command));
|
||||
}
|
||||
unsigned int command_index = command - kStartPoint - 1;
|
||||
@ -1219,7 +1217,7 @@ void GLES2DecoderImpl::UpdateProgramInfo(GLuint program) {
|
||||
program, ii, max_len + 1, &length, &size, &type, name_buffer.get());
|
||||
// TODO(gman): Should we check for error?
|
||||
GLint location = glGetAttribLocation(program, name_buffer.get());
|
||||
info->SetAttributeLocation(ii, location);
|
||||
info->SetAttributeLocation(ii, num_attribs);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1759,3 +1757,4 @@ parse_error::ParseError GLES2DecoderImpl::HandleGetActiveAttrib(
|
||||
|
||||
} // namespace gles2
|
||||
} // namespace gpu
|
||||
|
||||
|
@ -8,16 +8,14 @@
|
||||
#define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_H_
|
||||
|
||||
#include <build/build_config.h>
|
||||
#if defined(OS_WIN)
|
||||
#if defined(OS_LINUX)
|
||||
#include "gpu/command_buffer/service/x_utils.h"
|
||||
#elif defined(OS_WIN)
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#include "gpu/command_buffer/service/common_decoder.h"
|
||||
|
||||
namespace gpu {
|
||||
// Forward-declared instead of including x_utils.h, because including glx.h
|
||||
// causes havok.
|
||||
class XWindowWrapper;
|
||||
|
||||
namespace gles2 {
|
||||
|
||||
// This class implements the AsyncAPIInterface interface, decoding GLES2
|
||||
|
@ -9,25 +9,6 @@ using ::base::SharedMemory;
|
||||
|
||||
namespace gpu {
|
||||
|
||||
GPUProcessor::GPUProcessor(CommandBuffer* command_buffer)
|
||||
: command_buffer_(command_buffer),
|
||||
commands_per_update_(100) {
|
||||
DCHECK(command_buffer);
|
||||
decoder_.reset(gles2::GLES2Decoder::Create());
|
||||
decoder_->set_engine(this);
|
||||
}
|
||||
|
||||
GPUProcessor::GPUProcessor(CommandBuffer* command_buffer,
|
||||
gles2::GLES2Decoder* decoder,
|
||||
CommandParser* parser,
|
||||
int commands_per_update)
|
||||
: command_buffer_(command_buffer),
|
||||
commands_per_update_(commands_per_update) {
|
||||
DCHECK(command_buffer);
|
||||
decoder_.reset(decoder);
|
||||
parser_.reset(parser);
|
||||
}
|
||||
|
||||
GPUProcessor::~GPUProcessor() {
|
||||
}
|
||||
|
||||
@ -51,8 +32,6 @@ void GPUProcessor::ProcessCommands() {
|
||||
command_buffer_->SetParseError(parse_error);
|
||||
command_buffer_->RaiseErrorStatus();
|
||||
return;
|
||||
case gpu::parse_error::kParseNoError:
|
||||
break;
|
||||
}
|
||||
|
||||
++commands_processed;
|
||||
|
@ -1,50 +0,0 @@
|
||||
// Copyright (c) 2009 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.
|
||||
|
||||
#include <gdk/gdkx.h>
|
||||
#include "gpu/command_buffer/service/gpu_processor.h"
|
||||
#include "gpu/command_buffer/service/x_utils.h"
|
||||
|
||||
using ::base::SharedMemory;
|
||||
|
||||
namespace gpu {
|
||||
|
||||
bool GPUProcessor::Initialize(gfx::PluginWindowHandle handle) {
|
||||
DCHECK(handle);
|
||||
|
||||
// Cannot reinitialize.
|
||||
if (decoder_->window() != NULL)
|
||||
return false;
|
||||
|
||||
// Map the ring buffer and create the parser.
|
||||
Buffer ring_buffer = command_buffer_->GetRingBuffer();
|
||||
if (ring_buffer.ptr) {
|
||||
parser_.reset(new CommandParser(ring_buffer.ptr,
|
||||
ring_buffer.size,
|
||||
0,
|
||||
ring_buffer.size,
|
||||
0,
|
||||
decoder_.get()));
|
||||
} else {
|
||||
parser_.reset(new CommandParser(NULL, 0, 0, 0, 0,
|
||||
decoder_.get()));
|
||||
}
|
||||
|
||||
// Initialize GAPI immediately if the window handle is valid.
|
||||
XWindowWrapper *window = new XWindowWrapper(GDK_DISPLAY(), handle);
|
||||
decoder_->set_window_wrapper(window);
|
||||
return decoder_->Initialize();
|
||||
}
|
||||
|
||||
void GPUProcessor::Destroy() {
|
||||
// Destroy GAPI if window handle has not already become invalid.
|
||||
XWindowWrapper *window = decoder_->window();
|
||||
if (window) {
|
||||
decoder_->Destroy();
|
||||
decoder_->set_window_wrapper(NULL);
|
||||
delete window;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace gpu
|
@ -10,6 +10,25 @@ using ::base::SharedMemory;
|
||||
|
||||
namespace gpu {
|
||||
|
||||
GPUProcessor::GPUProcessor(CommandBuffer* command_buffer)
|
||||
: command_buffer_(command_buffer),
|
||||
commands_per_update_(100) {
|
||||
DCHECK(command_buffer);
|
||||
decoder_.reset(gles2::GLES2Decoder::Create());
|
||||
decoder_->set_engine(this);
|
||||
}
|
||||
|
||||
GPUProcessor::GPUProcessor(CommandBuffer* command_buffer,
|
||||
gles2::GLES2Decoder* decoder,
|
||||
CommandParser* parser,
|
||||
int commands_per_update)
|
||||
: command_buffer_(command_buffer),
|
||||
commands_per_update_(commands_per_update) {
|
||||
DCHECK(command_buffer);
|
||||
decoder_.reset(decoder);
|
||||
parser_.reset(parser);
|
||||
}
|
||||
|
||||
bool GPUProcessor::Initialize(gfx::PluginWindowHandle handle) {
|
||||
DCHECK(handle);
|
||||
|
||||
|
@ -250,13 +250,9 @@
|
||||
['OS == "linux"',
|
||||
{
|
||||
'sources': [
|
||||
'command_buffer/service/gpu_processor_linux.cc',
|
||||
'command_buffer/service/x_utils.cc',
|
||||
'command_buffer/service/x_utils.h',
|
||||
],
|
||||
'dependencies': [
|
||||
'../build/linux/system.gyp:gtk',
|
||||
]
|
||||
},
|
||||
],
|
||||
['OS == "win"',
|
||||
|
@ -38,13 +38,8 @@ int16 NPP_HandleEvent(NPP instance, void* event) {
|
||||
NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) {
|
||||
if (!instance)
|
||||
return NPERR_INVALID_INSTANCE_ERROR;
|
||||
switch (variable) {
|
||||
case NPPVpluginNeedsXEmbed:
|
||||
*static_cast<NPBool *>(value) = 1;
|
||||
return NPERR_NO_ERROR;
|
||||
default:
|
||||
return NPERR_INVALID_PARAM;
|
||||
}
|
||||
|
||||
return NPERR_GENERIC_ERROR;
|
||||
}
|
||||
|
||||
NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) {
|
||||
|
4
third_party/glew/src/glew.c
vendored
4
third_party/glew/src/glew.c
vendored
@ -9557,7 +9557,7 @@ GLboolean glxewGetExtension (const char* name)
|
||||
/* if (glXQueryExtensionsString == NULL || glXGetCurrentDisplay == NULL) return GL_FALSE; */
|
||||
/* p = (GLubyte*)glXQueryExtensionsString(glXGetCurrentDisplay(), DefaultScreen(glXGetCurrentDisplay())); */
|
||||
if (__glewXGetClientString == NULL) {
|
||||
__glewXGetClientString = (PFNGLXGETCLIENTSTRINGPROC) glewGetProcAddress((const GLubyte *)"glXGetClientString");
|
||||
__glewXGetClientString = (PFNGLXGETCLIENTSTRINGPROC) glewGetProcAddress("glXGetClientString");
|
||||
}
|
||||
if (__glewXGetClientString == NULL) return GL_FALSE;
|
||||
if (glXGetCurrentDisplay == NULL) return GL_FALSE;
|
||||
@ -9580,7 +9580,7 @@ GLenum glxewContextInit (GLXEW_CONTEXT_ARG_DEF_LIST)
|
||||
int major, minor;
|
||||
static PFNGLXQUERYVERSIONPROC __glewXQueryVersion = NULL;
|
||||
if (__glewXQueryVersion == NULL) {
|
||||
__glewXQueryVersion = (PFNGLXQUERYVERSIONPROC) glewGetProcAddress((const GLubyte *)"glXQueryVersion");
|
||||
__glewXQueryVersion = (PFNGLXQUERYVERSIONPROC) glewGetProcAddress("glXQueryVersion");
|
||||
}
|
||||
if (__glewXQueryVersion == NULL) return GL_FALSE;
|
||||
/* initialize core GLX 1.2 */
|
||||
|
@ -428,12 +428,7 @@
|
||||
['exclude', r'/gtk_']],
|
||||
}],
|
||||
['OS!="mac"', {
|
||||
'sources/': [['exclude', '_mac\\.(cc|mm)$']],
|
||||
}],
|
||||
['OS=="win" or (OS=="linux" and target_arch!="arm")', {
|
||||
'dependencies': [
|
||||
'../gpu/gpu.gyp:gpu_plugin',
|
||||
],
|
||||
'sources/': [['exclude', '_mac\\.(cc|mm)$']]
|
||||
}],
|
||||
['OS!="win"', {
|
||||
'sources/': [['exclude', '_win\\.cc$']],
|
||||
@ -451,6 +446,7 @@
|
||||
],
|
||||
'dependencies': [
|
||||
'../build/win/system.gyp:cygwin',
|
||||
'../gpu/gpu.gyp:gpu_plugin',
|
||||
'default_plugin/default_plugin.gyp:default_plugin',
|
||||
],
|
||||
'sources!': [
|
||||
|
Reference in New Issue
Block a user