diff --git a/gfx/d3d9/d3d.cpp b/gfx/d3d9/d3d.cpp index aa749d86ec..08ab3d43e9 100644 --- a/gfx/d3d9/d3d.cpp +++ b/gfx/d3d9/d3d.cpp @@ -589,7 +589,7 @@ static void d3d_overlay_render(void *data, overlay_t *overlay) vertex_decl->Release(); #endif - d3d->dev->SetStreamSource(0, overlay->vert_buf, 0, sizeof(overlay_vertex)); + D3DDevice_SetStreamSources(d3d->dev, 0, overlay->vert_buf, 0, sizeof(overlay_vertex)); if (overlay->fullscreen) { diff --git a/gfx/d3d9/d3d9.hpp b/gfx/d3d9/d3d9.hpp index 1c9f836ce4..4d052cf51e 100644 --- a/gfx/d3d9/d3d9.hpp +++ b/gfx/d3d9/d3d9.hpp @@ -77,6 +77,8 @@ class RenderChain; d3d->needs_restore = true; \ } #define D3DDevice_CreateVertexBuffers(device, Length, Usage, UnusedFVF, UnusedPool, ppVertexBuffer, pUnusedSharedHandle) device->CreateVertexBuffer(Length, Usage, UnusedFVF, UnusedPool, ppVertexBuffer, NULL) + +#define D3DDevice_SetStreamSources(device, streamNumber, pStreamData, OffsetInBytes, Stride) device->SetStreamSource(streamNumber, pStreamData, OffsetInBytes, Stride) #endif diff --git a/gfx/d3d9/render_chain.cpp b/gfx/d3d9/render_chain.cpp index 675543f4eb..49da813ceb 100644 --- a/gfx/d3d9/render_chain.cpp +++ b/gfx/d3d9/render_chain.cpp @@ -574,7 +574,13 @@ void renderchain_render_pass(void *data, Pass &pass, unsigned pass_index) d3dr->SetVertexDeclaration(pass.vertex_decl); #endif for (unsigned i = 0; i < 4; i++) - d3dr->SetStreamSource(i, pass.vertex_buf, 0, sizeof(Vertex)); + { +#ifdef _XBOX + D3DDevice_SetStreamSources(d3dr, i, pass.vertex_buf, 0, sizeof(DrawVerticeFormats)); +#else + D3DDevice_SetStreamSources(d3dr, i, pass.vertex_buf, 0, sizeof(Vertex)); +#endif + } renderchain_bind_orig(chain, pass); renderchain_bind_prev(chain, pass); @@ -647,7 +653,9 @@ void renderchain_unbind_all(void *data) } for (unsigned i = 0; i < chain->bound_vert.size(); i++) - d3dr->SetStreamSource(chain->bound_vert[i], 0, 0, 0); + { + D3DDevice_SetStreamSources(d3dr, chain->bound_vert[i], 0, 0, 0); + } chain->bound_tex.clear(); chain->bound_vert.clear(); diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index 25ccfb31c2..f20be64216 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -470,7 +470,7 @@ static bool texture_image_render(void *data, struct texture_image *out_img, // draw the quad d3dr->SetTexture(0, out_img->pixels); - d3dr->SetStreamSource(0, out_img->vertex_buf, sizeof(DrawVerticeFormats)); + D3DDevice_SetStreamSources(d3dr, 0, out_img->vertex_buf, 0, sizeof(DrawVerticeFormats)); d3dr->SetVertexShader(D3DFVF_CUSTOMVERTEX); if (force_fullscreen) @@ -663,11 +663,13 @@ static void render_pass(void *data, const void *frame, unsigned width, unsigned #if defined(_XBOX1) RD3DDevice_SetVertexShader(d3dr, D3DFVF_XYZ | D3DFVF_TEX1); - IDirect3DDevice8_SetStreamSource(d3dr, 0, d3d->vertex_buf, sizeof(DrawVerticeFormats)); #elif defined(_XBOX360) D3DDevice_SetVertexDeclaration(d3dr, d3d->vertex_decl); - D3DDevice_SetStreamSource_Inline(d3dr, 0, d3d->vertex_buf, 0, sizeof(DrawVerticeFormats)); #endif + for (unsigned i = 0; i < 4; i++) + { + D3DDevice_SetStreamSources(d3dr, i, d3d->vertex_buf, 0, sizeof(DrawVerticeFormats)); + } D3DDevice_DrawPrimitive(d3dr, D3DPT_TRIANGLESTRIP, 0, 2); diff --git a/xdk/xdk_defines.h b/xdk/xdk_defines.h index c50bd162ba..ccc9f8181f 100644 --- a/xdk/xdk_defines.h +++ b/xdk/xdk_defines.h @@ -54,6 +54,7 @@ #define D3DDevice_SetSamplerState_AddressU(device, sampler, value) SetSamplerState_function(device, sampler, D3DTSS_ADDRESSU, value) #define D3DDevice_SetSamplerState_AddressV(device, sampler, value) SetSamplerState_function(device, sampler, D3DTSS_ADDRESSV, value) #define D3DDevice_CreateVertexBuffers(device, Length, Usage, UnusedFVF, UnusedPool, ppVertexBuffer, pUnusedSharedHandle) IDirect3DDevice8_CreateVertexBuffer(device, Length, Usage, UnusedFVF, UnusedPool, ppVertexBuffer) +#define D3DDevice_SetStreamSources(device, streamNumber, pStreamData, OffsetInBytes, Stride) IDirect3DDevice8_SetStreamSource(device, streamNumber, pStreamData, Stride); #define D3DLOCK_NOSYSLOCK (0) @@ -89,6 +90,8 @@ pendingMask3 = D3DTAG_MASKENCODE(D3DTAG_START(D3DTAG_FETCHCONSTANTS) + fetchConstant, D3DTAG_START(D3DTAG_FETCHCONSTANTS) + fetchConstant); \ D3DDevice_SetTexture(device, Stage, pTexture, pendingMask3) +#define D3DDevice_SetStreamSources(device, streamNumber, pStreamData, OffsetInBytes, Stride) D3DDevice_SetStreamSource_Inline(device, streamNumber, pStreamData, OffsetInBytes, Stride) + #define D3DDevice_CreateVertexBuffers(device, Length, Usage, UnusedFVF, UnusedPool, ppVertexBuffer, pUnusedSharedHandle) IDirect3DDevice9_CreateVertexBuffer(device, Length, Usage, UnusedFVF, UnusedPool, ppVertexBuffer, NULL) #define RD3DDevice_DrawPrimitive(device, PrimitiveType, StartVertex, PrimitiveCount) D3DDevice_DrawVertices(device, PrimitiveType, StartVertex, D3DVERTEXCOUNT(PrimitiveType, PrimitiveCount)) #define RD3DDevice_Clear(device, Count, pRects, Flags, Color, Z, Stencil) D3DDevice_Clear(device, Count, pRects, Flags, Color, Z, Stencil, false)