mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +00:00
vk: Fix more spec violations
This commit is contained in:
parent
567d23d856
commit
d9cb1a6319
@ -173,11 +173,15 @@ namespace vk
|
|||||||
u8 samples_x = 1;
|
u8 samples_x = 1;
|
||||||
u8 samples_y = 1;
|
u8 samples_y = 1;
|
||||||
s32 static_parameters[4];
|
s32 static_parameters[4];
|
||||||
|
s32 static_parameters_width = 2;
|
||||||
|
|
||||||
depth_resolve_base()
|
depth_resolve_base()
|
||||||
{
|
{
|
||||||
renderpass_config.set_depth_mask(true);
|
renderpass_config.set_depth_mask(true);
|
||||||
renderpass_config.enable_depth_test(VK_COMPARE_OP_ALWAYS);
|
renderpass_config.enable_depth_test(VK_COMPARE_OP_ALWAYS);
|
||||||
|
|
||||||
|
// Depth-stencil buffers are almost never filterable, and we do not need it here (1:1 mapping)
|
||||||
|
m_sampler_filter = VK_FILTER_NEAREST;
|
||||||
}
|
}
|
||||||
|
|
||||||
void build(const std::string& kernel, const std::string& extensions, const std::vector<const char*>& inputs)
|
void build(const std::string& kernel, const std::string& extensions, const std::vector<const char*>& inputs)
|
||||||
@ -197,7 +201,7 @@ namespace vk
|
|||||||
"#extension GL_ARB_separate_shader_objects : enable\n";
|
"#extension GL_ARB_separate_shader_objects : enable\n";
|
||||||
fs_src += extensions +
|
fs_src += extensions +
|
||||||
"\n"
|
"\n"
|
||||||
"layout(push_constant) uniform static_data{ ivec4 regs[1]; };\n";
|
"layout(push_constant) uniform static_data{ ivec" + std::to_string(static_parameters_width) + " regs[1]; };\n";
|
||||||
|
|
||||||
int binding = 1;
|
int binding = 1;
|
||||||
for (const auto& input : inputs)
|
for (const auto& input : inputs)
|
||||||
@ -228,7 +232,7 @@ namespace vk
|
|||||||
|
|
||||||
void update_uniforms(vk::command_buffer& cmd, vk::glsl::program* /*program*/) override
|
void update_uniforms(vk::command_buffer& cmd, vk::glsl::program* /*program*/) override
|
||||||
{
|
{
|
||||||
vkCmdPushConstants(cmd, m_pipeline_layout, VK_SHADER_STAGE_FRAGMENT_BIT, 0, 8, static_parameters);
|
vkCmdPushConstants(cmd, m_pipeline_layout, VK_SHADER_STAGE_FRAGMENT_BIT, 0, static_parameters_width * 4, static_parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
void update_sample_configuration(vk::image* msaa_image)
|
void update_sample_configuration(vk::image* msaa_image)
|
||||||
@ -332,6 +336,8 @@ namespace vk
|
|||||||
region.baseArrayLayer = 0;
|
region.baseArrayLayer = 0;
|
||||||
region.layerCount = 1;
|
region.layerCount = 1;
|
||||||
|
|
||||||
|
static_parameters_width = 3;
|
||||||
|
|
||||||
build(
|
build(
|
||||||
" ivec2 out_coord = ivec2(gl_FragCoord.xy);\n"
|
" ivec2 out_coord = ivec2(gl_FragCoord.xy);\n"
|
||||||
" ivec2 in_coord = (out_coord / regs[0].xy);\n"
|
" ivec2 in_coord = (out_coord / regs[0].xy);\n"
|
||||||
@ -397,6 +403,8 @@ namespace vk
|
|||||||
region.baseArrayLayer = 0;
|
region.baseArrayLayer = 0;
|
||||||
region.layerCount = 1;
|
region.layerCount = 1;
|
||||||
|
|
||||||
|
static_parameters_width = 3;
|
||||||
|
|
||||||
build(
|
build(
|
||||||
" ivec2 pixel_coord = ivec2(gl_FragCoord.xy);\n"
|
" ivec2 pixel_coord = ivec2(gl_FragCoord.xy);\n"
|
||||||
" pixel_coord *= regs[0].xy;\n"
|
" pixel_coord *= regs[0].xy;\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user