Henri Verbeet : wined3d: Explicitly pass GL info to buffer_create_buffer_object().

Alexandre Julliard julliard at winehq.org
Fri May 21 12:15:18 CDT 2010


Module: wine
Branch: master
Commit: e6473094026f9bb2953672afb407d529ca6db9bf
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e6473094026f9bb2953672afb407d529ca6db9bf

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Fri May 21 09:35:23 2010 +0200

wined3d: Explicitly pass GL info to buffer_create_buffer_object().

---

 dlls/wined3d/buffer.c          |    9 ++++-----
 dlls/wined3d/device.c          |    3 ++-
 dlls/wined3d/wined3d_private.h |    3 ++-
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 7d3d078..fbd39b9 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -117,10 +117,9 @@ static void delete_gl_buffer(struct wined3d_buffer *This, const struct wined3d_g
 }
 
 /* Context activation is done by the caller. */
-static void buffer_create_buffer_object(struct wined3d_buffer *This)
+static void buffer_create_buffer_object(struct wined3d_buffer *This, const struct wined3d_gl_info *gl_info)
 {
     GLenum error, gl_usage;
-    const struct wined3d_gl_info *gl_info = &This->resource.device->adapter->gl_info;
 
     TRACE("Creating an OpenGL vertex buffer object for IWineD3DVertexBuffer %p Usage(%s)\n",
             This, debug_d3dusage(This->resource.usage));
@@ -613,7 +612,7 @@ static inline void fixup_transformed_pos(float *p)
 }
 
 /* Context activation is done by the caller. */
-const BYTE *buffer_get_memory(IWineD3DBuffer *iface, GLuint *buffer_object)
+const BYTE *buffer_get_memory(IWineD3DBuffer *iface, const struct wined3d_gl_info *gl_info, GLuint *buffer_object)
 {
     struct wined3d_buffer *This = (struct wined3d_buffer *)iface;
 
@@ -622,7 +621,7 @@ const BYTE *buffer_get_memory(IWineD3DBuffer *iface, GLuint *buffer_object)
     {
         if (This->flags & WINED3D_BUFFER_CREATEBO)
         {
-            buffer_create_buffer_object(This);
+            buffer_create_buffer_object(This, gl_info);
             This->flags &= ~WINED3D_BUFFER_CREATEBO;
             if (This->buffer_object)
             {
@@ -946,7 +945,7 @@ static void STDMETHODCALLTYPE buffer_PreLoad(IWineD3DBuffer *iface)
         /* TODO: Make converting independent from VBOs */
         if (This->flags & WINED3D_BUFFER_CREATEBO)
         {
-            buffer_create_buffer_object(This);
+            buffer_create_buffer_object(This, gl_info);
             This->flags &= ~WINED3D_BUFFER_CREATEBO;
         }
         else
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index e73ecc9..fd8cd60 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -213,7 +213,8 @@ void device_stream_info_from_declaration(IWineD3DDeviceImpl *This,
         else
         {
             TRACE("Stream %u isn't UP, %p\n", element->input_slot, This->stateBlock->streamSource[element->input_slot]);
-            data = buffer_get_memory(This->stateBlock->streamSource[element->input_slot], &buffer_object);
+            data = buffer_get_memory(This->stateBlock->streamSource[element->input_slot],
+                    &This->adapter->gl_info, &buffer_object);
 
             /* Can't use vbo's if the base vertex index is negative. OpenGL doesn't accept negative offsets
              * (or rather offsets bigger than the vbo, because the pointer is unsigned), so use system memory
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index e1f4282..947456a 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2503,7 +2503,8 @@ struct wined3d_buffer
     UINT *conversion_shift;                                 /* NULL if no shifted conversion */
 };
 
-const BYTE *buffer_get_memory(IWineD3DBuffer *iface, GLuint *buffer_object) DECLSPEC_HIDDEN;
+const BYTE *buffer_get_memory(IWineD3DBuffer *iface, const struct wined3d_gl_info *gl_info,
+        GLuint *buffer_object) DECLSPEC_HIDDEN;
 BYTE *buffer_get_sysmem(struct wined3d_buffer *This) DECLSPEC_HIDDEN;
 HRESULT buffer_init(struct wined3d_buffer *buffer, IWineD3DDeviceImpl *device,
         UINT size, DWORD usage, WINED3DFORMAT format, WINED3DPOOL pool, GLenum bind_hint,




More information about the wine-cvs mailing list