mirror of
https://github.com/libretro/RetroArch
synced 2025-03-30 07:20:36 +00:00
(XDK D3D) More inlined functions
This commit is contained in:
parent
671725cfdd
commit
99265999d8
@ -303,9 +303,9 @@ static void xdk_d3d_set_rotation(void *data, unsigned orientation)
|
|||||||
D3DXMatrixIdentity(&p_out);
|
D3DXMatrixIdentity(&p_out);
|
||||||
D3DXMatrixRotationZ(&p_rotate, angle);
|
D3DXMatrixRotationZ(&p_rotate, angle);
|
||||||
|
|
||||||
d3d->d3d_render_device->SetTransform(D3DTS_WORLD, &p_rotate);
|
RD3DDevice_SetTransform(d3d->d3d_render_device, D3DTS_WORLD, &p_rotate);
|
||||||
d3d->d3d_render_device->SetTransform(D3DTS_VIEW, &p_out);
|
RD3DDevice_SetTransform(d3d->d3d_render_device, D3DTS_VIEW, &p_out);
|
||||||
d3d->d3d_render_device->SetTransform(D3DTS_PROJECTION, &p_out);
|
RD3DDevice_SetTransform(d3d->d3d_render_device, D3DTS_PROJECTION, &p_out);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -485,9 +485,8 @@ static void xdk_d3d_init_textures(void *data, const video_info_t *video)
|
|||||||
}
|
}
|
||||||
|
|
||||||
D3DLOCKED_RECT d3dlr;
|
D3DLOCKED_RECT d3dlr;
|
||||||
d3d->lpTexture->LockRect(0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
|
D3DTexture_LockRect(d3d->lpTexture, 0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
|
||||||
memset(d3dlr.pBits, 0, d3d->tex_w * d3dlr.Pitch);
|
memset(d3dlr.pBits, 0, d3d->tex_w * d3dlr.Pitch);
|
||||||
d3d->lpTexture->UnlockRect(0);
|
|
||||||
|
|
||||||
d3d->last_width = d3d->tex_w;
|
d3d->last_width = d3d->tex_w;
|
||||||
d3d->last_height = d3d->tex_h;
|
d3d->last_height = d3d->tex_h;
|
||||||
@ -626,11 +625,11 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu
|
|||||||
};
|
};
|
||||||
|
|
||||||
BYTE *verts_ptr;
|
BYTE *verts_ptr;
|
||||||
d3d->vertex_buf->Lock(0, 0, &verts_ptr, 0);
|
RD3DVertexBuffer_Lock(d3d->vertex_buf, 0, 0, &verts_ptr, 0);
|
||||||
memcpy(verts_ptr, init_verts, sizeof(init_verts));
|
memcpy(verts_ptr, init_verts, sizeof(init_verts));
|
||||||
d3d->vertex_buf->Unlock();
|
RD3DVertexBuffer_Unlock(d3d->vertex_buf);
|
||||||
|
|
||||||
d3d->d3d_render_device->SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1);
|
RD3DDevice_SetVertexShader(d3d->d3d_render_device, D3DFVF_XYZ | D3DFVF_TEX1);
|
||||||
#elif defined(_XBOX360)
|
#elif defined(_XBOX360)
|
||||||
ret = d3d->d3d_render_device->CreateVertexBuffer(4 * sizeof(DrawVerticeFormats),
|
ret = d3d->d3d_render_device->CreateVertexBuffer(4 * sizeof(DrawVerticeFormats),
|
||||||
0, 0, 0, &d3d->vertex_buf, NULL);
|
0, 0, 0, &d3d->vertex_buf, NULL);
|
||||||
@ -649,9 +648,9 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu
|
|||||||
};
|
};
|
||||||
|
|
||||||
void *verts_ptr;
|
void *verts_ptr;
|
||||||
d3d->vertex_buf->Lock(0, 0, &verts_ptr, 0);
|
RD3DVertexBuffer_Lock(d3d->vertex_buf, 0, 0, &verts_ptr, 0);
|
||||||
memcpy(verts_ptr, init_verts, sizeof(init_verts));
|
memcpy(verts_ptr, init_verts, sizeof(init_verts));
|
||||||
d3d->vertex_buf->Unlock();
|
RD3DVertexBuffer_Unlock(d3d->vertex_buf);
|
||||||
|
|
||||||
static const D3DVERTEXELEMENT VertexElements[] =
|
static const D3DVERTEXELEMENT VertexElements[] =
|
||||||
{
|
{
|
||||||
@ -735,7 +734,7 @@ bool texture_image_render(struct texture_image *out_img,
|
|||||||
// copy the new verts over the old verts
|
// copy the new verts over the old verts
|
||||||
memcpy(pCurVerts, newVerts, 4 * sizeof(DrawVerticeFormats));
|
memcpy(pCurVerts, newVerts, 4 * sizeof(DrawVerticeFormats));
|
||||||
|
|
||||||
out_img->vertex_buf->Unlock();
|
RD3DVertexBuffer_Unlock(out_img->vertex_buf);
|
||||||
|
|
||||||
d3d->d3d_render_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
|
d3d->d3d_render_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
|
||||||
d3d->d3d_render_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
|
d3d->d3d_render_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
|
||||||
@ -747,10 +746,10 @@ bool texture_image_render(struct texture_image *out_img,
|
|||||||
d3d->d3d_render_device->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE);
|
d3d->d3d_render_device->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE);
|
||||||
|
|
||||||
// draw the quad
|
// draw the quad
|
||||||
d3d->d3d_render_device->SetTexture(0, out_img->pixels);
|
RD3DDevice_SetTexture(d3d->d3d_render_device, 0, out_img->pixels);
|
||||||
d3d->d3d_render_device->SetStreamSource(0, out_img->vertex_buf, sizeof(DrawVerticeFormats));
|
IDirect3DDevice8_SetStreamSource(d3d->d3d_render_device, 0, out_img->vertex_buf, sizeof(DrawVerticeFormats));
|
||||||
d3d->d3d_render_device->SetVertexShader(D3DFVF_CUSTOMVERTEX);
|
RD3DDevice_SetVertexShader(d3d->d3d_render_device, D3DFVF_CUSTOMVERTEX);
|
||||||
d3d->d3d_render_device->DrawPrimitive(D3DPT_QUADLIST, 0, 1);
|
RD3DDevice_DrawPrimitive(d3d->d3d_render_device, D3DPT_QUADLIST, 0, 1);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -798,6 +797,10 @@ static inline void xdk_d3d_draw_texture(void *data)
|
|||||||
static bool xdk_d3d_frame(void *data, const void *frame,
|
static bool xdk_d3d_frame(void *data, const void *frame,
|
||||||
unsigned width, unsigned height, unsigned pitch, const char *msg)
|
unsigned width, unsigned height, unsigned pitch, const char *msg)
|
||||||
{
|
{
|
||||||
|
#ifndef _XBOX1
|
||||||
|
DWORD fetchConstant;
|
||||||
|
UINT64 pendingMask3;
|
||||||
|
#endif
|
||||||
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)data;
|
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)data;
|
||||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->d3d_render_device;
|
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->d3d_render_device;
|
||||||
uint64_t lifecycle_mode_state = g_extern.lifecycle_mode_state;
|
uint64_t lifecycle_mode_state = g_extern.lifecycle_mode_state;
|
||||||
@ -809,9 +812,8 @@ static bool xdk_d3d_frame(void *data, const void *frame,
|
|||||||
{
|
{
|
||||||
D3DLOCKED_RECT d3dlr;
|
D3DLOCKED_RECT d3dlr;
|
||||||
|
|
||||||
d3d->lpTexture->LockRect(0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
|
D3DTexture_LockRect(d3d->lpTexture, 0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
|
||||||
memset(d3dlr.pBits, 0, d3d->tex_w * d3dlr.Pitch);
|
memset(d3dlr.pBits, 0, d3d->tex_w * d3dlr.Pitch);
|
||||||
d3d->lpTexture->UnlockRect(0);
|
|
||||||
|
|
||||||
#if defined(_XBOX1)
|
#if defined(_XBOX1)
|
||||||
float tex_w = width;
|
float tex_w = width;
|
||||||
@ -847,9 +849,9 @@ static bool xdk_d3d_frame(void *data, const void *frame,
|
|||||||
#elif defined(_XBOX360)
|
#elif defined(_XBOX360)
|
||||||
void *verts_ptr;
|
void *verts_ptr;
|
||||||
#endif
|
#endif
|
||||||
d3d->vertex_buf->Lock(0, 0, &verts_ptr, 0);
|
RD3DVertexBuffer_Lock(d3d->vertex_buf, 0, 0, &verts_ptr, 0);
|
||||||
memcpy(verts_ptr, verts, sizeof(verts));
|
memcpy(verts_ptr, verts, sizeof(verts));
|
||||||
d3d->vertex_buf->Unlock();
|
RD3DVertexBuffer_Unlock(d3d->vertex_buf);
|
||||||
|
|
||||||
d3d->last_width = width;
|
d3d->last_width = width;
|
||||||
d3d->last_height = height;
|
d3d->last_height = height;
|
||||||
@ -866,7 +868,7 @@ static bool xdk_d3d_frame(void *data, const void *frame,
|
|||||||
if (d3d->should_resize)
|
if (d3d->should_resize)
|
||||||
xdk_d3d_set_viewport(false);
|
xdk_d3d_set_viewport(false);
|
||||||
|
|
||||||
d3dr->SetTexture(0, d3d->lpTexture);
|
RD3DDevice_SetTexture(d3dr, 0, d3d->lpTexture);
|
||||||
|
|
||||||
#ifdef HAVE_HLSL
|
#ifdef HAVE_HLSL
|
||||||
if (d3d->shader)
|
if (d3d->shader)
|
||||||
@ -907,7 +909,7 @@ NULL, NULL, NULL, 0);
|
|||||||
{
|
{
|
||||||
unsigned base_size = d3d->base_size;
|
unsigned base_size = d3d->base_size;
|
||||||
D3DLOCKED_RECT d3dlr;
|
D3DLOCKED_RECT d3dlr;
|
||||||
d3d->lpTexture->LockRect(0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
|
D3DTexture_LockRect(d3d->lpTexture, 0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
|
||||||
|
|
||||||
for (unsigned y = 0; y < height; y++)
|
for (unsigned y = 0; y < height; y++)
|
||||||
{
|
{
|
||||||
@ -915,7 +917,6 @@ NULL, NULL, NULL, 0);
|
|||||||
uint8_t *out = (uint8_t*)d3dlr.pBits + y * d3dlr.Pitch;
|
uint8_t *out = (uint8_t*)d3dlr.pBits + y * d3dlr.Pitch;
|
||||||
memcpy(out, in, width * base_size);
|
memcpy(out, in, width * base_size);
|
||||||
}
|
}
|
||||||
d3d->lpTexture->UnlockRect(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RD3DDevice_SetSamplerState_MinFilter(d3dr, D3DSAMP_MINFILTER, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
RD3DDevice_SetSamplerState_MinFilter(d3dr, D3DSAMP_MINFILTER, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||||
@ -924,18 +925,16 @@ NULL, NULL, NULL, 0);
|
|||||||
RD3DDevice_SetSamplerState_AddressV(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
|
RD3DDevice_SetSamplerState_AddressV(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
|
||||||
|
|
||||||
#if defined(_XBOX1)
|
#if defined(_XBOX1)
|
||||||
d3dr->SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1);
|
RD3DDevice_SetVertexShader(d3dr, D3DFVF_XYZ | D3DFVF_TEX1);
|
||||||
|
IDirect3DDevice8_SetStreamSource(d3dr, 0, d3d->vertex_buf, sizeof(DrawVerticeFormats));
|
||||||
d3dr->SetStreamSource(0, d3d->vertex_buf, sizeof(DrawVerticeFormats));
|
|
||||||
RD3DDevice_Clear(d3dr, 0, NULL, D3DCLEAR_TARGET, 0xff000000, 1.0f, 0);
|
|
||||||
|
|
||||||
d3dr->SetFlickerFilter(g_extern.console.screen.flicker_filter_index);
|
d3dr->SetFlickerFilter(g_extern.console.screen.flicker_filter_index);
|
||||||
d3dr->SetSoftDisplayFilter(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_SOFT_FILTER_ENABLE));
|
d3dr->SetSoftDisplayFilter(g_extern.lifecycle_mode_state & (1ULL << MODE_VIDEO_SOFT_FILTER_ENABLE));
|
||||||
#elif defined(_XBOX360)
|
#elif defined(_XBOX360)
|
||||||
d3dr->SetVertexDeclaration(d3d->v_decl);
|
D3DDevice_SetVertexDeclaration(d3dr, d3d->v_decl);
|
||||||
d3dr->SetStreamSource(0, d3d->vertex_buf, 0, sizeof(DrawVerticeFormats));
|
D3DDevice_SetStreamSource_Inline(d3dr, 0, d3d->vertex_buf, 0, sizeof(DrawVerticeFormats));
|
||||||
#endif
|
#endif
|
||||||
d3dr->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
|
RD3DDevice_DrawPrimitive(d3dr, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||||
|
|
||||||
#if 0 /* ifdef HAVE_FBO */
|
#if 0 /* ifdef HAVE_FBO */
|
||||||
if (d3d->fbo_inited)
|
if (d3d->fbo_inited)
|
||||||
@ -945,7 +944,7 @@ NULL, NULL, NULL, 0);
|
|||||||
|
|
||||||
d3dr->SetRenderTarget(0, pRenderTarget0);
|
d3dr->SetRenderTarget(0, pRenderTarget0);
|
||||||
pRenderTarget0->Release();
|
pRenderTarget0->Release();
|
||||||
d3dr->SetTexture(0, &d3d->lpTexture_ot_as16srgb);
|
RD3DDevice_SetTexture(d3dr, 0, &d3d->lpTexture_ot_as16srgb);
|
||||||
|
|
||||||
#ifdef HAVE_HLSL
|
#ifdef HAVE_HLSL
|
||||||
hlsl_use(2);
|
hlsl_use(2);
|
||||||
@ -960,9 +959,9 @@ NULL, NULL, NULL, 0);
|
|||||||
RD3DDevice_SetSamplerState_MagFilter(d3dr, D3DSAMP_MAGFILTER, g_settings.video.second_pass_smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
RD3DDevice_SetSamplerState_MagFilter(d3dr, D3DSAMP_MAGFILTER, g_settings.video.second_pass_smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||||
RD3DDevice_SetSamplerState_AddressU(d3dr, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
|
RD3DDevice_SetSamplerState_AddressU(d3dr, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
|
||||||
RD3DDevice_SetSamplerState_AddressV(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
|
RD3DDevice_SetSamplerState_AddressV(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
|
||||||
d3dr->SetVertexDeclaration(d3d->v_decl);
|
D3DDevice_SetVertexDeclaration(d3dr, d3d->v_decl);
|
||||||
d3dr->SetStreamSource(0, d3d->vertex_buf, 0, sizeof(DrawVerticeFormats));
|
Direct3DDevice_SetStreamSource_Inline(d3dr, 0, d3d->vertex_buf, 0, sizeof(DrawVerticeFormats));
|
||||||
d3dr->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
|
RD3DDevice_DrawPrimitive(d3dr, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#ifndef _XDK_DEFINES_H
|
#ifndef _XDK_DEFINES_H
|
||||||
#define _XDK_DEFINES_H
|
#define _XDK_DEFINES_H
|
||||||
|
|
||||||
|
|
||||||
#if defined(_XBOX1)
|
#if defined(_XBOX1)
|
||||||
/* XBox 1*/
|
/* XBox 1*/
|
||||||
#define LPDIRECT3DRESOURCE LPDIRECT3DRESOURCE8
|
#define LPDIRECT3DRESOURCE LPDIRECT3DRESOURCE8
|
||||||
@ -37,8 +38,17 @@
|
|||||||
|
|
||||||
#define SetSamplerState_function(device, sampler, value) \
|
#define SetSamplerState_function(device, sampler, value) \
|
||||||
D3D__DirtyFlags |= (D3DDIRTYFLAG_TEXTURE_STATE_0 << 0); \
|
D3D__DirtyFlags |= (D3DDIRTYFLAG_TEXTURE_STATE_0 << 0); \
|
||||||
D3D__TextureState[0][sampler] = value;
|
D3D__TextureState[0][sampler] = value
|
||||||
|
|
||||||
|
#define RD3DDevice_SetTransform(device, State, pMatrix) \
|
||||||
|
D3DDIRTY_TRANSFORM(State); \
|
||||||
|
D3DDevice_SetTransform(State, pMatrix);
|
||||||
|
|
||||||
|
#define RD3DDevice_SetVertexShader(device, handle) D3DDevice_SetVertexShader(handle)
|
||||||
|
#define RD3DVertexBuffer_Lock(device, OffsetToLock, SizeToLock, ppbData, Flags) *ppbData = D3DVertexBuffer_Lock2(device, Flags) + OffsetToLock
|
||||||
|
#define RD3DVertexBuffer_Unlock(device)
|
||||||
|
#define RD3DDevice_SetTexture(device, Stage, pTexture) D3DDevice_SetTexture(Stage, pTexture)
|
||||||
|
#define RD3DDevice_DrawPrimitive(device, PrimitiveType, StartVertex, PrimitiveCount) D3DDevice_DrawVertices(PrimitiveType, StartVertex, D3DVERTEXCOUNT(PrimitiveType, PrimitiveCount))
|
||||||
#define RD3DDevice_Clear(device, Count, pRects, Flags, Color, Z, Stencil) D3DDevice_Clear(Count, pRects, Flags, Color, Z, Stencil)
|
#define RD3DDevice_Clear(device, Count, pRects, Flags, Color, Z, Stencil) D3DDevice_Clear(Count, pRects, Flags, Color, Z, Stencil)
|
||||||
#define RD3DDevice_SetViewport(device, viewport) D3DDevice_SetViewport(viewport)
|
#define RD3DDevice_SetViewport(device, viewport) D3DDevice_SetViewport(viewport)
|
||||||
#define RD3DDevice_Present(device) D3DDevice_Swap(0)
|
#define RD3DDevice_Present(device) D3DDevice_Swap(0)
|
||||||
@ -71,6 +81,14 @@
|
|||||||
#define direct3d_create_ctx Direct3DCreate9
|
#define direct3d_create_ctx Direct3DCreate9
|
||||||
#define IDirect3DVertexDeclaration IDirect3DVertexDeclaration9
|
#define IDirect3DVertexDeclaration IDirect3DVertexDeclaration9
|
||||||
|
|
||||||
|
#define RD3DVertexBuffer_Lock(device, OffsetToLock, SizeToLock, ppbData, Flags) *ppbData = D3DVertexBuffer_Lock(device, OffsetToLock, SizeToLock, Flags)
|
||||||
|
#define RD3DVertexBuffer_Unlock(device) D3DVertexBuffer_Unlock(device)
|
||||||
|
#define RD3DDevice_SetTexture(device, Stage, pTexture) \
|
||||||
|
fetchConstant = GPU_CONVERT_D3D_TO_HARDWARE_TEXTUREFETCHCONSTANT(Stage); \
|
||||||
|
pendingMask3 = D3DTAG_MASKENCODE(D3DTAG_START(D3DTAG_FETCHCONSTANTS) + fetchConstant, D3DTAG_START(D3DTAG_FETCHCONSTANTS) + fetchConstant); \
|
||||||
|
D3DDevice_SetTexture(device, Stage, pTexture, pendingMask3)
|
||||||
|
|
||||||
|
#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)
|
#define RD3DDevice_Clear(device, Count, pRects, Flags, Color, Z, Stencil) D3DDevice_Clear(device, Count, pRects, Flags, Color, Z, Stencil, false)
|
||||||
#define RD3DDevice_SetViewport(device, viewport) D3DDevice_SetViewport(device, viewport)
|
#define RD3DDevice_SetViewport(device, viewport) D3DDevice_SetViewport(device, viewport)
|
||||||
#define RD3DDevice_Present(device) D3DDevice_Present(device)
|
#define RD3DDevice_Present(device) D3DDevice_Present(device)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user