void CDECL wined3d_resource_update(struct wined3d_device *device, struct wined3d_resource *resource, UINT sub_resource_idx, struct wined3d_box *box, const void *data, UINT row_pitch, UINT depth_pitch) { struct wined3d_buffer *buffer; BYTE *dest; if (resource->type != WINED3D_RTYPE_BUFFER) { FIXME("Unsuported resource type: %d\n", resource->type); return; } if (sub_resource_idx || box) { WARN("Subresource index and/or Box parameter is not supported for buffers\n"); return; } /* FIXME: should normally use the command stream here */ buffer = buffer_from_resource(resource); if (SUCCEEDED(wined3d_buffer_map(buffer, 0, 0, &dest, 0))) { memcpy(dest, data, buffer->desc.byte_width); /* FIXME: is row_pitch and depth_pitch used? */ wined3d_buffer_unmap(buffer); } }
static void STDMETHODCALLTYPE d3d10_buffer_Unmap(ID3D10Buffer *iface) { struct d3d_buffer *buffer = impl_from_ID3D10Buffer(iface); TRACE("iface %p.\n", iface); wined3d_mutex_lock(); wined3d_buffer_unmap(buffer->wined3d_buffer); wined3d_mutex_unlock(); }
/***************************************************************************** * IDirect3DVertexBuffer7::Unlock * * Unlocks a vertex Buffer * * Returns: * D3D_OK on success * *****************************************************************************/ static HRESULT WINAPI d3d_vertex_buffer7_Unlock(IDirect3DVertexBuffer7 *iface) { struct d3d_vertex_buffer *buffer = impl_from_IDirect3DVertexBuffer7(iface); TRACE("iface %p.\n", iface); wined3d_mutex_lock(); wined3d_buffer_unmap(buffer->wineD3DVertexBuffer); wined3d_mutex_unlock(); return D3D_OK; }
static HRESULT WINAPI d3d9_indexbuffer_Unlock(IDirect3DIndexBuffer9 *iface) { IDirect3DIndexBuffer9Impl *buffer = impl_from_IDirect3DIndexBuffer9(iface); TRACE("iface %p.\n", iface); wined3d_mutex_lock(); wined3d_buffer_unmap(buffer->wineD3DIndexBuffer); wined3d_mutex_unlock(); return D3D_OK; }
/***************************************************************************** * IDirect3DVertexBuffer7::Unlock * * Unlocks a vertex Buffer * * Returns: * D3D_OK on success * *****************************************************************************/ static HRESULT WINAPI IDirect3DVertexBufferImpl_Unlock(IDirect3DVertexBuffer7 *iface) { IDirect3DVertexBufferImpl *This = impl_from_IDirect3DVertexBuffer7(iface); TRACE("iface %p.\n", iface); wined3d_mutex_lock(); wined3d_buffer_unmap(This->wineD3DVertexBuffer); wined3d_mutex_unlock(); return D3D_OK; }
/***************************************************************************** * IDirect3DVertexBuffer7::Unlock * * Unlocks a vertex Buffer * * Returns: * D3D_OK on success * *****************************************************************************/ static HRESULT WINAPI IDirect3DVertexBufferImpl_Unlock(IDirect3DVertexBuffer7 *iface) { IDirect3DVertexBufferImpl *This = (IDirect3DVertexBufferImpl *)iface; TRACE("iface %p.\n", iface); EnterCriticalSection(&ddraw_cs); wined3d_buffer_unmap(This->wineD3DVertexBuffer); LeaveCriticalSection(&ddraw_cs); return D3D_OK; }
static void STDMETHODCALLTYPE d3d10_buffer_Unmap(ID3D10Buffer *iface) { TRACE("iface %p.\n", iface); wined3d_buffer_unmap(((struct d3d10_buffer *)iface)->wined3d_buffer); }