mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-02 13:01:27 +12:00
rsx: Don't trigger surface swap-in/swap-out handlers when replacing self
This commit is contained in:
parent
d02dea5df2
commit
f4dc18c872
3 changed files with 9 additions and 7 deletions
|
@ -435,7 +435,7 @@ namespace rsx
|
|||
memory_tag_samples[0].second = ~memory_tag_samples[0].second;
|
||||
}
|
||||
|
||||
bool test()
|
||||
bool test() const
|
||||
{
|
||||
for (const auto& e : memory_tag_samples)
|
||||
{
|
||||
|
|
|
@ -69,7 +69,10 @@ namespace gl
|
|||
void create(u16 w, u16 h, u16 depth, u16 mipmaps, gl::texture* image, u32 rsx_pitch, bool managed,
|
||||
gl::texture::format gl_format = gl::texture::format::rgba, gl::texture::type gl_type = gl::texture::type::ubyte, bool swap_bytes = false)
|
||||
{
|
||||
if (vram_texture && !managed_texture && get_protection() == utils::protection::no)
|
||||
auto new_texture = static_cast<gl::viewable_image*>(image);
|
||||
ensure(!exists() || !is_managed() || vram_texture == new_texture);
|
||||
|
||||
if (vram_texture != new_texture && !managed_texture && get_protection() == utils::protection::no)
|
||||
{
|
||||
// In-place image swap, still locked. Likely a color buffer that got rebound as depth buffer or vice-versa.
|
||||
gl::as_rtt(vram_texture)->on_swap_out();
|
||||
|
@ -81,8 +84,6 @@ namespace gl
|
|||
}
|
||||
}
|
||||
|
||||
auto new_texture = static_cast<gl::viewable_image*>(image);
|
||||
ensure(!exists() || !is_managed() || vram_texture == new_texture);
|
||||
vram_texture = new_texture;
|
||||
|
||||
if (managed)
|
||||
|
|
|
@ -47,7 +47,10 @@ namespace vk
|
|||
|
||||
void create(u16 w, u16 h, u16 depth, u16 mipmaps, vk::image* image, u32 rsx_pitch, bool managed, u32 gcm_format, bool pack_swap_bytes = false)
|
||||
{
|
||||
if (vram_texture && !managed_texture && get_protection() == utils::protection::no)
|
||||
auto new_texture = static_cast<vk::viewable_image*>(image);
|
||||
ensure(!exists() || !is_managed() || vram_texture == new_texture);
|
||||
|
||||
if (vram_texture != new_texture && !managed_texture && get_protection() == utils::protection::no)
|
||||
{
|
||||
// In-place image swap, still locked. Likely a color buffer that got rebound as depth buffer or vice-versa.
|
||||
vk::as_rtt(vram_texture)->on_swap_out();
|
||||
|
@ -59,8 +62,6 @@ namespace vk
|
|||
}
|
||||
}
|
||||
|
||||
auto new_texture = static_cast<vk::viewable_image*>(image);
|
||||
ensure(!exists() || !is_managed() || vram_texture == new_texture);
|
||||
vram_texture = new_texture;
|
||||
|
||||
ensure(rsx_pitch);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue