Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1444)

Unified Diff: gpu/pgl/command_buffer_pepper.cc

Issue 1529005: New experimental Pepper device API.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/pgl/command_buffer_pepper.cc
===================================================================
--- gpu/pgl/command_buffer_pepper.cc (revision 44555)
+++ gpu/pgl/command_buffer_pepper.cc (working copy)
@@ -35,12 +35,49 @@
Buffer CommandBufferPepper::GetRingBuffer() {
Buffer buffer;
+#if defined(ENABLE_NEW_NPDEVICE_API)
+ NPDeviceBuffer np_buffer;
+ device_->mapBuffer(npp_,
+ context_,
+ NP3DCommandBufferId,
+ &np_buffer);
+ buffer.ptr = np_buffer.ptr;
+ buffer.size = np_buffer.size;
+#else
buffer.ptr = context_->commandBuffer;
buffer.size = context_->commandBufferSize * sizeof(int32);
+#endif
return buffer;
}
CommandBuffer::State CommandBufferPepper::GetState() {
+#if defined(ENABLE_NEW_NPDEVICE_API)
+ int32 output_attribs[] = {
+ NP3DAttrib_CommandBufferSize, 0,
+ NP3DAttrib_GetOffset, 0,
+ NP3DAttrib_PutOffset, 0,
+ NP3DAttrib_Token, 0,
+ NPAttrib_Error, 0,
+ NPAttrib_End
+ };
+ device_->synchronizeContext(npp_,
+ context_,
+ NPDeviceSynchronizationMode_Immediate,
+ NULL,
+ output_attribs,
+ NULL,
+ NULL);
+
+ CommandBuffer::State state;
+ state.size = output_attribs[1];
+ state.get_offset = output_attribs[3];
+ state.put_offset = output_attribs[5];
+ state.token = output_attribs[7];
+ state.error = static_cast<gpu::error::Error>(
+ output_attribs[9]);
+
+ return state;
+#else
context_->waitForProgress = false;
if (NPERR_NO_ERROR != device_->flushContext(npp_, context_, NULL, NULL))
@@ -49,9 +86,41 @@
context_->waitForProgress = true;
return ConvertState();
+#endif // ENABLE_NEW_NPDEVICE_API
}
CommandBuffer::State CommandBufferPepper::Flush(int32 put_offset) {
+#if defined(ENABLE_NEW_NPDEVICE_API)
+ int32 input_attribs[] = {
+ NP3DAttrib_PutOffset, put_offset,
+ NPAttrib_End
+ };
+ int32 output_attribs[] = {
+ NP3DAttrib_CommandBufferSize, 0,
+ NP3DAttrib_GetOffset, 0,
+ NP3DAttrib_PutOffset, 0,
+ NP3DAttrib_Token, 0,
+ NPAttrib_Error, 0,
+ NPAttrib_End
+ };
+ device_->synchronizeContext(npp_,
+ context_,
+ NPDeviceSynchronizationMode_Flush,
+ input_attribs,
+ output_attribs,
+ NULL,
+ NULL);
+
+ CommandBuffer::State state;
+ state.size = output_attribs[1];
+ state.get_offset = output_attribs[3];
+ state.put_offset = output_attribs[5];
+ state.token = output_attribs[7];
+ state.error = static_cast<gpu::error::Error>(
+ output_attribs[9]);
+
+ return state;
+#else
context_->waitForProgress = true;
context_->putOffset = put_offset;
@@ -59,6 +128,7 @@
context_->error = NPDeviceContext3DError_GenericError;
return ConvertState();
+#endif // ENABLE_NEW_NPDEVICE_API
}
void CommandBufferPepper::SetGetOffset(int32 get_offset) {
@@ -100,6 +170,21 @@
NOTREACHED();
}
+gpu::error::Error CommandBufferPepper::GetCachedError() {
+ int32 attrib_list[] = {
+ NPAttrib_Error, 0,
+ NPAttrib_End
+ };
+ device_->synchronizeContext(npp_,
+ context_,
+ NPDeviceSynchronizationMode_Cached,
+ NULL,
+ attrib_list,
+ NULL,
+ NULL);
+ return static_cast<gpu::error::Error>(attrib_list[1]);
+}
+
CommandBuffer::State CommandBufferPepper::ConvertState() {
CommandBuffer::State state;
state.size = context_->commandBufferSize;

Powered by Google App Engine
This is Rietveld 408576698