[PATCH 4/5] wined3d: Return data as struct wined3d_bo_address in buffer_get_memory().
Henri Verbeet
hverbeet at codeweavers.com
Sun Jul 10 18:06:45 CDT 2011
---
dlls/wined3d/buffer.c | 15 ++++++++-------
dlls/wined3d/device.c | 2 +-
dlls/wined3d/wined3d_private.h | 4 ++--
3 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index fa14f3a..305b5e9 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -467,10 +467,10 @@ static inline void fixup_transformed_pos(float *p)
}
/* Context activation is done by the caller. */
-const BYTE *buffer_get_memory(struct wined3d_buffer *buffer,
- const struct wined3d_gl_info *gl_info, GLuint *buffer_object)
+void buffer_get_memory(struct wined3d_buffer *buffer, const struct wined3d_gl_info *gl_info,
+ struct wined3d_bo_address *data)
{
- *buffer_object = buffer->buffer_object;
+ data->buffer_object = buffer->buffer_object;
if (!buffer->buffer_object)
{
if (buffer->flags & WINED3D_BUFFER_CREATEBO)
@@ -479,15 +479,16 @@ const BYTE *buffer_get_memory(struct wined3d_buffer *buffer,
buffer->flags &= ~WINED3D_BUFFER_CREATEBO;
if (buffer->buffer_object)
{
- *buffer_object = buffer->buffer_object;
- return NULL;
+ data->buffer_object = buffer->buffer_object;
+ data->addr = NULL;
+ return;
}
}
- return buffer->resource.allocatedMemory;
+ data->addr = buffer->resource.allocatedMemory;
}
else
{
- return NULL;
+ data->addr = NULL;
}
}
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 7c03df3..5cc1c84 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -213,7 +213,7 @@ void device_stream_info_from_declaration(struct wined3d_device *device,
else
{
TRACE("Stream %u isn't UP, %p\n", element->input_slot, buffer);
- data.addr = buffer_get_memory(buffer, &device->adapter->gl_info, &data.buffer_object);
+ buffer_get_memory(buffer, &device->adapter->gl_info, &data);
/* 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 3e44af5..72c4782 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2404,8 +2404,8 @@ static inline struct wined3d_buffer *buffer_from_resource(struct wined3d_resourc
return CONTAINING_RECORD(resource, struct wined3d_buffer, resource);
}
-const BYTE *buffer_get_memory(struct wined3d_buffer *buffer, const struct wined3d_gl_info *gl_info,
- GLuint *buffer_object) DECLSPEC_HIDDEN;
+void buffer_get_memory(struct wined3d_buffer *buffer, const struct wined3d_gl_info *gl_info,
+ struct wined3d_bo_address *data) DECLSPEC_HIDDEN;
BYTE *buffer_get_sysmem(struct wined3d_buffer *This, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
struct wined3d_rendertarget_view
--
1.7.3.4
More information about the wine-patches
mailing list