mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-15 03:08:28 +12:00
Latte+GL+VK: Improve handling of gfx pack texture overwrite format
Graphic packs can overwrite the format of a texture (e.g. for higher bitdepth to lessen banding) but the code for this wasn't correctly working anymore. - Fixes overwrite format being ignored for texture views on Vulkan backend - Fixes overwrite format not being used for texture views on OpenGL Format aliasing is complicated enough as it is, even without overwrites, so this adds a new rule to make behavior more well defined: If two textures share memory but only one uses an overwrite format, then they are no longer synchronized and are considered separate textures. Bonus fixes for OpenGL: - Use fbo 0 instead of -1 as the default. This silences some warnings in debug output - On OpenGL, bind new framebuffers on handle generation so they are considered created
This commit is contained in:
parent
8bc444bb97
commit
bc04662525
6 changed files with 48 additions and 25 deletions
|
@ -57,7 +57,12 @@ uint32 LatteTextureVk_AdjustTextureCompSel(Latte::E_GX2SURFFMT format, uint32 co
|
|||
LatteTextureViewVk::LatteTextureViewVk(VkDevice device, LatteTextureVk* texture, Latte::E_DIM dim, Latte::E_GX2SURFFMT format, sint32 firstMip, sint32 mipCount, sint32 firstSlice, sint32 sliceCount)
|
||||
: LatteTextureView(texture, firstMip, mipCount, firstSlice, sliceCount, dim, format), m_device(device)
|
||||
{
|
||||
if (dim != texture->dim || format != texture->format)
|
||||
if(texture->overwriteInfo.hasFormatOverwrite)
|
||||
{
|
||||
cemu_assert_debug(format == texture->format); // if format overwrite is used, the texture is no longer taking part in aliasing and the format of any view has to match
|
||||
m_format = texture->GetFormat();
|
||||
}
|
||||
else if (dim != texture->dim || format != texture->format)
|
||||
{
|
||||
VulkanRenderer::FormatInfoVK texFormatInfo;
|
||||
VulkanRenderer::GetInstance()->GetTextureFormatInfoVK(format, texture->isDepth, dim, 0, 0, &texFormatInfo);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue