From d6533bac19c2925aac10f7e36c31e33f2283f535 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 1 Oct 2017 23:14:43 +0200 Subject: [PATCH] Create d3d_device_get_render_target_data --- gfx/common/d3d_common.cpp | 15 +++++++++++++++ gfx/common/d3d_common.h | 3 +++ gfx/drivers_renderchain/d3d9_cg_renderchain.cpp | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gfx/common/d3d_common.cpp b/gfx/common/d3d_common.cpp index 642224e950..4ae2c3b94d 100644 --- a/gfx/common/d3d_common.cpp +++ b/gfx/common/d3d_common.cpp @@ -391,6 +391,21 @@ void d3d_clear(LPDIRECT3DDEVICE dev, #endif } +bool d3d_device_get_render_target_data(LPDIRECT3DDEVICE dev, + void *_src, void *_dst) +{ + LPDIRECT3DSURFACE src = (LPDIRECT3DSURFACE)_src; + LPDIRECT3DSURFACE dst = (LPDIRECT3DSURFACE)_dst; +#if defined(HAVE_D3D9) && !defined(__cplusplus) + if (SUCCEEDED(IDirect3DDevice9_GetRenderTargetData(dev, src, dst))) + return true; +#else + if (SUCCEEDED(dev->GetRenderTargetData(src, dst))) + return true; +#endif + return false; +} + bool d3d_device_get_render_target(LPDIRECT3DDEVICE dev, unsigned idx, void **data) { diff --git a/gfx/common/d3d_common.h b/gfx/common/d3d_common.h index 18abb577e8..5bd43c00d7 100644 --- a/gfx/common/d3d_common.h +++ b/gfx/common/d3d_common.h @@ -110,6 +110,9 @@ void d3d_frame_postprocess(void *data); void d3d_surface_free(void *data); +bool d3d_device_get_render_target_data(LPDIRECT3DDEVICE dev, + void *_src, void *_dst); + bool d3d_device_get_render_target(LPDIRECT3DDEVICE dev, unsigned idx, void **data); diff --git a/gfx/drivers_renderchain/d3d9_cg_renderchain.cpp b/gfx/drivers_renderchain/d3d9_cg_renderchain.cpp index 60c7098147..dba544dae7 100644 --- a/gfx/drivers_renderchain/d3d9_cg_renderchain.cpp +++ b/gfx/drivers_renderchain/d3d9_cg_renderchain.cpp @@ -1564,7 +1564,7 @@ static bool d3d9_cg_renderchain_read_viewport( goto end; } - if (FAILED(d3d->d3d_err = d3dr->GetRenderTargetData(target, dest))) + if (!d3d_device_get_render_target_data(d3dr, (void*)target, (void*)dest)) { ret = false; goto end;