Module: wine Branch: master Commit: e536f99871a8ca6bf8f02d18a438f52936eaddf0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e536f99871a8ca6bf8f02d18a4...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Fri May 21 09:35:22 2010 +0200
wined3d: Set the buffer.c GLINFO_LOCATION to *gl_info.
---
dlls/wined3d/buffer.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index 8372b7a..7d3d078 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -29,7 +29,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(d3d);
-#define GLINFO_LOCATION This->resource.device->adapter->gl_info +#define GLINFO_LOCATION (*gl_info)
#define VB_MAXDECLCHANGES 100 /* After that number of decl changes we stop converting */ #define VB_RESETDECLCHANGE 1000 /* Reset the decl changecount after that number of draws */ @@ -98,7 +98,7 @@ static inline BOOL buffer_is_fully_dirty(struct wined3d_buffer *This) }
/* Context activation is done by the caller */ -static void delete_gl_buffer(struct wined3d_buffer *This) +static void delete_gl_buffer(struct wined3d_buffer *This, const struct wined3d_gl_info *gl_info) { if(!This->buffer_object) return;
@@ -226,7 +226,7 @@ static void buffer_create_buffer_object(struct wined3d_buffer *This) fail: /* Clean up all vbo init, but continue because we can work without a vbo :-) */ ERR("Failed to create a vertex buffer object. Continuing, but performance issues may occur\n"); - delete_gl_buffer(This); + delete_gl_buffer(This, gl_info); buffer_clear_dirty_areas(This); }
@@ -552,7 +552,7 @@ static BOOL buffer_find_decl(struct wined3d_buffer *This) }
/* Context activation is done by the caller. */ -static void buffer_check_buffer_object_size(struct wined3d_buffer *This) +static void buffer_check_buffer_object_size(struct wined3d_buffer *This, const struct wined3d_gl_info *gl_info) { UINT size = This->conversion_stride ? This->conversion_stride * (This->resource.size / This->stride) : This->resource.size; @@ -675,6 +675,8 @@ static ULONG STDMETHODCALLTYPE buffer_AddRef(IWineD3DBuffer *iface) /* Context activation is done by the caller. */ BYTE *buffer_get_sysmem(struct wined3d_buffer *This) { + const struct wined3d_gl_info *gl_info = &This->resource.device->adapter->gl_info; + /* AllocatedMemory exists if the buffer is double buffered or has no buffer object at all */ if(This->resource.allocatedMemory) return This->resource.allocatedMemory;
@@ -709,7 +711,7 @@ static void STDMETHODCALLTYPE buffer_UnLoad(IWineD3DBuffer *iface) This->flags &= ~WINED3D_BUFFER_DOUBLEBUFFER; }
- delete_gl_buffer(This); + delete_gl_buffer(This, context->gl_info); This->flags |= WINED3D_BUFFER_CREATEBO; /* Recreate the buffer object next load */ buffer_clear_dirty_areas(This);
@@ -926,6 +928,7 @@ static void STDMETHODCALLTYPE buffer_PreLoad(IWineD3DBuffer *iface) struct wined3d_buffer *This = (struct wined3d_buffer *)iface; IWineD3DDeviceImpl *device = This->resource.device; UINT start = 0, end = 0, len = 0, vertices; + const struct wined3d_gl_info *gl_info; struct wined3d_context *context; BOOL decl_changed = FALSE; unsigned int i, j; @@ -936,6 +939,7 @@ static void STDMETHODCALLTYPE buffer_PreLoad(IWineD3DBuffer *iface) This->flags &= ~(WINED3D_BUFFER_NOSYNC | WINED3D_BUFFER_DISCARD);
context = context_acquire(device, NULL); + gl_info = context->gl_info;
if (!This->buffer_object) { @@ -993,7 +997,7 @@ static void STDMETHODCALLTYPE buffer_PreLoad(IWineD3DBuffer *iface) IWineD3DDeviceImpl_MarkStateDirty(device, STATE_STREAMSRC); goto end; } - buffer_check_buffer_object_size(This); + buffer_check_buffer_object_size(This, gl_info);
/* The declaration changed, reload the whole buffer */ WARN("Reloading buffer because of decl change\n");