summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/d3d
diff options
context:
space:
mode:
author Jezze <jezze@gmx.net>2016-10-22 17:12:38 +0200
committer Jezze <jezze@gmx.net>2016-10-22 22:56:15 +0200
commit390e6bd43d3f9f429e100b5cf65caf7836e85a4a (patch)
tree791a41254b5b9dd8d918e90418edd617471fe383 /src/osd/modules/render/d3d
parente42ed88254f3c875974e142472da25f6d4346fa9 (diff)
Refactored d3d_render_target (nw)
* removed cashe_target class * moved cashe texture and surface to d3d_render_target class * render targets are now created per screen not per screen texture * removed useless creation of render targets for ui textures
Diffstat (limited to 'src/osd/modules/render/d3d')
-rw-r--r--src/osd/modules/render/d3d/d3dcomm.h57
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp218
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.h27
3 files changed, 90 insertions, 212 deletions
diff --git a/src/osd/modules/render/d3d/d3dcomm.h b/src/osd/modules/render/d3d/d3dcomm.h
index 5aea7bafd6d..294a4d7d52c 100644
--- a/src/osd/modules/render/d3d/d3dcomm.h
+++ b/src/osd/modules/render/d3d/d3dcomm.h
@@ -71,7 +71,7 @@ public:
void delete_resources();
texture_info * find_texinfo(const render_texinfo *texture, uint32_t flags);
- uint32_t texture_compute_hash(const render_texinfo *texture, uint32_t flags);
+ uint32_t texture_compute_hash(const render_texinfo *texture, uint32_t flags);
bool is_dynamic_supported() const { return (bool)m_dynamic_supported; }
void set_dynamic_supported(bool dynamic_supported) { m_dynamic_supported = dynamic_supported; }
@@ -119,11 +119,11 @@ public:
int get_xscale() const { return m_xprescale; }
int get_yscale() const { return m_yprescale; }
- uint32_t get_flags() const { return m_flags; }
+ uint32_t get_flags() const { return m_flags; }
void set_data(const render_texinfo *texsource, uint32_t flags);
- uint32_t get_hash() const { return m_hash; }
+ uint32_t get_hash() const { return m_hash; }
void increment_frame_count() { m_cur_frame++; }
void mask_frame_count(int mask) { m_cur_frame %= mask; }
@@ -147,8 +147,8 @@ private:
renderer_d3d9 * m_renderer; // renderer pointer
- uint32_t m_hash; // hash value for the texture
- uint32_t m_flags; // rendering flags
+ uint32_t m_hash; // hash value for the texture
+ uint32_t m_flags; // rendering flags
render_texinfo m_texinfo; // copy of the texture info
vec2f m_start; // beggining UV coordinates
vec2f m_stop; // ending UV coordinates
@@ -181,9 +181,9 @@ public:
}
D3DPRIMITIVETYPE type() const { return m_type; }
- uint32_t count() const { return m_count; }
- uint32_t numverts() const { return m_numverts; }
- uint32_t flags() const { return m_flags; }
+ uint32_t count() const { return m_count; }
+ uint32_t numverts() const { return m_numverts; }
+ uint32_t flags() const { return m_flags; }
texture_info * texture() const { return m_texture; }
DWORD modmode() const { return m_modmode; }
@@ -193,9 +193,9 @@ public:
private:
D3DPRIMITIVETYPE m_type; // type of primitive
- uint32_t m_count; // total number of primitives
- uint32_t m_numverts; // total number of vertices
- uint32_t m_flags; // rendering flags
+ uint32_t m_count; // total number of primitives
+ uint32_t m_numverts; // total number of vertices
+ uint32_t m_flags; // rendering flags
texture_info * m_texture; // pointer to texture info
DWORD m_modmode; // texture modulation mode
@@ -215,36 +215,12 @@ struct vertex
};
-/* cache_target is a simple linked list containing only a renderable target and texture, used for phosphor effects */
-class cache_target
-{
-public:
- // construction/destruction
- cache_target(): target(nullptr), texture(nullptr), target_width(0), target_height(0), width(0), height(0), screen_index(0)
- { }
-
- ~cache_target();
-
- bool init(renderer_d3d9 *d3d, int source_width, int source_height, int target_width, int target_height, int screen_index);
-
- IDirect3DSurface9 *target;
- IDirect3DTexture9 *texture;
-
- int target_width;
- int target_height;
-
- int width;
- int height;
-
- int screen_index;
-};
-
/* d3d_render_target is the information about a Direct3D render target chain */
class d3d_render_target
{
public:
// construction/destruction
- d3d_render_target(): target_width(0), target_height(0), width(0), height(0), screen_index(0), page_index(0), bloom_count(0)
+ d3d_render_target(): target_width(0), target_height(0), width(0), height(0), screen_index(0), bloom_count(0)
{
for (int index = 0; index < MAX_BLOOM_COUNT; index++)
{
@@ -259,11 +235,14 @@ public:
target_texture[index] = nullptr;
target_surface[index] = nullptr;
}
+
+ cache_texture = nullptr;
+ cache_surface = nullptr;
}
~d3d_render_target();
- bool init(renderer_d3d9 *d3d, int source_width, int source_height, int target_width, int target_height, int screen_index, int page_index);
+ bool init(renderer_d3d9 *d3d, int source_width, int source_height, int target_width, int target_height, int screen_index);
int next_index(int index) { return ++index > 1 ? 0 : index; }
// real target dimension
@@ -275,13 +254,15 @@ public:
int height;
int screen_index;
- int page_index;
IDirect3DSurface9 *target_surface[2];
IDirect3DTexture9 *target_texture[2];
IDirect3DSurface9 *source_surface[2];
IDirect3DTexture9 *source_texture[2];
+ IDirect3DSurface9 *cache_surface;
+ IDirect3DTexture9 *cache_texture;
+
IDirect3DSurface9 *bloom_surface[MAX_BLOOM_COUNT];
IDirect3DTexture9 *bloom_texture[MAX_BLOOM_COUNT];
diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp
index 0f7b61ea6b0..db39deb0aad 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -368,37 +368,12 @@ void shaders::render_snapshot(IDirect3DSurface9 *surface)
//============================================================
-// remove_cache_target - remove an active cache target
-//============================================================
-
-void shaders::remove_cache_target(cache_target *cache)
-{
- if (cache == nullptr)
- return;
-
- for (auto it = m_cache_target_list.begin(); it != m_cache_target_list.end(); it++)
- {
- if ((*it).get() == cache)
- {
- m_cache_target_list.erase(it);
- break;
- }
- }
-}
-
-
-//============================================================
// remove_render_target - remove an active target
//============================================================
-void shaders::remove_render_target(texture_info *texture)
-{
- remove_render_target(find_render_target(texture));
-}
-
-void shaders::remove_render_target(int source_width, int source_height, uint32_t screen_index, uint32_t page_index)
+void shaders::remove_render_target(int source_width, int source_height, uint32_t screen_index)
{
- remove_render_target(find_render_target(source_width, source_height, screen_index, page_index));
+ remove_render_target(find_render_target(source_width, source_height, screen_index));
}
void shaders::remove_render_target(d3d_render_target *rt)
@@ -406,11 +381,6 @@ void shaders::remove_render_target(d3d_render_target *rt)
if (rt == nullptr)
return;
- int screen_index = rt->screen_index;
- int other_page = 1 - rt->page_index;
- int width = rt->width;
- int height = rt->height;
-
for (auto it = m_render_target_list.begin(); it != m_render_target_list.end(); it++)
{
if ((*it).get() == rt)
@@ -419,11 +389,6 @@ void shaders::remove_render_target(d3d_render_target *rt)
break;
}
}
-
- remove_cache_target(find_cache_target(screen_index, width, height));
-
- // Remove other double-buffered page (if it exists)
- remove_render_target(width, height, screen_index, other_page);
}
@@ -859,6 +824,7 @@ void shaders::begin_draw()
return;
}
+ curr_screen = 0;
curr_effect = default_effect;
default_effect->set_technique("ScreenTechnique");
@@ -939,48 +905,13 @@ void shaders::blit(
// shaders::find_render_target
//============================================================
-d3d_render_target* shaders::find_render_target(texture_info *texture)
-{
- uint32_t screen_index_data = (uint32_t)texture->get_texinfo().osddata;
- uint32_t screen_index = screen_index_data >> 1;
- uint32_t page_index = screen_index_data & 1;
-
- return find_render_target(texture->get_width(), texture->get_height(), screen_index, page_index);
-}
-
-
-//============================================================
-// shaders::find_render_target
-//============================================================
-
-d3d_render_target* shaders::find_render_target(int source_width, int source_height, uint32_t screen_index, uint32_t page_index)
+d3d_render_target* shaders::find_render_target(int source_width, int source_height, uint32_t screen_index)
{
for (auto it = m_render_target_list.begin(); it != m_render_target_list.end(); it++)
{
if ((*it)->width == source_width &&
(*it)->height == source_height &&
- (*it)->screen_index == screen_index &&
- (*it)->page_index == page_index)
- {
- return (*it).get();
- }
- }
-
- return nullptr;
-}
-
-
-//============================================================
-// shaders::find_cache_target
-//============================================================
-
-cache_target *shaders::find_cache_target(uint32_t screen_index, int width, int height)
-{
- for (auto it = m_cache_target_list.begin(); it != m_cache_target_list.end(); it++)
- {
- if ((*it)->screen_index == screen_index &&
- (*it)->width == width &&
- (*it)->height == height)
+ (*it)->screen_index == screen_index)
{
return (*it).get();
}
@@ -1128,7 +1059,7 @@ int shaders::defocus_pass(d3d_render_target *rt, int source_index, poly_info *po
return next_index;
}
-int shaders::phosphor_pass(d3d_render_target *rt, cache_target *ct, int source_index, poly_info *poly, int vertnum)
+int shaders::phosphor_pass(d3d_render_target *rt, int source_index, poly_info *poly, int vertnum)
{
int next_index = source_index;
@@ -1141,7 +1072,7 @@ int shaders::phosphor_pass(d3d_render_target *rt, cache_target *ct, int source_i
curr_effect = phosphor_effect;
curr_effect->update_uniforms();
curr_effect->set_texture("Diffuse", rt->target_texture[next_index]);
- curr_effect->set_texture("LastPass", ct->texture);
+ curr_effect->set_texture("LastPass", rt->cache_texture);
curr_effect->set_bool("Passthrough", false);
next_index = rt->next_index(next_index);
@@ -1154,7 +1085,7 @@ int shaders::phosphor_pass(d3d_render_target *rt, cache_target *ct, int source_i
curr_effect->set_bool("Passthrough", true);
// Avoid changing targets due to page flipping
- blit(ct->target, true, D3DPT_TRIANGLELIST, 0, 2);
+ blit(rt->cache_surface, true, D3DPT_TRIANGLELIST, 0, 2);
return next_index;
}
@@ -1401,11 +1332,17 @@ void shaders::render_quad(poly_info *poly, int vertnum)
auto win = d3d->assert_window();
- if (PRIMFLAG_GET_SCREENTEX(d3d->get_last_texture_flags()) && curr_texture != nullptr)
+ if (PRIMFLAG_GET_SCREENTEX(poly->flags()))
{
+ if (curr_texture == nullptr)
+ {
+ osd_printf_verbose("Direct3D: No texture\n");
+ return;
+ }
+
curr_screen = curr_screen < num_screens ? curr_screen : 0;
- curr_render_target = find_render_target(curr_texture);
+ curr_render_target = find_render_target(curr_texture->get_width(), curr_texture->get_height(), curr_screen);
d3d_render_target *rt = curr_render_target;
if (rt == nullptr)
@@ -1414,8 +1351,6 @@ void shaders::render_quad(poly_info *poly, int vertnum)
return;
}
- cache_target *ct = find_cache_target(rt->screen_index, curr_texture->get_width(), curr_texture->get_height());
-
int next_index = 0;
next_index = ntsc_pass(rt, next_index, poly, vertnum); // handled in bgfx
@@ -1424,7 +1359,7 @@ void shaders::render_quad(poly_info *poly, int vertnum)
next_index = deconverge_pass(rt, next_index, poly, vertnum); // handled in bgfx
next_index = defocus_pass(rt, next_index, poly, vertnum); // 1st pass
next_index = defocus_pass(rt, next_index, poly, vertnum); // 2nd pass
- next_index = phosphor_pass(rt, ct, next_index, poly, vertnum);
+ next_index = phosphor_pass(rt, next_index, poly, vertnum);
// create bloom textures
int phosphor_index = next_index;
@@ -1450,13 +1385,15 @@ void shaders::render_quad(poly_info *poly, int vertnum)
}
else if (PRIMFLAG_GET_VECTOR(poly->flags()))
{
+ curr_screen = curr_screen < num_screens ? curr_screen : 0;
+
int source_width = int(poly->prim_width() + 0.5f);
int source_height = int(poly->prim_height() + 0.5f);
if (win->swap_xy())
{
std::swap(source_width, source_height);
}
- curr_render_target = find_render_target(source_width, source_height, 0, 0);
+ curr_render_target = find_render_target(source_width, source_height, curr_screen);
d3d_render_target *rt = curr_render_target;
if (rt == nullptr)
@@ -1474,6 +1411,8 @@ void shaders::render_quad(poly_info *poly, int vertnum)
{
osd_printf_verbose("Direct3D: Error %08lX during device SetRenderTarget call\n", result);
}
+
+ curr_screen++;
}
else if (PRIMFLAG_GET_VECTORBUF(poly->flags()))
{
@@ -1485,7 +1424,7 @@ void shaders::render_quad(poly_info *poly, int vertnum)
{
std::swap(source_width, source_height);
}
- curr_render_target = find_render_target(source_width, source_height, 0, 0);
+ curr_render_target = find_render_target(source_width, source_height, curr_screen);
d3d_render_target *rt = curr_render_target;
if (rt == nullptr)
@@ -1494,15 +1433,13 @@ void shaders::render_quad(poly_info *poly, int vertnum)
return;
}
- cache_target *ct = find_cache_target(rt->screen_index, rt->width, rt->height);
-
int next_index = 0;
next_index = vector_buffer_pass(rt, next_index, poly, vertnum);
next_index = deconverge_pass(rt, next_index, poly, vertnum);
next_index = defocus_pass(rt, next_index, poly, vertnum); // 1st pass
next_index = defocus_pass(rt, next_index, poly, vertnum); // 2nd pass
- next_index = phosphor_pass(rt, ct, next_index, poly, vertnum);
+ next_index = phosphor_pass(rt, next_index, poly, vertnum);
// create bloom textures
int phosphor_index = next_index;
@@ -1558,26 +1495,10 @@ void shaders::end_draw()
//============================================================
-// shaders::add_cache_target - register a cache target
-//============================================================
-
-bool shaders::add_cache_target(renderer_d3d9* d3d, texture_info* texture, int source_width, int source_height, int target_width, int target_height, int screen_index)
-{
- auto target = std::make_unique<cache_target>();
-
- if (!target->init(d3d, source_width, source_height, target_width, target_height, screen_index))
- return false;
-
- m_cache_target_list.push_back(std::move(target));
-
- return true;
-}
-
-//============================================================
// shaders::get_texture_target
//============================================================
-d3d_render_target* shaders::get_texture_target(render_primitive *prim, texture_info *texture)
+d3d_render_target* shaders::get_texture_target(render_primitive *prim, int width, int height, int screen)
{
if (!enabled())
{
@@ -1586,6 +1507,9 @@ d3d_render_target* shaders::get_texture_target(render_primitive *prim, texture_i
auto win = d3d->assert_window();
+ int source_width = width;
+ int source_height = height;
+ int source_screen = screen;
int target_width = int(prim->get_full_quad_width() + 0.5f);
int target_height = int(prim->get_full_quad_height() + 0.5f);
target_width *= oversampling_enable ? 2 : 1;
@@ -1596,24 +1520,25 @@ d3d_render_target* shaders::get_texture_target(render_primitive *prim, texture_i
}
// find render target and check if the size of the target quad has changed
- d3d_render_target *target = find_render_target(texture);
+ d3d_render_target *target = find_render_target(source_width, source_height, source_screen);
if (target != nullptr)
{
- if (PRIMFLAG_GET_SCREENTEX(prim->flags))
+ // check if the size of the screen quad has changed
+ if (target->target_width != target_width || target->target_height != target_height)
{
- // check if the size of the screen quad has changed
- if (target->target_width != target_width || target->target_height != target_height)
- {
- osd_printf_verbose("Direct3D: Get texture target - invalid size\n");
- return nullptr;
- }
+ osd_printf_verbose("Direct3D: Get texture target - invalid size\n");
+ return nullptr;
}
}
+ else
+ {
+ osd_printf_verbose("Direct3D: Get texture target - not found - %dx%d:%d\n", source_width, source_height, source_screen);
+ }
return target;
}
-d3d_render_target* shaders::get_vector_target(render_primitive *prim)
+d3d_render_target* shaders::get_vector_target(render_primitive *prim, int screen)
{
if (!enabled())
{
@@ -1624,6 +1549,7 @@ d3d_render_target* shaders::get_vector_target(render_primitive *prim)
int source_width = int(prim->get_quad_width() + 0.5f);
int source_height = int(prim->get_quad_height() + 0.5f);
+ int source_screen = screen;
int target_width = int(prim->get_full_quad_width() + 0.5f);
int target_height = int(prim->get_full_quad_height() + 0.5f);
target_width *= oversampling_enable ? 2 : 1;
@@ -1635,24 +1561,25 @@ d3d_render_target* shaders::get_vector_target(render_primitive *prim)
}
// find render target
- d3d_render_target *target = find_render_target(source_width, source_height, 0, 0);
+ d3d_render_target *target = find_render_target(source_width, source_height, source_screen);
if (target != nullptr)
{
- if (PRIMFLAG_GET_VECTORBUF(prim->flags))
+ // check if the size of the screen quad has changed
+ if (target->target_width != target_width || target->target_height != target_height)
{
- // check if the size of the screen quad has changed
- if (target->target_width != target_width || target->target_height != target_height)
- {
- osd_printf_verbose("Direct3D: Get vector target - invalid size\n");
- return nullptr;
- }
+ osd_printf_verbose("Direct3D: Get vector target - invalid size\n");
+ return nullptr;
}
}
+ else
+ {
+ osd_printf_verbose("Direct3D: Get vector target - not found - %dx%d:%d\n", source_width, source_height, source_screen);
+ }
return target;
}
-bool shaders::create_vector_target(render_primitive *prim)
+bool shaders::create_vector_target(render_primitive *prim, int screen)
{
if (!enabled())
{
@@ -1663,6 +1590,7 @@ bool shaders::create_vector_target(render_primitive *prim)
int source_width = int(prim->get_quad_width() + 0.5f);
int source_height = int(prim->get_quad_height() + 0.5f);
+ int source_screen = screen;
int target_width = int(prim->get_full_quad_width() + 0.5f);
int target_height = int(prim->get_full_quad_height() + 0.5f);
target_width *= oversampling_enable ? 2 : 1;
@@ -1674,7 +1602,7 @@ bool shaders::create_vector_target(render_primitive *prim)
}
osd_printf_verbose("Direct3D: Create vector target - %dx%d\n", target_width, target_height);
- if (!add_render_target(d3d, prim, nullptr, source_width, source_height, target_width, target_height))
+ if (!add_render_target(d3d, prim, source_width, source_height, source_screen, target_width, target_height))
{
return false;
}
@@ -1687,38 +1615,15 @@ bool shaders::create_vector_target(render_primitive *prim)
// shaders::add_render_target - register a render target
//============================================================
-bool shaders::add_render_target(renderer_d3d9* d3d, render_primitive *prim, texture_info* texture, int source_width, int source_height, int target_width, int target_height)
+bool shaders::add_render_target(renderer_d3d9* d3d, render_primitive *prim, int source_width, int source_height, int source_screen, int target_width, int target_height)
{
- uint32_t screen_index = 0;
- uint32_t page_index = 0;
- if (texture != nullptr)
- {
- uint32_t screen_index_data = (uint32_t)texture->get_texinfo().osddata;
- screen_index = screen_index_data >> 1;
- page_index = screen_index_data & 1;
-
- remove_render_target(find_render_target(texture));
- }
- else
- {
- remove_render_target(find_render_target(source_width, source_height, 0, 0));
- }
+ remove_render_target(find_render_target(source_width, source_height, source_screen));
auto target = std::make_unique<d3d_render_target>();
- if (!target->init(d3d, source_width, source_height, target_width, target_height, screen_index, page_index))
+ if (!target->init(d3d, source_width, source_height, target_width, target_height, source_screen))
return false;
- // cached target only for screen texture and vector buffer
- if (PRIMFLAG_GET_SCREENTEX(prim->flags) || PRIMFLAG_GET_VECTORBUF(prim->flags))
- {
- if (!find_cache_target(target->screen_index, source_width, source_height))
- {
- if (!add_cache_target(d3d, texture, source_width, source_height, target_width, target_height, target->screen_index))
- return false;
- }
- }
-
m_render_target_list.push_back(std::move(target));
return true;
@@ -1736,10 +1641,10 @@ void shaders::enumerate_screens()
//============================================================
-// shaders::register_texture(texture::info)
+// shaders::create_texture_target
//============================================================
-bool shaders::register_texture(render_primitive *prim, texture_info *texture)
+bool shaders::create_texture_target(render_primitive *prim, int width, int height, int screen)
{
if (!enabled())
{
@@ -1748,8 +1653,9 @@ bool shaders::register_texture(render_primitive *prim, texture_info *texture)
auto win = d3d->assert_window();
- int source_width = texture->get_width();
- int source_height = texture->get_height();
+ int source_width = width;
+ int source_height = height;
+ int source_screen = screen;
int target_width = int(prim->get_full_quad_width() + 0.5f);
int target_height = int(prim->get_full_quad_height() + 0.5f);
target_width *= oversampling_enable ? 2 : 1;
@@ -1760,8 +1666,8 @@ bool shaders::register_texture(render_primitive *prim, texture_info *texture)
std::swap(target_width, target_height);
}
- osd_printf_verbose("Direct3D: Register texture - %dx%d\n", target_width, target_height);
- if (!add_render_target(d3d, prim, texture, source_width, source_height, target_width, target_height))
+ osd_printf_verbose("Direct3D: Create texture target - %dx%d\n", target_width, target_height);
+ if (!add_render_target(d3d, prim, source_width, source_height, source_screen, target_width, target_height))
{
return false;
}
@@ -1790,8 +1696,6 @@ void shaders::delete_resources()
last_options = *options;
}
- m_cache_target_list.clear();
-
m_render_target_list.clear();
if (downsample_effect != nullptr)
diff --git a/src/osd/modules/render/d3d/d3dhlsl.h b/src/osd/modules/render/d3d/d3dhlsl.h
index 2a4a04687a0..a2c50cba492 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.h
+++ b/src/osd/modules/render/d3d/d3dhlsl.h
@@ -283,18 +283,16 @@ public:
bool enabled() { return post_fx_enable && d3dintf->post_fx_available; }
void toggle() { post_fx_enable = initialized && !post_fx_enable; }
- d3d_render_target* get_vector_target(render_primitive *prim);
- bool create_vector_target(render_primitive *prim);
-
void begin_draw();
void end_draw();
void render_quad(poly_info *poly, int vertnum);
- bool register_texture(render_primitive *prim, texture_info *texture);
- d3d_render_target* get_texture_target(render_primitive *prim, texture_info *texture);
- bool add_render_target(renderer_d3d9* d3d, render_primitive *prim, texture_info* texture, int source_width, int source_height, int target_width, int target_height);
- bool add_cache_target(renderer_d3d9* d3d, texture_info* texture, int source_width, int source_height, int target_width, int target_height, int screen_index);
+ bool create_vector_target(render_primitive *prim, int screen);
+ d3d_render_target* get_vector_target(render_primitive *prim, int screen);
+ bool create_texture_target(render_primitive *prim, int width, int height, int screen);
+ d3d_render_target* get_texture_target(render_primitive *prim, int width, int height, int screen);
+ bool add_render_target(renderer_d3d9* d3d, render_primitive *prim, int source_width, int source_height, int source_screen, int target_width, int target_height);
void save_snapshot();
void record_movie();
@@ -302,11 +300,9 @@ public:
void init_fsfx_quad();
- void set_texture(texture_info *info);
- d3d_render_target * find_render_target(texture_info *texture);
- void remove_render_target(texture_info *texture);
- void remove_render_target(int source_width, int source_height, uint32_t screen_index, uint32_t page_index);
- void remove_render_target(d3d_render_target *rt);
+ void set_texture(texture_info *info);
+ void remove_render_target(int source_width, int source_height, uint32_t screen_index);
+ void remove_render_target(d3d_render_target *rt);
int create_resources();
void delete_resources();
@@ -324,9 +320,7 @@ private:
void render_snapshot(IDirect3DSurface9 *surface);
- d3d_render_target* find_render_target(int source_width, int source_height, uint32_t screen_index, uint32_t page_index);
- cache_target * find_cache_target(uint32_t screen_index, int width, int height);
- void remove_cache_target(cache_target *cache);
+ d3d_render_target* find_render_target(int source_width, int source_height, uint32_t screen_index);
rgb_t apply_color_convolution(rgb_t color);
@@ -336,7 +330,7 @@ private:
int prescale_pass(d3d_render_target *rt, int source_index, poly_info *poly, int vertnum);
int deconverge_pass(d3d_render_target *rt, int source_index, poly_info *poly, int vertnum);
int defocus_pass(d3d_render_target *rt, int source_index, poly_info *poly, int vertnum);
- int phosphor_pass(d3d_render_target *rt, cache_target *ct, int source_index, poly_info *poly, int vertnum);
+ int phosphor_pass(d3d_render_target *rt, int source_index, poly_info *poly, int vertnum);
int post_pass(d3d_render_target *rt, int source_index, poly_info *poly, int vertnum, bool prepare_bloom);
int downsample_pass(d3d_render_target *rt, int source_index, poly_info *poly, int vertnum);
int bloom_pass(d3d_render_target *rt, int source_index, poly_info *poly, int vertnum);
@@ -396,7 +390,6 @@ private:
poly_info * curr_poly;
std::vector<std::unique_ptr<d3d_render_target>> m_render_target_list;
- std::vector<std::unique_ptr<cache_target>> m_cache_target_list;
std::vector<slider*> internal_sliders;
std::vector<ui::menu_item> m_sliders;