glsl_shader_gen: Remove invariant qualifier (#7376)
* glsl_shader_gen: Remove invariant qualifier * Causes visual regressions in Pokemon with RADV * rasterizer_cache: Clear null surface to transparent
This commit is contained in:
parent
228f26d1e4
commit
8d82adb3d3
|
@ -67,6 +67,16 @@ RasterizerCache<T>::RasterizerCache(Memory::MemorySystem& memory_,
|
||||||
.wrap_s = TextureConfig::WrapMode::ClampToBorder,
|
.wrap_s = TextureConfig::WrapMode::ClampToBorder,
|
||||||
.wrap_t = TextureConfig::WrapMode::ClampToBorder,
|
.wrap_t = TextureConfig::WrapMode::ClampToBorder,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
auto& null_surface = slot_surfaces[NULL_SURFACE_ID];
|
||||||
|
runtime.ClearTexture(null_surface, {
|
||||||
|
.texture_level = 0,
|
||||||
|
.texture_rect = null_surface.GetScaledRect(),
|
||||||
|
.value =
|
||||||
|
{
|
||||||
|
.color = {0.f, 0.f, 0.f, 0.f},
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
|
|
|
@ -76,7 +76,13 @@ static std::string GetVertexInterfaceDeclaration(bool is_output, bool use_clip_p
|
||||||
if (is_output && separable_shader) {
|
if (is_output && separable_shader) {
|
||||||
// gl_PerVertex redeclaration is required for separate shader object
|
// gl_PerVertex redeclaration is required for separate shader object
|
||||||
out += "out gl_PerVertex {\n";
|
out += "out gl_PerVertex {\n";
|
||||||
|
// Apple Silicon GPU drivers optimize more aggressively, which can create
|
||||||
|
// too much variance and cause visual artifacting in games like Pokemon.
|
||||||
|
#ifdef __APPLE__
|
||||||
out += " invariant vec4 gl_Position;\n";
|
out += " invariant vec4 gl_Position;\n";
|
||||||
|
#else
|
||||||
|
out += " vec4 gl_Position;\n";
|
||||||
|
#endif
|
||||||
if (use_clip_planes) {
|
if (use_clip_planes) {
|
||||||
out += " float gl_ClipDistance[2];\n";
|
out += " float gl_ClipDistance[2];\n";
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue