summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/drawd3d.cpp
diff options
context:
space:
mode:
author ImJezze <jezze@gmx.net>2017-01-05 18:03:26 +0100
committer GitHub <noreply@github.com>2017-01-05 18:03:25 +0100
commitff28f114b4591eafc1a64e2e000997b763a9e369 (patch)
treefd7dc2e5c11bf3f65ceef4f05a7b01cf61c17227 /src/osd/modules/render/drawd3d.cpp
parent34c3e7866bc3e173a0cfb272286aaf8f774c01f4 (diff)
parent2b95c8e50bbfa22320ca8ddd04d3d94052a5c4ed (diff)
Merge pull request #1843 from anikom15/hlsl
New phosphor persistence shaders for HLSL
Diffstat (limited to 'src/osd/modules/render/drawd3d.cpp')
-rw-r--r--src/osd/modules/render/drawd3d.cpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/osd/modules/render/drawd3d.cpp b/src/osd/modules/render/drawd3d.cpp
index d0a1ce6c9d1..4cc547b5181 100644
--- a/src/osd/modules/render/drawd3d.cpp
+++ b/src/osd/modules/render/drawd3d.cpp
@@ -1120,6 +1120,13 @@ bool renderer_d3d9::device_verify_caps()
success = false;
}
+ result = d3dintf->d3dobj->CheckDeviceFormat(m_adapter, D3DDEVTYPE_HAL, m_pixformat, 0, D3DRTYPE_TEXTURE, D3DFMT_A16B16G16R16F);
+ if (FAILED(result))
+ {
+ osd_printf_error("Direct3D Error: Your graphics card does not support the A16B16G16R16F texture format.\n");
+ success = false;
+ }
+
if (!success)
{
osd_printf_error("This feature or features are required to use the Direct3D renderer. Please\n");
@@ -2662,13 +2669,13 @@ d3d_render_target::~d3d_render_target()
if (target_surface[index] != nullptr)
target_surface[index]->Release();
- }
- if (cache_texture != nullptr)
- cache_texture->Release();
+ if (cache_texture[index] != nullptr)
+ cache_texture[index]->Release();
- if (cache_surface != nullptr)
- cache_surface->Release();
+ if (cache_surface[index] != nullptr)
+ cache_surface[index]->Release();
+ }
}
@@ -2701,13 +2708,13 @@ bool d3d_render_target::init(renderer_d3d9 *d3d, int source_width, int source_he
return false;
target_texture[index]->GetSurfaceLevel(0, &target_surface[index]);
- }
- result = d3d->get_device()->CreateTexture(target_width, target_height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &cache_texture, nullptr);
- if (FAILED(result))
- return false;
+ result = d3d->get_device()->CreateTexture(target_width, target_height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A16B16G16R16F, D3DPOOL_DEFAULT, &cache_texture[index], nullptr);
+ if (FAILED(result))
+ return false;
- cache_texture->GetSurfaceLevel(0, &cache_surface);
+ cache_texture[index]->GetSurfaceLevel(0, &cache_surface[index]);
+ }
auto win = d3d->assert_window();