aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-01-31 20:33:35 +0100
committercrueter <crueter@eden-emu.dev>2026-01-31 20:33:35 +0100
commitacf7deea957565937af43de66c7b86104553bc89 (patch)
tree690c8a64e39b88f5ba92c411126325dc2e7919e3 /src
parent84fdbbaaa13c0498dafc7302166a92c37816d09c (diff)
[vk] remove unused vk_texture_manager.cpp and unused shader conversions (#3432)
- Trivial dead code removal, also these shaders are useless TODO: maybe in a future do YUV280 or whatever in shader for vic :) Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3432 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: DraVee <dravee@eden-emu.dev> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src')
-rw-r--r--src/video_core/host_shaders/CMakeLists.txt11
-rw-r--r--src/video_core/host_shaders/convert_abgr8_srgb_to_d24s8.frag46
-rw-r--r--src/video_core/host_shaders/convert_astc_hdr_to_rgba16f.comp28
-rw-r--r--src/video_core/host_shaders/convert_bc7_to_rgba8.comp29
-rw-r--r--src/video_core/host_shaders/convert_rgb_to_yuv420.comp29
-rw-r--r--src/video_core/host_shaders/convert_rgba16f_to_rgba8.frag31
-rw-r--r--src/video_core/host_shaders/convert_rgba8_to_bgra8.frag11
-rw-r--r--src/video_core/host_shaders/convert_yuv420_to_rgb.comp30
-rw-r--r--src/video_core/host_shaders/dither_temporal.frag29
-rw-r--r--src/video_core/host_shaders/dynamic_resolution_scale.comp68
-rw-r--r--src/video_core/renderer_vulkan/blit_image.cpp99
-rw-r--r--src/video_core/renderer_vulkan/blit_image.h32
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.cpp20
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_manager.cpp144
14 files changed, 7 insertions, 600 deletions
diff --git a/src/video_core/host_shaders/CMakeLists.txt b/src/video_core/host_shaders/CMakeLists.txt
index 9ce2ac44bf..40fa4968a8 100644
--- a/src/video_core/host_shaders/CMakeLists.txt
+++ b/src/video_core/host_shaders/CMakeLists.txt
@@ -1,4 +1,4 @@
-# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later
set(FIDELITYFX_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/externals/FidelityFX-FSR/ffx-fsr)
@@ -19,7 +19,6 @@ set(SHADER_FILES
block_linear_unswizzle_2d.comp
block_linear_unswizzle_3d.comp
block_linear_unswizzle_3d_bcn.comp
- convert_abgr8_srgb_to_d24s8.frag
convert_abgr8_to_d24s8.frag
convert_abgr8_to_d32f.frag
convert_d32f_to_abgr8.frag
@@ -77,14 +76,6 @@ set(SHADER_FILES
vulkan_quad_indexed.comp
vulkan_turbo_mode.comp
vulkan_uint8.comp
- convert_rgba8_to_bgra8.frag
- convert_yuv420_to_rgb.comp
- convert_rgb_to_yuv420.comp
- convert_bc7_to_rgba8.comp
- convert_astc_hdr_to_rgba16f.comp
- convert_rgba16f_to_rgba8.frag
- dither_temporal.frag
- dynamic_resolution_scale.comp
)
if (PLATFORM_HAIKU)
diff --git a/src/video_core/host_shaders/convert_abgr8_srgb_to_d24s8.frag b/src/video_core/host_shaders/convert_abgr8_srgb_to_d24s8.frag
deleted file mode 100644
index 2e464fffa6..0000000000
--- a/src/video_core/host_shaders/convert_abgr8_srgb_to_d24s8.frag
+++ /dev/null
@@ -1,46 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#version 450
-#extension GL_ARB_shader_stencil_export : require
-
-layout(binding = 0) uniform sampler2D color_texture;
-
-// Even more accurate sRGB to linear conversion
-// https://entropymine.com/imageworsener/srgbformula/
-float srgbToLinear(float srgb) {
- if (srgb <= 0.0404482362771082f) { //assumes it's >= 0
- return srgb / 12.92;
- } else {
- return pow((srgb + 0.055) / 1.055, 2.4);
- }
-}
-
-void main() {
- ivec2 coord = ivec2(gl_FragCoord.xy);
- vec4 srgbColor = texelFetch(color_texture, coord, 0);
-
- // Convert sRGB to linear space with proper gamma correction
- vec3 linearColor = vec3(
- srgbToLinear(srgbColor.r),
- srgbToLinear(srgbColor.g),
- srgbToLinear(srgbColor.b)
- );
-
- // Use standard luminance coefficients
- float luminance = dot(linearColor, vec3(0.2126, 0.7152, 0.0722));
-
- // Ensure proper depth range
- luminance = clamp(luminance, 0.0, 1.0);
-
- // Convert to 24-bit depth value
- uint depth_val = uint(luminance * float(0xFFFFFF));
-
- // Extract 8-bit stencil from alpha
- uint stencil_val = uint(srgbColor.a * 255.0);
-
- // Pack values efficiently
- uint depth_stencil = (stencil_val << 24) | (depth_val & 0x00FFFFFF);
-
- gl_FragDepth = float(depth_val) / float(0xFFFFFF);
- gl_FragStencilRefARB = int(stencil_val);
-} \ No newline at end of file
diff --git a/src/video_core/host_shaders/convert_astc_hdr_to_rgba16f.comp b/src/video_core/host_shaders/convert_astc_hdr_to_rgba16f.comp
deleted file mode 100644
index 8d4b1825b1..0000000000
--- a/src/video_core/host_shaders/convert_astc_hdr_to_rgba16f.comp
+++ /dev/null
@@ -1,28 +0,0 @@
-#version 450
-
-layout(local_size_x = 8, local_size_y = 8) in;
-
-layout(binding = 0) uniform samplerBuffer astc_data;
-layout(binding = 1, rgba16f) uniform writeonly image2D output_image;
-
-// Note: This is a simplified version. Real ASTC HDR decompression is more complex
-void main() {
- ivec2 pos = ivec2(gl_GlobalInvocationID.xy);
- ivec2 size = imageSize(output_image);
-
- if (pos.x >= size.x || pos.y >= size.y) {
- return;
- }
-
- // Calculate block and pixel within block
- ivec2 block = pos / 8; // Assuming 8x8 ASTC blocks
- ivec2 pixel = pos % 8;
-
- // Each ASTC block is 16 bytes
- int block_index = block.y * (size.x / 8) + block.x;
-
- // Simplified ASTC HDR decoding - you'll need to implement full ASTC decoding
- vec4 color = texelFetch(astc_data, block_index * 8 + pixel.y * 8 + pixel.x);
-
- imageStore(output_image, pos, color);
-} \ No newline at end of file
diff --git a/src/video_core/host_shaders/convert_bc7_to_rgba8.comp b/src/video_core/host_shaders/convert_bc7_to_rgba8.comp
deleted file mode 100644
index a0842e175a..0000000000
--- a/src/video_core/host_shaders/convert_bc7_to_rgba8.comp
+++ /dev/null
@@ -1,29 +0,0 @@
-#version 450
-#extension GL_ARB_shader_ballot : require
-
-layout(local_size_x = 8, local_size_y = 8) in;
-
-layout(binding = 0) uniform samplerBuffer bc7_data;
-layout(binding = 1, rgba8) uniform writeonly image2D output_image;
-
-// Note: This is a simplified version. Real BC7 decompression is more complex
-void main() {
- ivec2 pos = ivec2(gl_GlobalInvocationID.xy);
- ivec2 size = imageSize(output_image);
-
- if (pos.x >= size.x || pos.y >= size.y) {
- return;
- }
-
- // Calculate block and pixel within block
- ivec2 block = pos / 4;
- ivec2 pixel = pos % 4;
-
- // Each BC7 block is 16 bytes
- int block_index = block.y * (size.x / 4) + block.x;
-
- // Simplified BC7 decoding - you'll need to implement full BC7 decoding
- vec4 color = texelFetch(bc7_data, block_index * 4 + pixel.y * 4 + pixel.x);
-
- imageStore(output_image, pos, color);
-} \ No newline at end of file
diff --git a/src/video_core/host_shaders/convert_rgb_to_yuv420.comp b/src/video_core/host_shaders/convert_rgb_to_yuv420.comp
deleted file mode 100644
index 0a5cfab390..0000000000
--- a/src/video_core/host_shaders/convert_rgb_to_yuv420.comp
+++ /dev/null
@@ -1,29 +0,0 @@
-#version 450
-
-layout(local_size_x = 8, local_size_y = 8) in;
-
-layout(binding = 0) uniform sampler2D input_texture;
-layout(binding = 1, r8) uniform writeonly image2D y_output;
-layout(binding = 2, r8) uniform writeonly image2D u_output;
-layout(binding = 3, r8) uniform writeonly image2D v_output;
-
-void main() {
- ivec2 pos = ivec2(gl_GlobalInvocationID.xy);
- ivec2 size = imageSize(y_output);
-
- if (pos.x >= size.x || pos.y >= size.y) {
- return;
- }
-
- vec2 tex_coord = vec2(pos) / vec2(size);
- vec3 rgb = texture(input_texture, tex_coord).rgb;
-
- // RGB to YUV conversion
- float y = 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b;
- float u = -0.147 * rgb.r - 0.289 * rgb.g + 0.436 * rgb.b + 0.5;
- float v = 0.615 * rgb.r - 0.515 * rgb.g - 0.100 * rgb.b + 0.5;
-
- imageStore(y_output, pos, vec4(y));
- imageStore(u_output, pos / 2, vec4(u));
- imageStore(v_output, pos / 2, vec4(v));
-} \ No newline at end of file
diff --git a/src/video_core/host_shaders/convert_rgba16f_to_rgba8.frag b/src/video_core/host_shaders/convert_rgba16f_to_rgba8.frag
deleted file mode 100644
index 9e430f5047..0000000000
--- a/src/video_core/host_shaders/convert_rgba16f_to_rgba8.frag
+++ /dev/null
@@ -1,31 +0,0 @@
-#version 450
-
-layout(location = 0) in vec2 texcoord;
-layout(location = 0) out vec4 color;
-
-layout(binding = 0) uniform sampler2D input_texture;
-
-layout(push_constant) uniform PushConstants {
- float exposure;
- float gamma;
-} constants;
-
-vec3 tonemap(vec3 hdr) {
- // Reinhard tonemapping
- return hdr / (hdr + vec3(1.0));
-}
-
-void main() {
- vec4 hdr = texture(input_texture, texcoord);
-
- // Apply exposure
- vec3 exposed = hdr.rgb * constants.exposure;
-
- // Tonemap
- vec3 tonemapped = tonemap(exposed);
-
- // Gamma correction
- vec3 gamma_corrected = pow(tonemapped, vec3(1.0 / constants.gamma));
-
- color = vec4(gamma_corrected, hdr.a);
-} \ No newline at end of file
diff --git a/src/video_core/host_shaders/convert_rgba8_to_bgra8.frag b/src/video_core/host_shaders/convert_rgba8_to_bgra8.frag
deleted file mode 100644
index 6f7d247985..0000000000
--- a/src/video_core/host_shaders/convert_rgba8_to_bgra8.frag
+++ /dev/null
@@ -1,11 +0,0 @@
-#version 450
-
-layout(location = 0) in vec2 texcoord;
-layout(location = 0) out vec4 color;
-
-layout(binding = 0) uniform sampler2D input_texture;
-
-void main() {
- vec4 rgba = texture(input_texture, texcoord);
- color = rgba.bgra; // Swap red and blue channels
-} \ No newline at end of file
diff --git a/src/video_core/host_shaders/convert_yuv420_to_rgb.comp b/src/video_core/host_shaders/convert_yuv420_to_rgb.comp
deleted file mode 100644
index b1f1536f80..0000000000
--- a/src/video_core/host_shaders/convert_yuv420_to_rgb.comp
+++ /dev/null
@@ -1,30 +0,0 @@
-#version 450
-
-layout(local_size_x = 8, local_size_y = 8) in;
-
-layout(binding = 0) uniform sampler2D y_texture;
-layout(binding = 1) uniform sampler2D u_texture;
-layout(binding = 2) uniform sampler2D v_texture;
-layout(binding = 3, rgba8) uniform writeonly image2D output_image;
-
-void main() {
- ivec2 pos = ivec2(gl_GlobalInvocationID.xy);
- ivec2 size = imageSize(output_image);
-
- if (pos.x >= size.x || pos.y >= size.y) {
- return;
- }
-
- vec2 tex_coord = vec2(pos) / vec2(size);
- float y = texture(y_texture, tex_coord).r;
- float u = texture(u_texture, tex_coord).r - 0.5;
- float v = texture(v_texture, tex_coord).r - 0.5;
-
- // YUV to RGB conversion
- vec3 rgb;
- rgb.r = y + 1.402 * v;
- rgb.g = y - 0.344 * u - 0.714 * v;
- rgb.b = y + 1.772 * u;
-
- imageStore(output_image, pos, vec4(rgb, 1.0));
-} \ No newline at end of file
diff --git a/src/video_core/host_shaders/dither_temporal.frag b/src/video_core/host_shaders/dither_temporal.frag
deleted file mode 100644
index feaddc9aaf..0000000000
--- a/src/video_core/host_shaders/dither_temporal.frag
+++ /dev/null
@@ -1,29 +0,0 @@
-#version 450
-
-layout(location = 0) in vec2 texcoord;
-layout(location = 0) out vec4 color;
-
-layout(binding = 0) uniform sampler2D input_texture;
-
-layout(push_constant) uniform PushConstants {
- float frame_count;
- float dither_strength;
-} constants;
-
-// Pseudo-random number generator
-float rand(vec2 co) {
- return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
-}
-
-void main() {
- vec4 input_color = texture(input_texture, texcoord);
-
- // Generate temporal noise based on frame count
- vec2 noise_coord = gl_FragCoord.xy + vec2(constants.frame_count);
- float noise = rand(noise_coord) * 2.0 - 1.0;
-
- // Apply dithering
- vec3 dithered = input_color.rgb + noise * constants.dither_strength;
-
- color = vec4(dithered, input_color.a);
-} \ No newline at end of file
diff --git a/src/video_core/host_shaders/dynamic_resolution_scale.comp b/src/video_core/host_shaders/dynamic_resolution_scale.comp
deleted file mode 100644
index 88f0a41c1c..0000000000
--- a/src/video_core/host_shaders/dynamic_resolution_scale.comp
+++ /dev/null
@@ -1,68 +0,0 @@
-#version 450
-
-layout(local_size_x = 8, local_size_y = 8) in;
-
-layout(binding = 0) uniform sampler2D input_texture;
-layout(binding = 1, rgba8) uniform writeonly image2D output_image;
-
-layout(push_constant) uniform PushConstants {
- vec2 scale_factor;
- vec2 input_size;
-} constants;
-
-vec4 cubic(float v) {
- vec4 n = vec4(1.0, 2.0, 3.0, 4.0) - v;
- vec4 s = n * n * n;
- float x = s.x;
- float y = s.y - 4.0 * s.x;
- float z = s.z - 4.0 * s.y + 6.0 * s.x;
- float w = s.w - 4.0 * s.z + 6.0 * s.y - 4.0 * s.x;
- return vec4(x, y, z, w) * (1.0/6.0);
-}
-
-vec4 bicubic_sample(sampler2D tex, vec2 tex_coord) {
- vec2 tex_size = constants.input_size;
- vec2 inv_tex_size = 1.0 / tex_size;
-
- tex_coord = tex_coord * tex_size - 0.5;
-
- vec2 fxy = fract(tex_coord);
- tex_coord -= fxy;
-
- vec4 xcubic = cubic(fxy.x);
- vec4 ycubic = cubic(fxy.y);
-
- vec4 c = tex_coord.xxyy + vec2(-0.5, +1.5).xyxy;
- vec4 s = vec4(xcubic.xz + xcubic.yw, ycubic.xz + ycubic.yw);
- vec4 offset = c + vec4(xcubic.yw, ycubic.yw) / s;
-
- offset *= inv_tex_size.xxyy;
-
- vec4 sample0 = texture(tex, offset.xz);
- vec4 sample1 = texture(tex, offset.yz);
- vec4 sample2 = texture(tex, offset.xw);
- vec4 sample3 = texture(tex, offset.yw);
-
- float sx = s.x / (s.x + s.y);
- float sy = s.z / (s.z + s.w);
-
- return mix(
- mix(sample3, sample2, sx),
- mix(sample1, sample0, sx),
- sy
- );
-}
-
-void main() {
- ivec2 pos = ivec2(gl_GlobalInvocationID.xy);
- ivec2 size = imageSize(output_image);
-
- if (pos.x >= size.x || pos.y >= size.y) {
- return;
- }
-
- vec2 tex_coord = vec2(pos) / vec2(size);
- vec4 color = bicubic_sample(input_texture, tex_coord);
-
- imageStore(output_image, pos, color);
-} \ No newline at end of file
diff --git a/src/video_core/renderer_vulkan/blit_image.cpp b/src/video_core/renderer_vulkan/blit_image.cpp
index 5b4b44db53..07611ef98c 100644
--- a/src/video_core/renderer_vulkan/blit_image.cpp
+++ b/src/video_core/renderer_vulkan/blit_image.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
@@ -31,15 +31,6 @@
#include "video_core/surface.h"
#include "video_core/vulkan_common/vulkan_device.h"
#include "video_core/vulkan_common/vulkan_wrapper.h"
-#include "video_core/host_shaders/convert_abgr8_srgb_to_d24s8_frag_spv.h"
-#include "video_core/host_shaders/convert_rgba8_to_bgra8_frag_spv.h"
-#include "video_core/host_shaders/convert_yuv420_to_rgb_comp_spv.h"
-#include "video_core/host_shaders/convert_rgb_to_yuv420_comp_spv.h"
-#include "video_core/host_shaders/convert_bc7_to_rgba8_comp_spv.h"
-#include "video_core/host_shaders/convert_astc_hdr_to_rgba16f_comp_spv.h"
-#include "video_core/host_shaders/convert_rgba16f_to_rgba8_frag_spv.h"
-#include "video_core/host_shaders/dither_temporal_frag_spv.h"
-#include "video_core/host_shaders/dynamic_resolution_scale_comp_spv.h"
namespace Vulkan {
@@ -540,17 +531,6 @@ BlitImageHelper::BlitImageHelper(const Device& device_, Scheduler& scheduler_,
convert_d32f_to_abgr8_frag(BuildShader(device, CONVERT_D32F_TO_ABGR8_FRAG_SPV)),
convert_d24s8_to_abgr8_frag(BuildShader(device, CONVERT_D24S8_TO_ABGR8_FRAG_SPV)),
convert_s8d24_to_abgr8_frag(BuildShader(device, CONVERT_S8D24_TO_ABGR8_FRAG_SPV)),
- convert_abgr8_srgb_to_d24s8_frag(device.IsExtShaderStencilExportSupported()
- ? BuildShader(device, CONVERT_ABGR8_SRGB_TO_D24S8_FRAG_SPV)
- : vk::ShaderModule{}),
- convert_rgba_to_bgra_frag(BuildShader(device, CONVERT_RGBA8_TO_BGRA8_FRAG_SPV)),
- convert_yuv420_to_rgb_comp(BuildShader(device, CONVERT_YUV420_TO_RGB_COMP_SPV)),
- convert_rgb_to_yuv420_comp(BuildShader(device, CONVERT_RGB_TO_YUV420_COMP_SPV)),
- convert_bc7_to_rgba8_comp(BuildShader(device, CONVERT_BC7_TO_RGBA8_COMP_SPV)),
- convert_astc_hdr_to_rgba16f_comp(BuildShader(device, CONVERT_ASTC_HDR_TO_RGBA16F_COMP_SPV)),
- convert_rgba16f_to_rgba8_frag(BuildShader(device, CONVERT_RGBA16F_TO_RGBA8_FRAG_SPV)),
- dither_temporal_frag(BuildShader(device, DITHER_TEMPORAL_FRAG_SPV)),
- dynamic_resolution_scale_comp(BuildShader(device, DYNAMIC_RESOLUTION_SCALE_COMP_SPV)),
linear_sampler(device.GetLogical().CreateSampler(SAMPLER_CREATE_INFO<VK_FILTER_LINEAR>)),
nearest_sampler(device.GetLogical().CreateSampler(SAMPLER_CREATE_INFO<VK_FILTER_NEAREST>)) {}
@@ -711,19 +691,6 @@ void BlitImageHelper::ConvertS8D24ToABGR8(const Framebuffer* dst_framebuffer,
ConvertDepthStencil(*convert_s8d24_to_abgr8_pipeline, dst_framebuffer, src_image_view);
}
-void BlitImageHelper::ConvertABGR8SRGBToD24S8(const Framebuffer* dst_framebuffer,
- const ImageView& src_image_view) {
- if (!device.IsExtShaderStencilExportSupported()) {
- // Shader requires VK_EXT_shader_stencil_export which is not available
- LOG_WARNING(Render_Vulkan, "ConvertABGR8SRGBToD24S8 requires shader_stencil_export, skipping");
- return;
- }
- ConvertPipelineDepthTargetEx(convert_abgr8_srgb_to_d24s8_pipeline,
- dst_framebuffer->RenderPass(),
- convert_abgr8_srgb_to_d24s8_frag);
- Convert(*convert_abgr8_srgb_to_d24s8_pipeline, dst_framebuffer, src_image_view);
-}
-
void BlitImageHelper::ClearColor(const Framebuffer* dst_framebuffer, u8 color_mask,
const std::array<f32, 4>& clear_color,
const Region2D& dst_region) {
@@ -1192,68 +1159,4 @@ void BlitImageHelper::ConvertPipeline(vk::Pipeline& pipeline, VkRenderPass rende
});
}
-void BlitImageHelper::ConvertRGBAtoGBRA(const Framebuffer* dst_framebuffer,
- const ImageView& src_image_view) {
- ConvertPipeline(convert_rgba_to_bgra_pipeline,
- dst_framebuffer->RenderPass(),
- false);
- Convert(*convert_rgba_to_bgra_pipeline, dst_framebuffer, src_image_view);
-}
-
-void BlitImageHelper::ConvertYUV420toRGB(const Framebuffer* dst_framebuffer,
- const ImageView& src_image_view) {
- ConvertPipeline(convert_yuv420_to_rgb_pipeline,
- dst_framebuffer->RenderPass(),
- false);
- Convert(*convert_yuv420_to_rgb_pipeline, dst_framebuffer, src_image_view);
-}
-
-void BlitImageHelper::ConvertRGBtoYUV420(const Framebuffer* dst_framebuffer,
- const ImageView& src_image_view) {
- ConvertPipeline(convert_rgb_to_yuv420_pipeline,
- dst_framebuffer->RenderPass(),
- false);
- Convert(*convert_rgb_to_yuv420_pipeline, dst_framebuffer, src_image_view);
-}
-
-void BlitImageHelper::ConvertBC7toRGBA8(const Framebuffer* dst_framebuffer,
- const ImageView& src_image_view) {
- ConvertPipeline(convert_bc7_to_rgba8_pipeline,
- dst_framebuffer->RenderPass(),
- false);
- Convert(*convert_bc7_to_rgba8_pipeline, dst_framebuffer, src_image_view);
-}
-
-void BlitImageHelper::ConvertASTCHDRtoRGBA16F(const Framebuffer* dst_framebuffer,
- const ImageView& src_image_view) {
- ConvertPipeline(convert_astc_hdr_to_rgba16f_pipeline,
- dst_framebuffer->RenderPass(),
- false);
- Convert(*convert_astc_hdr_to_rgba16f_pipeline, dst_framebuffer, src_image_view);
-}
-
-void BlitImageHelper::ConvertRGBA16FtoRGBA8(const Framebuffer* dst_framebuffer,
- const ImageView& src_image_view) {
- ConvertPipeline(convert_rgba16f_to_rgba8_pipeline,
- dst_framebuffer->RenderPass(),
- false);
- Convert(*convert_rgba16f_to_rgba8_pipeline, dst_framebuffer, src_image_view);
-}
-
-void BlitImageHelper::ApplyDitherTemporal(const Framebuffer* dst_framebuffer,
- const ImageView& src_image_view) {
- ConvertPipeline(dither_temporal_pipeline,
- dst_framebuffer->RenderPass(),
- false);
- Convert(*dither_temporal_pipeline, dst_framebuffer, src_image_view);
-}
-
-void BlitImageHelper::ApplyDynamicResolutionScale(const Framebuffer* dst_framebuffer,
- const ImageView& src_image_view) {
- ConvertPipeline(dynamic_resolution_scale_pipeline,
- dst_framebuffer->RenderPass(),
- false);
- Convert(*dynamic_resolution_scale_pipeline, dst_framebuffer, src_image_view);
-}
-
} // namespace Vulkan
diff --git a/src/video_core/renderer_vulkan/blit_image.h b/src/video_core/renderer_vulkan/blit_image.h
index bdb8cce883..34f1b25f0f 100644
--- a/src/video_core/renderer_vulkan/blit_image.h
+++ b/src/video_core/renderer_vulkan/blit_image.h
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
@@ -70,8 +70,6 @@ public:
void ConvertABGR8ToD24S8(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
- void ConvertABGR8SRGBToD24S8(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
-
void ConvertABGR8ToD32F(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
void ConvertD32FToABGR8(const Framebuffer* dst_framebuffer, ImageView& src_image_view);
@@ -86,16 +84,6 @@ public:
void ClearDepthStencil(const Framebuffer* dst_framebuffer, bool depth_clear, f32 clear_depth,
u8 stencil_mask, u32 stencil_ref, u32 stencil_compare_mask,
const Region2D& dst_region);
-
- void ConvertRGBAtoGBRA(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
- void ConvertYUV420toRGB(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
- void ConvertRGBtoYUV420(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
- void ConvertBC7toRGBA8(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
- void ConvertASTCHDRtoRGBA16F(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
- void ConvertRGBA16FtoRGBA8(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
- void ApplyDitherTemporal(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
- void ApplyDynamicResolutionScale(const Framebuffer* dst_framebuffer, const ImageView& src_image_view);
-
private:
void Convert(VkPipeline pipeline, const Framebuffer* dst_framebuffer,
const ImageView& src_image_view);
@@ -150,15 +138,6 @@ private:
vk::ShaderModule convert_d32f_to_abgr8_frag;
vk::ShaderModule convert_d24s8_to_abgr8_frag;
vk::ShaderModule convert_s8d24_to_abgr8_frag;
- vk::ShaderModule convert_abgr8_srgb_to_d24s8_frag;
- vk::ShaderModule convert_rgba_to_bgra_frag;
- vk::ShaderModule convert_yuv420_to_rgb_comp;
- vk::ShaderModule convert_rgb_to_yuv420_comp;
- vk::ShaderModule convert_bc7_to_rgba8_comp;
- vk::ShaderModule convert_astc_hdr_to_rgba16f_comp;
- vk::ShaderModule convert_rgba16f_to_rgba8_frag;
- vk::ShaderModule dither_temporal_frag;
- vk::ShaderModule dynamic_resolution_scale_comp;
vk::Sampler linear_sampler;
vk::Sampler nearest_sampler;
@@ -179,15 +158,6 @@ private:
vk::Pipeline convert_d32f_to_abgr8_pipeline;
vk::Pipeline convert_d24s8_to_abgr8_pipeline;
vk::Pipeline convert_s8d24_to_abgr8_pipeline;
- vk::Pipeline convert_abgr8_srgb_to_d24s8_pipeline;
- vk::Pipeline convert_rgba_to_bgra_pipeline;
- vk::Pipeline convert_yuv420_to_rgb_pipeline;
- vk::Pipeline convert_rgb_to_yuv420_pipeline;
- vk::Pipeline convert_bc7_to_rgba8_pipeline;
- vk::Pipeline convert_astc_hdr_to_rgba16f_pipeline;
- vk::Pipeline convert_rgba16f_to_rgba8_pipeline;
- vk::Pipeline dither_temporal_pipeline;
- vk::Pipeline dynamic_resolution_scale_pipeline;
};
} // namespace Vulkan
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
index eb50f36d25..6ce7433240 100644
--- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
@@ -1254,25 +1254,13 @@ void TextureCacheRuntime::ConvertImage(Framebuffer* dst, ImageView& dst_view, Im
switch (dst_view.format) {
case PixelFormat::D24_UNORM_S8_UINT:
- // Handle sRGB source formats
- if (src_view.format == PixelFormat::A8B8G8R8_SRGB ||
- src_view.format == PixelFormat::B8G8R8A8_SRGB) {
- // Verify format support before conversion
- if (device.IsFormatSupported(VK_FORMAT_D24_UNORM_S8_UINT,
- VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
- FormatType::Optimal)) {
- return blit_image_helper.ConvertABGR8SRGBToD24S8(dst, src_view);
- } else {
- // Fallback to regular ABGR8 conversion if sRGB not supported
- return blit_image_helper.ConvertABGR8ToD24S8(dst, src_view);
- }
- }
- if (src_view.format == PixelFormat::A8B8G8R8_UNORM ||
- src_view.format == PixelFormat::B8G8R8A8_UNORM) {
+ if (src_view.format == PixelFormat::A8B8G8R8_UNORM
+ || src_view.format == PixelFormat::B8G8R8A8_UNORM
+ || src_view.format == PixelFormat::A8B8G8R8_SRGB
+ || src_view.format == PixelFormat::B8G8R8A8_SRGB) {
return blit_image_helper.ConvertABGR8ToD24S8(dst, src_view);
}
break;
-
case PixelFormat::A8B8G8R8_UNORM:
case PixelFormat::A8B8G8R8_SNORM:
case PixelFormat::A8B8G8R8_SINT:
diff --git a/src/video_core/renderer_vulkan/vk_texture_manager.cpp b/src/video_core/renderer_vulkan/vk_texture_manager.cpp
deleted file mode 100644
index 003af9e6fb..0000000000
--- a/src/video_core/renderer_vulkan/vk_texture_manager.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-#include <filesystem>
-
-#include "common/assert.h"
-#include "common/logging/log.h"
-#include "video_core/renderer_vulkan/vk_texture_manager.h"
-#include "video_core/vulkan_common/vulkan_device.h"
-#include "video_core/vulkan_common/vulkan_memory_allocator.h"
-#include "video_core/vulkan_common/vulkan_wrapper.h"
-
-namespace Vulkan {
-
-TextureManager::TextureManager(const Device& device_, MemoryAllocator& memory_allocator_)
- : device(device_), memory_allocator(memory_allocator_) {
-
- // Create a default texture for fallback in case of errors
- default_texture = CreateDefaultTexture();
-}
-
-TextureManager::~TextureManager() {
- std::lock_guard<std::mutex> lock(texture_mutex);
- // Clear all cached textures
- texture_cache.clear();
-
- // Default texture will be cleaned up automatically by vk::Image's destructor
-}
-
-VkImage TextureManager::GetTexture(const std::string& texture_path) {
- std::lock_guard<std::mutex> lock(texture_mutex);
-
- // Check if the texture is already in the cache
- auto it = texture_cache.find(texture_path);
- if (it != texture_cache.end()) {
- return *it->second;
- }
-
- // Load the texture and add it to the cache
- vk::Image new_texture = LoadTexture(texture_path);
- if (new_texture) {
- VkImage raw_handle = *new_texture;
- texture_cache.emplace(texture_path, std::move(new_texture));
- return raw_handle;
- }
-
- // If loading fails, return the default texture if it exists
- LOG_WARNING(Render_Vulkan, "Failed to load texture: {}, using default", texture_path);
- if (default_texture.has_value()) {
- return *(*default_texture);
- }
- return VK_NULL_HANDLE;
-}
-
-void TextureManager::ReloadTexture(const std::string& texture_path) {
- std::lock_guard<std::mutex> lock(texture_mutex);
-
- // Remove the texture from cache if it exists
- auto it = texture_cache.find(texture_path);
- if (it != texture_cache.end()) {
- LOG_INFO(Render_Vulkan, "Reloading texture: {}", texture_path);
- texture_cache.erase(it);
- }
-
- // The texture will be reloaded on next GetTexture call
-}
-
-bool TextureManager::IsTextureLoadedCorrectly(VkImage texture) {
- // Check if the texture handle is valid
- static const VkImage null_handle = VK_NULL_HANDLE;
- return texture != null_handle;
-}
-
-void TextureManager::CleanupTextureCache() {
- std::lock_guard<std::mutex> lock(texture_mutex);
-
- // TODO: track usage and remove unused textures [ZEP]
-
- LOG_INFO(Render_Vulkan, "Handling texture cache cleanup, current size: {}", texture_cache.size());
-}
-
-void TextureManager::HandleTextureRendering(const std::string& texture_path,
- std::function<void(VkImage)> render_callback) {
- VkImage texture = GetTexture(texture_path);
-
- if (!IsTextureLoadedCorrectly(texture)) {
- LOG_ERROR(Render_Vulkan, "Texture failed to load correctly: {}, attempting reload", texture_path);
- ReloadTexture(texture_path);
- texture = GetTexture(texture_path);
- }
-
- // Execute the rendering callback with the texture
- render_callback(texture);
-}
-
-vk::Image TextureManager::LoadTexture(const std::string& texture_path) {
- // TODO: load image data from disk
- // and create a proper Vulkan texture [ZEP]
-
- if (!std::filesystem::exists(texture_path)) {
- LOG_ERROR(Render_Vulkan, "Texture file not found: {}", texture_path);
- return {};
- }
-
- try {
-
- LOG_INFO(Render_Vulkan, "Loaded texture: {}", texture_path);
-
- // TODO: create an actual VkImage [ZEP]
- return CreateDefaultTexture();
- } catch (const std::exception& e) {
- LOG_ERROR(Render_Vulkan, "Error loading texture {}: {}", texture_path, e.what());
- return {};
- }
-}
-
-vk::Image TextureManager::CreateDefaultTexture() {
- // Create a small default texture (1x1 pixel) to use as a fallback
-// const VkExtent2D extent{1, 1};
-
-/* // Create image
- const VkImageCreateInfo image_ci{
- .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
- .pNext = nullptr,
- .flags = 0,
- .imageType = VK_IMAGE_TYPE_2D,
- .format = texture_format,
- .extent = {extent.width, extent.height, 1},
- .mipLevels = 1,
- .arrayLayers = 1,
- .samples = VK_SAMPLE_COUNT_1_BIT,
- .tiling = VK_IMAGE_TILING_OPTIMAL,
- .usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT,
- .sharingMode = VK_SHARING_MODE_EXCLUSIVE,
- .queueFamilyIndexCount = 0,
- .pQueueFamilyIndices = nullptr,
- .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED,
- }; */
-
- // TODO: create an actual VkImage [ZEP]
- LOG_INFO(Render_Vulkan, "Created default fallback texture");
- return {};
-}
-
-} // namespace Vulkan \ No newline at end of file