mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 06:08:30 +09:00
[Fix] (DirectVulkan): raw sRGB attachment writes while FRAMEBUFFER_SRGB is off
GL renders into sRGB color attachments RAW when GL_FRAMEBUFFER_SRGB is disabled (the core-profile default), but Vulkan sRGB attachments always encode on write - one decode went missing whenever a rendered-into sRGB texture was sampled again (multisampled sRGB targets in texture_size_promotion and texture_swizzle idx27/28 ms cases). Attachment views (textures and renderbuffers) now reinterpret sRGB images through their UNORM twin while the capability is off, switching back when enabled: images get MUTABLE_FORMAT, the attachment-view cache keys the view format, renderbuffers carry a second view, and the render pass hash includes the capability state. Sampled views keep decoding. The VkTextureManager.cpp half of this rides with the next commit.
This commit is contained in:
@@ -274,6 +274,9 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
||||
VkImage image = VK_NULL_HANDLE;
|
||||
VmaAllocation allocation = nullptr;
|
||||
VkImageView view = VK_NULL_HANDLE;
|
||||
// UNORM reinterpretation of an sRGB image, used as the attachment view while
|
||||
// GL_FRAMEBUFFER_SRGB is disabled (raw writes). Null for non-sRGB formats.
|
||||
VkImageView unormTwinView = VK_NULL_HANDLE;
|
||||
VkImageLayout layout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
VkFormat format = VK_FORMAT_UNDEFINED;
|
||||
VkImageAspectFlags aspect = VK_IMAGE_ASPECT_NONE;
|
||||
@@ -307,6 +310,7 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
||||
VkImage image = VK_NULL_HANDLE;
|
||||
VmaAllocation allocation = nullptr;
|
||||
VkImageView view = VK_NULL_HANDLE;
|
||||
VkImageView unormTwinView = VK_NULL_HANDLE;
|
||||
Uint64 deferredAtFrame = 0;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user