From f3cd7f8fe41224b2788e15bd08eda8c7582d71b5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 13 Sep 2014 19:33:06 +0200 Subject: [PATCH] (D3D) Create d3d_vertex_buffer_lock --- gfx/d3d9/d3d_wrapper.c | 22 ++++++++++++++++++++++ gfx/d3d9/d3d_wrapper.h | 2 ++ gfx/d3d9/render_chain.cpp | 3 +-- gfx/d3d9/render_chain_xdk.h | 7 +------ 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/gfx/d3d9/d3d_wrapper.c b/gfx/d3d9/d3d_wrapper.c index 964f3735ac..41f22e7868 100644 --- a/gfx/d3d9/d3d_wrapper.c +++ b/gfx/d3d9/d3d_wrapper.c @@ -104,6 +104,28 @@ LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(LPDIRECT3DDEVICE dev, return buf; } +void *d3d_vertex_buffer_lock(LPDIRECT3DVERTEXBUFFER vertbuf) +{ +#ifdef _XBOX1 + BYTE *buf; +#else + void *buf; +#endif + +#if defined(_XBOX1) + buf = D3DVertexBuffer_Lock2(vertbuf, 0); +#elif defined(_XBOX360) + buf = D3DVertexBuffer_Lock(vertbuf, 0, 0, 0); +#else + vertbuf->Lock(0, sizeof(buf), &buf, 0); +#endif + + if (!buf) + return NULL; + + return buf; +} + void d3d_vertex_buffer_free(LPDIRECT3DVERTEXBUFFER buf) { if (buf) diff --git a/gfx/d3d9/d3d_wrapper.h b/gfx/d3d9/d3d_wrapper.h index fd562ee9c8..54abd68ccb 100644 --- a/gfx/d3d9/d3d_wrapper.h +++ b/gfx/d3d9/d3d_wrapper.h @@ -26,6 +26,8 @@ LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(LPDIRECT3DDEVICE dev, unsigned length, unsigned usage, unsigned fvf, D3DPOOL pool, void *handle); +void *d3d_vertex_buffer_lock(LPDIRECT3DVERTEXBUFFER vertbuf); + void d3d_vertex_buffer_free(LPDIRECT3DVERTEXBUFFER buf); LPDIRECT3DTEXTURE d3d_texture_new(LPDIRECT3DDEVICE dev, diff --git a/gfx/d3d9/render_chain.cpp b/gfx/d3d9/render_chain.cpp index 69a382741c..76c7ed87c9 100644 --- a/gfx/d3d9/render_chain.cpp +++ b/gfx/d3d9/render_chain.cpp @@ -455,8 +455,7 @@ void renderchain_set_vertices(void *data, Pass *pass, vert[i].y += 0.5f; } - void *verts; - pass->vertex_buf->Lock(0, sizeof(vert), &verts, 0); + void *verts = d3d_vertex_buffer_lock(pass->vertex_buf); memcpy(verts, vert, sizeof(vert)); pass->vertex_buf->Unlock(); } diff --git a/gfx/d3d9/render_chain_xdk.h b/gfx/d3d9/render_chain_xdk.h index f36ca847b9..23bc6567ce 100644 --- a/gfx/d3d9/render_chain_xdk.h +++ b/gfx/d3d9/render_chain_xdk.h @@ -204,12 +204,7 @@ static void renderchain_set_vertices(void *data, unsigned pass, unsigned width, vert[i].y += 0.5f / ((float)d3d->tex_h); } -#if defined(_XBOX1) - BYTE *verts; -#elif defined(_XBOX360) - void *verts; -#endif - RD3DVertexBuffer_Lock(d3d->vertex_buf, 0, 0, &verts, 0); + void *verts = d3d_vertex_buffer_lock(d3d->vertex_buf); memcpy(verts, vert, sizeof(vert)); RD3DVertexBuffer_Unlock(d3d->vertex_buf); }