mirror of
https://github.com/libretro/RetroArch
synced 2025-02-06 09:40:06 +00:00
Don't rely on LPDIRECT3DTEXTURE
This commit is contained in:
parent
26f9489f89
commit
0588c3c68e
@ -543,39 +543,43 @@ void d3d_set_transform(void *_dev,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool d3d_texture_get_level_desc(LPDIRECT3DTEXTURE tex,
|
bool d3d_texture_get_level_desc(void *_tex,
|
||||||
unsigned idx, void *_ppsurface_level)
|
unsigned idx, void *_ppsurface_level)
|
||||||
{
|
{
|
||||||
if (!tex)
|
|
||||||
return false;
|
|
||||||
switch (d3d_common_api)
|
switch (d3d_common_api)
|
||||||
{
|
{
|
||||||
case GFX_CTX_DIRECT3D9_API:
|
case GFX_CTX_DIRECT3D9_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D9
|
#ifdef HAVE_D3D9
|
||||||
|
LPDIRECT3DTEXTURE9 tex = (LPDIRECT3DTEXTURE9)_tex;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
if (SUCCEEDED(tex->GetLevelDesc(idx, (D3DSURFACE_DESC*)_ppsurface_level)))
|
if (SUCCEEDED(tex->GetLevelDesc(idx, (D3DSURFACE_DESC*)_ppsurface_level)))
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
#if defined(_XBOX)
|
#if defined(_XBOX)
|
||||||
D3DTexture_GetLevelDesc(tex, idx, (D3DSURFACE_DESC*)_ppsurface_level);
|
D3DTexture_GetLevelDesc(tex, idx, (D3DSURFACE_DESC*)_ppsurface_level);
|
||||||
return true;
|
|
||||||
#else
|
|
||||||
if (SUCCEEDED(IDirect3DTexture9_GetLevelDesc(tex, idx, (D3DSURFACE_DESC*)_ppsurface_level)))
|
|
||||||
return true;
|
return true;
|
||||||
|
#else
|
||||||
|
if (SUCCEEDED(IDirect3DTexture9_GetLevelDesc(tex, idx, (D3DSURFACE_DESC*)_ppsurface_level)))
|
||||||
|
return true;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_DIRECT3D8_API:
|
case GFX_CTX_DIRECT3D8_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D8
|
#ifdef HAVE_D3D8
|
||||||
|
LPDIRECT3DTEXTURE8 tex = (LPDIRECT3DTEXTURE8)_tex;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
if (SUCCEEDED(tex->GetLevelDesc(idx, (D3DSURFACE_DESC*)_ppsurface_level)))
|
if (SUCCEEDED(tex->GetLevelDesc(idx, (D3DSURFACE_DESC*)_ppsurface_level)))
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
if (SUCCEEDED(IDirect3DTexture8_GetLevelDesc(tex, idx, (D3DSURFACE_DESC*)_ppsurface_level)))
|
if (SUCCEEDED(IDirect3DTexture8_GetLevelDesc(tex, idx, (D3DSURFACE_DESC*)_ppsurface_level)))
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_NONE:
|
case GFX_CTX_NONE:
|
||||||
default:
|
default:
|
||||||
@ -585,35 +589,42 @@ bool d3d_texture_get_level_desc(LPDIRECT3DTEXTURE tex,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool d3d_texture_get_surface_level(LPDIRECT3DTEXTURE tex,
|
bool d3d_texture_get_surface_level(void *_tex,
|
||||||
unsigned idx, void **_ppsurface_level)
|
unsigned idx, void **_ppsurface_level)
|
||||||
{
|
{
|
||||||
if (!tex)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
switch (d3d_common_api)
|
switch (d3d_common_api)
|
||||||
{
|
{
|
||||||
case GFX_CTX_DIRECT3D9_API:
|
case GFX_CTX_DIRECT3D9_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D9
|
#ifdef HAVE_D3D9
|
||||||
|
LPDIRECT3DTEXTURE9 tex = (LPDIRECT3DTEXTURE9)_tex;
|
||||||
|
if (!tex)
|
||||||
|
return false;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
if (SUCCEEDED(tex->GetSurfaceLevel(idx, (ID3DSURFACE**)_ppsurface_level)))
|
if (SUCCEEDED(tex->GetSurfaceLevel(idx, (ID3DSURFACE**)_ppsurface_level)))
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
if (SUCCEEDED(IDirect3DTexture9_GetSurfaceLevel(tex, idx, (IDirect3DSurface9**)_ppsurface_level)))
|
if (SUCCEEDED(IDirect3DTexture9_GetSurfaceLevel(tex, idx, (IDirect3DSurface9**)_ppsurface_level)))
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_DIRECT3D8_API:
|
case GFX_CTX_DIRECT3D8_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D8
|
#ifdef HAVE_D3D8
|
||||||
|
LPDIRECT3DTEXTURE8 tex = (LPDIRECT3DTEXTURE8)_tex;
|
||||||
|
if (!tex)
|
||||||
|
return false;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
if (SUCCEEDED(tex->GetSurfaceLevel(idx, (ID3DSURFACE**)_ppsurface_level)))
|
if (SUCCEEDED(tex->GetSurfaceLevel(idx, (ID3DSURFACE**)_ppsurface_level)))
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
if (SUCCEEDED(IDirect3DTexture8_GetSurfaceLevel(tex, idx, (IDirect3DSurface8**)_ppsurface_level)))
|
if (SUCCEEDED(IDirect3DTexture8_GetSurfaceLevel(tex, idx, (IDirect3DSurface8**)_ppsurface_level)))
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_NONE:
|
case GFX_CTX_NONE:
|
||||||
default:
|
default:
|
||||||
@ -624,7 +635,7 @@ bool d3d_texture_get_surface_level(LPDIRECT3DTEXTURE tex,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_D3DX
|
#ifdef HAVE_D3DX
|
||||||
static LPDIRECT3DTEXTURE d3d_texture_new_from_file(
|
static void *d3d_texture_new_from_file(
|
||||||
void *dev,
|
void *dev,
|
||||||
const char *path, unsigned width, unsigned height,
|
const char *path, unsigned width, unsigned height,
|
||||||
unsigned miplevels, unsigned usage, D3DFORMAT format,
|
unsigned miplevels, unsigned usage, D3DFORMAT format,
|
||||||
@ -632,42 +643,39 @@ static LPDIRECT3DTEXTURE d3d_texture_new_from_file(
|
|||||||
D3DCOLOR color_key, void *src_info_data,
|
D3DCOLOR color_key, void *src_info_data,
|
||||||
PALETTEENTRY *palette)
|
PALETTEENTRY *palette)
|
||||||
{
|
{
|
||||||
LPDIRECT3DTEXTURE buf = NULL;
|
void *buf = NULL;
|
||||||
|
HRESULT hr = E_FAIL;
|
||||||
|
|
||||||
|
switch (d3d_common_api)
|
||||||
{
|
{
|
||||||
HRESULT hr = E_FAIL;
|
case GFX_CTX_DIRECT3D9_API:
|
||||||
|
|
||||||
switch (d3d_common_api)
|
|
||||||
{
|
|
||||||
case GFX_CTX_DIRECT3D9_API:
|
|
||||||
#if defined(HAVE_D3D9)
|
#if defined(HAVE_D3D9)
|
||||||
hr = D3DCreateTextureFromFile((LPDIRECT3DDEVICE9)dev,
|
hr = D3DCreateTextureFromFile((LPDIRECT3DDEVICE9)dev,
|
||||||
path, width, height, miplevels, usage, format,
|
path, width, height, miplevels, usage, format,
|
||||||
pool, filter, mipfilter, color_key, src_info_data,
|
pool, filter, mipfilter, color_key, src_info_data,
|
||||||
palette, &buf);
|
palette, (struct IDirect3DTexture9**)&buf);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_DIRECT3D8_API:
|
case GFX_CTX_DIRECT3D8_API:
|
||||||
#if defined(HAVE_D3D8)
|
#if defined(HAVE_D3D8)
|
||||||
hr = D3DCreateTextureFromFile((LPDIRECT3DDEVICE8)dev,
|
hr = D3DCreateTextureFromFile((LPDIRECT3DDEVICE8)dev,
|
||||||
path, width, height, miplevels, usage, format,
|
path, width, height, miplevels, usage, format,
|
||||||
pool, filter, mipfilter, color_key, src_info_data,
|
pool, filter, mipfilter, color_key, src_info_data,
|
||||||
palette, &buf);
|
palette, (struct IDirect3DTeture8**)&buf);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
if (FAILED(hr))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (FAILED(hr))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LPDIRECT3DTEXTURE d3d_texture_new(void *_dev,
|
void *d3d_texture_new(void *_dev,
|
||||||
const char *path, unsigned width, unsigned height,
|
const char *path, unsigned width, unsigned height,
|
||||||
unsigned miplevels, unsigned usage, D3DFORMAT format,
|
unsigned miplevels, unsigned usage, D3DFORMAT format,
|
||||||
D3DPOOL pool, unsigned filter, unsigned mipfilter,
|
D3DPOOL pool, unsigned filter, unsigned mipfilter,
|
||||||
@ -675,7 +683,7 @@ LPDIRECT3DTEXTURE d3d_texture_new(void *_dev,
|
|||||||
PALETTEENTRY *palette, bool want_mipmap)
|
PALETTEENTRY *palette, bool want_mipmap)
|
||||||
{
|
{
|
||||||
HRESULT hr = S_OK;
|
HRESULT hr = S_OK;
|
||||||
LPDIRECT3DTEXTURE buf = NULL;
|
void *buf = NULL;
|
||||||
|
|
||||||
if (path)
|
if (path)
|
||||||
{
|
{
|
||||||
@ -702,11 +710,11 @@ LPDIRECT3DTEXTURE d3d_texture_new(void *_dev,
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
hr = dev->CreateTexture(
|
hr = dev->CreateTexture(
|
||||||
width, height, miplevels, usage,
|
width, height, miplevels, usage,
|
||||||
format, pool, &buf, NULL);
|
format, pool, (LPDIRECT3DTEXTURE9)&buf, NULL);
|
||||||
#else
|
#else
|
||||||
hr = IDirect3DDevice9_CreateTexture(dev,
|
hr = IDirect3DDevice9_CreateTexture(dev,
|
||||||
width, height, miplevels, usage,
|
width, height, miplevels, usage,
|
||||||
format, pool, &buf, NULL);
|
format, pool, (struct IDirect3DTexture9**)&buf, NULL);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -718,11 +726,11 @@ LPDIRECT3DTEXTURE d3d_texture_new(void *_dev,
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
hr = dev->CreateTexture(
|
hr = dev->CreateTexture(
|
||||||
width, height, miplevels, usage,
|
width, height, miplevels, usage,
|
||||||
format, pool, &buf);
|
format, pool, (LPDIRECT3DTEXTURE8)&buf);
|
||||||
#else
|
#else
|
||||||
hr = IDirect3DDevice8_CreateTexture(dev,
|
hr = IDirect3DDevice8_CreateTexture(dev,
|
||||||
width, height, miplevels, usage,
|
width, height, miplevels, usage,
|
||||||
format, pool, &buf);
|
format, pool, (LPDIRECT3DTEXTURE8)&buf);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -738,30 +746,37 @@ LPDIRECT3DTEXTURE d3d_texture_new(void *_dev,
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
void d3d_texture_free(LPDIRECT3DTEXTURE tex)
|
void d3d_texture_free(void *_tex)
|
||||||
{
|
{
|
||||||
if (!tex)
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (d3d_common_api)
|
switch (d3d_common_api)
|
||||||
{
|
{
|
||||||
case GFX_CTX_DIRECT3D9_API:
|
case GFX_CTX_DIRECT3D9_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D9
|
#ifdef HAVE_D3D9
|
||||||
|
LPDIRECT3DTEXTURE9 tex = (LPDIRECT3DTEXTURE9)_tex;
|
||||||
|
if (!tex)
|
||||||
|
return;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
tex->Release();
|
tex->Release();
|
||||||
#else
|
#else
|
||||||
IDirect3DTexture9_Release(tex);
|
IDirect3DTexture9_Release(tex);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_DIRECT3D8_API:
|
case GFX_CTX_DIRECT3D8_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D8
|
#ifdef HAVE_D3D8
|
||||||
|
LPDIRECT3DTEXTURE8 tex = (LPDIRECT3DTEXTURE8)_tex;
|
||||||
|
if (!tex)
|
||||||
|
return;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
tex->Release();
|
tex->Release();
|
||||||
#else
|
#else
|
||||||
IDirect3DTexture8_Release(tex);
|
IDirect3DTexture8_Release(tex);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_NONE:
|
case GFX_CTX_NONE:
|
||||||
default:
|
default:
|
||||||
@ -1653,37 +1668,47 @@ bool d3d_device_get_render_target(void *_dev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool d3d_lock_rectangle(LPDIRECT3DTEXTURE tex,
|
bool d3d_lock_rectangle(void *_tex,
|
||||||
unsigned level, D3DLOCKED_RECT *lock_rect, RECT *rect,
|
unsigned level, D3DLOCKED_RECT *lock_rect, RECT *rect,
|
||||||
unsigned rectangle_height, unsigned flags)
|
unsigned rectangle_height, unsigned flags)
|
||||||
{
|
{
|
||||||
switch (d3d_common_api)
|
switch (d3d_common_api)
|
||||||
{
|
{
|
||||||
case GFX_CTX_DIRECT3D9_API:
|
case GFX_CTX_DIRECT3D9_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D9
|
#ifdef HAVE_D3D9
|
||||||
|
LPDIRECT3DTEXTURE9 tex = (LPDIRECT3DTEXTURE9)_tex;
|
||||||
|
if (!tex)
|
||||||
|
return false;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
if (FAILED(tex->LockRect(level, lock_rect, rect, flags)))
|
if (FAILED(tex->LockRect(level, lock_rect, rect, flags)))
|
||||||
return false;
|
return false;
|
||||||
#else
|
#else
|
||||||
#ifdef _XBOX
|
#ifdef _XBOX
|
||||||
IDirect3DTexture9_LockRect(tex, level, lock_rect, (const RECT*)rect, flags);
|
IDirect3DTexture9_LockRect(tex, level, lock_rect, (const RECT*)rect, flags);
|
||||||
#else
|
#else
|
||||||
if (IDirect3DTexture9_LockRect(tex, level, lock_rect, (const RECT*)rect, flags) != D3D_OK)
|
if (IDirect3DTexture9_LockRect(tex, level, lock_rect, (const RECT*)rect, flags) != D3D_OK)
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_DIRECT3D8_API:
|
case GFX_CTX_DIRECT3D8_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D8
|
#ifdef HAVE_D3D8
|
||||||
|
LPDIRECT3DTEXTURE8 tex = (LPDIRECT3DTEXTURE8)_tex;
|
||||||
|
if (!tex)
|
||||||
|
return false;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
if (FAILED(tex->LockRect(level, lock_rect, rect, flags)))
|
if (FAILED(tex->LockRect(level, lock_rect, rect, flags)))
|
||||||
return false;
|
return false;
|
||||||
#else
|
#else
|
||||||
if (IDirect3DTexture8_LockRect(tex, level, lock_rect, rect, flags) != D3D_OK)
|
if (IDirect3DTexture8_LockRect(tex, level, lock_rect, rect, flags) != D3D_OK)
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_NONE:
|
case GFX_CTX_NONE:
|
||||||
default:
|
default:
|
||||||
@ -1693,27 +1718,37 @@ bool d3d_lock_rectangle(LPDIRECT3DTEXTURE tex,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void d3d_unlock_rectangle(LPDIRECT3DTEXTURE tex)
|
void d3d_unlock_rectangle(void *_tex)
|
||||||
{
|
{
|
||||||
switch (d3d_common_api)
|
switch (d3d_common_api)
|
||||||
{
|
{
|
||||||
case GFX_CTX_DIRECT3D9_API:
|
case GFX_CTX_DIRECT3D9_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D9
|
#ifdef HAVE_D3D9
|
||||||
|
LPDIRECT3DTEXTURE9 tex = (LPDIRECT3DTEXTURE9)_tex;
|
||||||
|
if (!tex)
|
||||||
|
return;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
tex->UnlockRect(0);
|
tex->UnlockRect(0);
|
||||||
#else
|
#else
|
||||||
IDirect3DTexture9_UnlockRect(tex, 0);
|
IDirect3DTexture9_UnlockRect(tex, 0);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_DIRECT3D8_API:
|
case GFX_CTX_DIRECT3D8_API:
|
||||||
|
{
|
||||||
#ifdef HAVE_D3D8
|
#ifdef HAVE_D3D8
|
||||||
|
LPDIRECT3DTEXTURE8 tex = (LPDIRECT3DTEXTURE8)_tex;
|
||||||
|
if (!tex)
|
||||||
|
return;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
tex->UnlockRect(0);
|
tex->UnlockRect(0);
|
||||||
#else
|
#else
|
||||||
IDirect3DTexture8_UnlockRect(tex, 0);
|
IDirect3DTexture8_UnlockRect(tex, 0);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GFX_CTX_NONE:
|
case GFX_CTX_NONE:
|
||||||
default:
|
default:
|
||||||
@ -1721,7 +1756,7 @@ void d3d_unlock_rectangle(LPDIRECT3DTEXTURE tex)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void d3d_lock_rectangle_clear(LPDIRECT3DTEXTURE tex,
|
void d3d_lock_rectangle_clear(void *tex,
|
||||||
unsigned level, D3DLOCKED_RECT *lock_rect, RECT *rect,
|
unsigned level, D3DLOCKED_RECT *lock_rect, RECT *rect,
|
||||||
unsigned rectangle_height, unsigned flags)
|
unsigned rectangle_height, unsigned flags)
|
||||||
{
|
{
|
||||||
@ -1773,18 +1808,14 @@ void d3d_set_viewports(void *_dev, D3DVIEWPORT *vp)
|
|||||||
void d3d_set_texture(void *_dev, unsigned sampler,
|
void d3d_set_texture(void *_dev, unsigned sampler,
|
||||||
void *tex_data)
|
void *tex_data)
|
||||||
{
|
{
|
||||||
LPDIRECT3DTEXTURE tex = (LPDIRECT3DTEXTURE)tex_data;
|
|
||||||
|
|
||||||
if (!tex)
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (d3d_common_api)
|
switch (d3d_common_api)
|
||||||
{
|
{
|
||||||
case GFX_CTX_DIRECT3D9_API:
|
case GFX_CTX_DIRECT3D9_API:
|
||||||
{
|
{
|
||||||
#ifdef HAVE_D3D9
|
#ifdef HAVE_D3D9
|
||||||
LPDIRECT3DDEVICE9 dev = (LPDIRECT3DDEVICE9)_dev;
|
LPDIRECT3DTEXTURE9 tex = (LPDIRECT3DTEXTURE9)tex_data;
|
||||||
if (!dev)
|
LPDIRECT3DDEVICE9 dev = (LPDIRECT3DDEVICE9)_dev;
|
||||||
|
if (!dev || !tex)
|
||||||
return;
|
return;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
dev->SetTexture(sampler, tex);
|
dev->SetTexture(sampler, tex);
|
||||||
@ -1798,8 +1829,9 @@ void d3d_set_texture(void *_dev, unsigned sampler,
|
|||||||
case GFX_CTX_DIRECT3D8_API:
|
case GFX_CTX_DIRECT3D8_API:
|
||||||
{
|
{
|
||||||
#ifdef HAVE_D3D8
|
#ifdef HAVE_D3D8
|
||||||
LPDIRECT3DDEVICE8 dev = (LPDIRECT3DDEVICE8)_dev;
|
LPDIRECT3DTEXTURE8 tex = (LPDIRECT3DTEXTURE8)tex_data;
|
||||||
if (!dev)
|
LPDIRECT3DDEVICE8 dev = (LPDIRECT3DDEVICE8)_dev;
|
||||||
|
if (!dev || !tex)
|
||||||
return;
|
return;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
dev->SetTexture(sampler, tex);
|
dev->SetTexture(sampler, tex);
|
||||||
@ -2057,7 +2089,7 @@ bool d3d_set_vertex_shader_constantf(void *_dev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void d3d_texture_blit(unsigned pixel_size,
|
void d3d_texture_blit(unsigned pixel_size,
|
||||||
LPDIRECT3DTEXTURE tex,
|
void *tex,
|
||||||
D3DLOCKED_RECT *lr, const void *frame,
|
D3DLOCKED_RECT *lr, const void *frame,
|
||||||
unsigned width, unsigned height, unsigned pitch)
|
unsigned width, unsigned height, unsigned pitch)
|
||||||
{
|
{
|
||||||
|
@ -26,7 +26,7 @@ RETRO_BEGIN_DECLS
|
|||||||
|
|
||||||
typedef struct d3d_texture
|
typedef struct d3d_texture
|
||||||
{
|
{
|
||||||
LPDIRECT3DTEXTURE data;
|
void *data;
|
||||||
D3DPOOL pool;
|
D3DPOOL pool;
|
||||||
} d3d_texture_t;
|
} d3d_texture_t;
|
||||||
|
|
||||||
@ -41,13 +41,13 @@ void d3d_vertex_buffer_unlock(void *data);
|
|||||||
|
|
||||||
void d3d_vertex_buffer_free(void *vertex_data, void *vertex_declaration);
|
void d3d_vertex_buffer_free(void *vertex_data, void *vertex_declaration);
|
||||||
|
|
||||||
bool d3d_texture_get_level_desc(LPDIRECT3DTEXTURE tex,
|
bool d3d_texture_get_level_desc(void *tex,
|
||||||
unsigned idx, void *_ppsurface_level);
|
unsigned idx, void *_ppsurface_level);
|
||||||
|
|
||||||
bool d3d_texture_get_surface_level(LPDIRECT3DTEXTURE tex,
|
bool d3d_texture_get_surface_level(void *tex,
|
||||||
unsigned idx, void **_ppsurface_level);
|
unsigned idx, void **_ppsurface_level);
|
||||||
|
|
||||||
LPDIRECT3DTEXTURE d3d_texture_new(void *dev,
|
void *d3d_texture_new(void *dev,
|
||||||
const char *path, unsigned width, unsigned height,
|
const char *path, unsigned width, unsigned height,
|
||||||
unsigned miplevels, unsigned usage, D3DFORMAT format,
|
unsigned miplevels, unsigned usage, D3DFORMAT format,
|
||||||
D3DPOOL pool, unsigned filter, unsigned mipfilter,
|
D3DPOOL pool, unsigned filter, unsigned mipfilter,
|
||||||
@ -58,7 +58,7 @@ void d3d_set_stream_source(void *dev, unsigned stream_no,
|
|||||||
void *stream_vertbuf, unsigned offset_bytes,
|
void *stream_vertbuf, unsigned offset_bytes,
|
||||||
unsigned stride);
|
unsigned stride);
|
||||||
|
|
||||||
void d3d_texture_free(LPDIRECT3DTEXTURE tex);
|
void d3d_texture_free(void *tex);
|
||||||
|
|
||||||
void d3d_set_transform(void *dev,
|
void d3d_set_transform(void *dev,
|
||||||
D3DTRANSFORMSTATETYPE state, CONST D3DMATRIX *matrix);
|
D3DTRANSFORMSTATETYPE state, CONST D3DMATRIX *matrix);
|
||||||
@ -89,15 +89,15 @@ void d3d_clear(void *dev,
|
|||||||
unsigned count, const D3DRECT *rects, unsigned flags,
|
unsigned count, const D3DRECT *rects, unsigned flags,
|
||||||
D3DCOLOR color, float z, unsigned stencil);
|
D3DCOLOR color, float z, unsigned stencil);
|
||||||
|
|
||||||
bool d3d_lock_rectangle(LPDIRECT3DTEXTURE tex,
|
bool d3d_lock_rectangle(void *tex,
|
||||||
unsigned level, D3DLOCKED_RECT *lock_rect, RECT *rect,
|
unsigned level, D3DLOCKED_RECT *lock_rect, RECT *rect,
|
||||||
unsigned rectangle_height, unsigned flags);
|
unsigned rectangle_height, unsigned flags);
|
||||||
|
|
||||||
void d3d_lock_rectangle_clear(LPDIRECT3DTEXTURE tex,
|
void d3d_lock_rectangle_clear(void *tex,
|
||||||
unsigned level, D3DLOCKED_RECT *lock_rect, RECT *rect,
|
unsigned level, D3DLOCKED_RECT *lock_rect, RECT *rect,
|
||||||
unsigned rectangle_height, unsigned flags);
|
unsigned rectangle_height, unsigned flags);
|
||||||
|
|
||||||
void d3d_unlock_rectangle(LPDIRECT3DTEXTURE tex);
|
void d3d_unlock_rectangle(void *tex);
|
||||||
|
|
||||||
void d3d_set_texture(void *dev, unsigned sampler,
|
void d3d_set_texture(void *dev, unsigned sampler,
|
||||||
void *tex_data);
|
void *tex_data);
|
||||||
@ -121,7 +121,7 @@ bool d3d_set_vertex_shader_constantf(void *dev,
|
|||||||
UINT start_register,const float* constant_data, unsigned vector4f_count);
|
UINT start_register,const float* constant_data, unsigned vector4f_count);
|
||||||
|
|
||||||
void d3d_texture_blit(unsigned pixel_size,
|
void d3d_texture_blit(unsigned pixel_size,
|
||||||
LPDIRECT3DTEXTURE tex,
|
void *tex,
|
||||||
D3DLOCKED_RECT *lr, const void *frame,
|
D3DLOCKED_RECT *lr, const void *frame,
|
||||||
unsigned width, unsigned height, unsigned pitch);
|
unsigned width, unsigned height, unsigned pitch);
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ typedef struct
|
|||||||
float tex_coords[4];
|
float tex_coords[4];
|
||||||
float vert_coords[4];
|
float vert_coords[4];
|
||||||
float alpha_mod;
|
float alpha_mod;
|
||||||
LPDIRECT3DTEXTURE tex;
|
void *tex;
|
||||||
void *vert_buf;
|
void *vert_buf;
|
||||||
} overlay_t;
|
} overlay_t;
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ typedef struct d3d8_renderchain
|
|||||||
unsigned pixel_size;
|
unsigned pixel_size;
|
||||||
LPDIRECT3DDEVICE8 dev;
|
LPDIRECT3DDEVICE8 dev;
|
||||||
const video_info_t *video_info;
|
const video_info_t *video_info;
|
||||||
LPDIRECT3DTEXTURE tex;
|
LPDIRECT3DTEXTURE8 tex;
|
||||||
LPDIRECT3DVERTEXBUFFER vertex_buf;
|
LPDIRECT3DVERTEXBUFFER vertex_buf;
|
||||||
unsigned last_width;
|
unsigned last_width;
|
||||||
unsigned last_height;
|
unsigned last_height;
|
||||||
@ -1643,8 +1643,8 @@ static void d3d8_video_texture_load_d3d(d3d_video_t *d3d,
|
|||||||
uintptr_t *id)
|
uintptr_t *id)
|
||||||
{
|
{
|
||||||
D3DLOCKED_RECT d3dlr;
|
D3DLOCKED_RECT d3dlr;
|
||||||
unsigned usage = 0;
|
unsigned usage = 0;
|
||||||
LPDIRECT3DTEXTURE tex = d3d_texture_new(d3d->dev, NULL,
|
LPDIRECT3DTEXTURE8 tex = d3d_texture_new(d3d->dev, NULL,
|
||||||
ti->width, ti->height, 0,
|
ti->width, ti->height, 0,
|
||||||
usage, d3d_get_argb8888_format(),
|
usage, d3d_get_argb8888_format(),
|
||||||
D3DPOOL_MANAGED, 0, 0, 0,
|
D3DPOOL_MANAGED, 0, 0, 0,
|
||||||
@ -1698,11 +1698,11 @@ static uintptr_t d3d8_load_texture(void *video_data, void *data,
|
|||||||
|
|
||||||
static void d3d8_unload_texture(void *data, uintptr_t id)
|
static void d3d8_unload_texture(void *data, uintptr_t id)
|
||||||
{
|
{
|
||||||
LPDIRECT3DTEXTURE texid;
|
LPDIRECT3DTEXTURE8 texid;
|
||||||
if (!id)
|
if (!id)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
texid = (LPDIRECT3DTEXTURE)id;
|
texid = (LPDIRECT3DTEXTURE8)id;
|
||||||
d3d_texture_free(texid);
|
d3d_texture_free(texid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1639,9 +1639,9 @@ static void d3d9_video_texture_load_d3d(d3d_video_t *d3d,
|
|||||||
uintptr_t *id)
|
uintptr_t *id)
|
||||||
{
|
{
|
||||||
D3DLOCKED_RECT d3dlr;
|
D3DLOCKED_RECT d3dlr;
|
||||||
LPDIRECT3DTEXTURE tex = NULL;
|
LPDIRECT3DTEXTURE9 tex = NULL;
|
||||||
unsigned usage = 0;
|
unsigned usage = 0;
|
||||||
bool want_mipmap = false;
|
bool want_mipmap = false;
|
||||||
|
|
||||||
if((filter_type == TEXTURE_FILTER_MIPMAP_LINEAR) ||
|
if((filter_type == TEXTURE_FILTER_MIPMAP_LINEAR) ||
|
||||||
(filter_type == TEXTURE_FILTER_MIPMAP_NEAREST))
|
(filter_type == TEXTURE_FILTER_MIPMAP_NEAREST))
|
||||||
@ -1721,11 +1721,11 @@ static uintptr_t d3d9_load_texture(void *video_data, void *data,
|
|||||||
|
|
||||||
static void d3d9_unload_texture(void *data, uintptr_t id)
|
static void d3d9_unload_texture(void *data, uintptr_t id)
|
||||||
{
|
{
|
||||||
LPDIRECT3DTEXTURE texid;
|
LPDIRECT3DTEXTURE9 texid;
|
||||||
if (!id)
|
if (!id)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
texid = (LPDIRECT3DTEXTURE)id;
|
texid = (LPDIRECT3DTEXTURE9)id;
|
||||||
d3d_texture_free(texid);
|
d3d_texture_free(texid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@
|
|||||||
|
|
||||||
struct lut_info
|
struct lut_info
|
||||||
{
|
{
|
||||||
LPDIRECT3DTEXTURE tex;
|
LPDIRECT3DTEXTURE9 tex;
|
||||||
char id[64];
|
char id[64];
|
||||||
bool smooth;
|
bool smooth;
|
||||||
};
|
};
|
||||||
@ -75,7 +75,7 @@ struct Pass
|
|||||||
{
|
{
|
||||||
struct LinkInfo info;
|
struct LinkInfo info;
|
||||||
D3DPOOL pool;
|
D3DPOOL pool;
|
||||||
LPDIRECT3DTEXTURE tex;
|
LPDIRECT3DTEXTURE9 tex;
|
||||||
LPDIRECT3DVERTEXBUFFER vertex_buf;
|
LPDIRECT3DVERTEXBUFFER vertex_buf;
|
||||||
CGprogram vPrg, fPrg;
|
CGprogram vPrg, fPrg;
|
||||||
unsigned last_width, last_height;
|
unsigned last_width, last_height;
|
||||||
@ -101,7 +101,7 @@ typedef struct cg_renderchain
|
|||||||
unsigned frame_count;
|
unsigned frame_count;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
LPDIRECT3DTEXTURE tex[TEXTURES];
|
LPDIRECT3DTEXTURE9 tex[TEXTURES];
|
||||||
LPDIRECT3DVERTEXBUFFER vertex_buf[TEXTURES];
|
LPDIRECT3DVERTEXBUFFER vertex_buf[TEXTURES];
|
||||||
unsigned ptr;
|
unsigned ptr;
|
||||||
unsigned last_width[TEXTURES];
|
unsigned last_width[TEXTURES];
|
||||||
@ -516,11 +516,11 @@ static void d3d9_cg_renderchain_bind_prev(void *data, const void *pass_data)
|
|||||||
param = cgGetNamedParameter(pass->fPrg, attr_texture);
|
param = cgGetNamedParameter(pass->fPrg, attr_texture);
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
LPDIRECT3DTEXTURE tex;
|
LPDIRECT3DTEXTURE9 tex;
|
||||||
|
|
||||||
index = cgGetParameterResourceIndex(param);
|
index = cgGetParameterResourceIndex(param);
|
||||||
|
|
||||||
tex = (LPDIRECT3DTEXTURE)
|
tex = (LPDIRECT3DTEXTURE9)
|
||||||
chain->prev.tex[(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
chain->prev.tex[(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
||||||
|
|
||||||
d3d_set_texture(chain->dev, index, tex);
|
d3d_set_texture(chain->dev, index, tex);
|
||||||
@ -1126,7 +1126,7 @@ static bool d3d9_cg_renderchain_add_lut(void *data,
|
|||||||
{
|
{
|
||||||
struct lut_info info;
|
struct lut_info info;
|
||||||
cg_renderchain_t *chain = (cg_renderchain_t*)data;
|
cg_renderchain_t *chain = (cg_renderchain_t*)data;
|
||||||
LPDIRECT3DTEXTURE lut = d3d_texture_new(
|
LPDIRECT3DTEXTURE9 lut = d3d_texture_new(
|
||||||
chain->dev,
|
chain->dev,
|
||||||
path,
|
path,
|
||||||
D3D_DEFAULT_NONPOW2,
|
D3D_DEFAULT_NONPOW2,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user