wined3d: Introduce wined3d_buffer_prepapre_location().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
686cfe3aaf
commit
171e272f85
|
@ -538,6 +538,32 @@ ULONG CDECL wined3d_buffer_incref(struct wined3d_buffer *buffer)
|
||||||
return refcount;
|
return refcount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL wined3d_buffer_prepare_location(struct wined3d_buffer *buffer,
|
||||||
|
struct wined3d_context *context, DWORD location)
|
||||||
|
{
|
||||||
|
switch (location)
|
||||||
|
{
|
||||||
|
case WINED3D_LOCATION_SYSMEM:
|
||||||
|
if (buffer->resource.heap_memory)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (!wined3d_resource_allocate_sysmem(&buffer->resource))
|
||||||
|
{
|
||||||
|
ERR("Failed to allocate system memory.\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case WINED3D_LOCATION_BUFFER:
|
||||||
|
FIXME("Not implemented yet.\n");
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ERR("Invalid location %s.\n", wined3d_debug_location(location));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Context activation is done by the caller. */
|
/* Context activation is done by the caller. */
|
||||||
BYTE *wined3d_buffer_load_sysmem(struct wined3d_buffer *buffer, struct wined3d_context *context)
|
BYTE *wined3d_buffer_load_sysmem(struct wined3d_buffer *buffer, struct wined3d_context *context)
|
||||||
{
|
{
|
||||||
|
@ -547,8 +573,8 @@ BYTE *wined3d_buffer_load_sysmem(struct wined3d_buffer *buffer, struct wined3d_c
|
||||||
if (buffer->resource.heap_memory)
|
if (buffer->resource.heap_memory)
|
||||||
return buffer->resource.heap_memory;
|
return buffer->resource.heap_memory;
|
||||||
|
|
||||||
if (!wined3d_resource_allocate_sysmem(&buffer->resource))
|
if (!wined3d_buffer_prepare_location(buffer, context, WINED3D_LOCATION_SYSMEM))
|
||||||
ERR("Failed to allocate system memory.\n");
|
return NULL;
|
||||||
|
|
||||||
buffer_bind(buffer, context);
|
buffer_bind(buffer, context);
|
||||||
GL_EXTCALL(glGetBufferSubData(buffer->buffer_type_hint, 0, buffer->resource.size, buffer->resource.heap_memory));
|
GL_EXTCALL(glGetBufferSubData(buffer->buffer_type_hint, 0, buffer->resource.size, buffer->resource.heap_memory));
|
||||||
|
|
Loading…
Reference in New Issue