diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index 498f4ac51..f1799d060 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -111,6 +111,8 @@ add_library(video_core STATIC renderer_vulkan/vk_platform.h renderer_vulkan/vk_renderpass_cache.cpp renderer_vulkan/vk_renderpass_cache.h + renderer_vulkan/vk_shader_decompiler.cpp + renderer_vulkan/vk_shader_decompiler.h renderer_vulkan/vk_shader_gen.cpp renderer_vulkan/vk_shader_gen.h renderer_vulkan/vk_shader_gen_spv.cpp diff --git a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp new file mode 100644 index 000000000..d9f488861 --- /dev/null +++ b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp @@ -0,0 +1,6 @@ +#include "vk_shader_decompiler.h" + +vk_shader_decompiler::vk_shader_decompiler() +{ + +} diff --git a/src/video_core/renderer_vulkan/vk_shader_decompiler.h b/src/video_core/renderer_vulkan/vk_shader_decompiler.h new file mode 100644 index 000000000..3e9ffdb9c --- /dev/null +++ b/src/video_core/renderer_vulkan/vk_shader_decompiler.h @@ -0,0 +1,11 @@ +#ifndef VK_SHADER_DECOMPILER_H +#define VK_SHADER_DECOMPILER_H + + +class vk_shader_decompiler +{ +public: + vk_shader_decompiler(); +}; + +#endif // VK_SHADER_DECOMPILER_H diff --git a/src/video_core/renderer_vulkan/vk_shader_gen.cpp b/src/video_core/renderer_vulkan/vk_shader_gen.cpp index 71fce2255..86da7715b 100644 --- a/src/video_core/renderer_vulkan/vk_shader_gen.cpp +++ b/src/video_core/renderer_vulkan/vk_shader_gen.cpp @@ -1824,6 +1824,7 @@ layout (set = 0, binding = 0, std140) uniform vs_config { out += program_source; + LOG_INFO(Render_Vulkan, "{}", out); return out; } diff --git a/src/video_core/renderer_vulkan/vk_shader_gen_spv.cpp b/src/video_core/renderer_vulkan/vk_shader_gen_spv.cpp index a66ab6275..715dcf91f 100644 --- a/src/video_core/renderer_vulkan/vk_shader_gen_spv.cpp +++ b/src/video_core/renderer_vulkan/vk_shader_gen_spv.cpp @@ -948,7 +948,8 @@ void FragmentModule::DefineProcTexSampler() { const Id proctex_alpha_map_offset{GetShaderDataMember(i32_id, ConstS32(13))}; const Id final_alpha{AppendProcTexCombineAndMap(config.state.proctex.alpha_combiner, u, v, proctex_alpha_map_offset)}; - final_color = OpCompositeConstruct(vec_ids.Get(4), final_color, final_alpha); + const Id final_color_xyz{OpVectorShuffle(vec_ids.Get(3), final_color, final_color, 0, 1, 2)}; + final_color = OpCompositeConstruct(vec_ids.Get(4), final_color_xyz, final_alpha); } OpReturnValue(final_color); diff --git a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp index 03a9ba429..b6334690e 100644 --- a/src/video_core/renderer_vulkan/vk_texture_runtime.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_runtime.cpp @@ -224,10 +224,13 @@ ImageAlloc TextureRuntime::Allocate(u32 width, u32 height, VideoCore::PixelForma } const bool need_format_list = create_storage_view && instance.IsImageFormatListSupported(); - const vk::Format storage_format = vk::Format::eR32Uint; + const std::array format_list = { + vk::Format::eR8G8B8A8Unorm, + vk::Format::eR32Uint, + }; const vk::ImageFormatListCreateInfo image_format_list = { - .viewFormatCount = 1, - .pViewFormats = &storage_format, + .viewFormatCount = static_cast(format_list.size()), + .pViewFormats = format_list.data(), }; const vk::ImageCreateInfo image_info = {