From 2b95c8e50bbfa22320ca8ddd04d3d94052a5c4ed Mon Sep 17 00:00:00 2001 From: "Westley M. Martinez" Date: Wed, 4 Jan 2017 17:44:46 -0800 Subject: Change cached texture format to floating point. hlsl/phosphor.fx: Remove hacks ini/presets/raster.ini, ini/presets/vector-mono.ini, ini/presets/vector.ini: Tweak presets src/osd/modules/render/d3d/d3dcomm.h, src/osd/modules/render/d3d/d3dhlsl.cpp, src/osd/modules/render/drawd3d.cpp: Change cache texture format to floating point for precise for phosphor and ghosting shaders. --- src/osd/modules/render/drawd3d.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'src/osd/modules/render/drawd3d.cpp') 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(); -- cgit v1.2.3-70-g09d2