vk_shader_gen_spv: Fix OpCompositeConstruct bug
* Fixes graphics on the 2d_shapes homebrew and maybe other games
This commit is contained in:
@ -111,6 +111,8 @@ add_library(video_core STATIC
|
|||||||
renderer_vulkan/vk_platform.h
|
renderer_vulkan/vk_platform.h
|
||||||
renderer_vulkan/vk_renderpass_cache.cpp
|
renderer_vulkan/vk_renderpass_cache.cpp
|
||||||
renderer_vulkan/vk_renderpass_cache.h
|
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.cpp
|
||||||
renderer_vulkan/vk_shader_gen.h
|
renderer_vulkan/vk_shader_gen.h
|
||||||
renderer_vulkan/vk_shader_gen_spv.cpp
|
renderer_vulkan/vk_shader_gen_spv.cpp
|
||||||
|
6
src/video_core/renderer_vulkan/vk_shader_decompiler.cpp
Normal file
6
src/video_core/renderer_vulkan/vk_shader_decompiler.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "vk_shader_decompiler.h"
|
||||||
|
|
||||||
|
vk_shader_decompiler::vk_shader_decompiler()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
11
src/video_core/renderer_vulkan/vk_shader_decompiler.h
Normal file
11
src/video_core/renderer_vulkan/vk_shader_decompiler.h
Normal file
@ -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
|
@ -1824,6 +1824,7 @@ layout (set = 0, binding = 0, std140) uniform vs_config {
|
|||||||
|
|
||||||
out += program_source;
|
out += program_source;
|
||||||
|
|
||||||
|
LOG_INFO(Render_Vulkan, "{}", out);
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -948,7 +948,8 @@ void FragmentModule::DefineProcTexSampler() {
|
|||||||
const Id proctex_alpha_map_offset{GetShaderDataMember(i32_id, ConstS32(13))};
|
const Id proctex_alpha_map_offset{GetShaderDataMember(i32_id, ConstS32(13))};
|
||||||
const Id final_alpha{AppendProcTexCombineAndMap(config.state.proctex.alpha_combiner, u, v,
|
const Id final_alpha{AppendProcTexCombineAndMap(config.state.proctex.alpha_combiner, u, v,
|
||||||
proctex_alpha_map_offset)};
|
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);
|
OpReturnValue(final_color);
|
||||||
|
@ -224,10 +224,13 @@ ImageAlloc TextureRuntime::Allocate(u32 width, u32 height, VideoCore::PixelForma
|
|||||||
}
|
}
|
||||||
|
|
||||||
const bool need_format_list = create_storage_view && instance.IsImageFormatListSupported();
|
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 = {
|
const vk::ImageFormatListCreateInfo image_format_list = {
|
||||||
.viewFormatCount = 1,
|
.viewFormatCount = static_cast<u32>(format_list.size()),
|
||||||
.pViewFormats = &storage_format,
|
.pViewFormats = format_list.data(),
|
||||||
};
|
};
|
||||||
|
|
||||||
const vk::ImageCreateInfo image_info = {
|
const vk::ImageCreateInfo image_info = {
|
||||||
|
Reference in New Issue
Block a user