[BotW] Add AMD crash workaround

Workaround made by Exzap, helped by darkemaste and some other folks
This commit is contained in:
Crementif 2019-06-19 08:15:00 +02:00
parent 54dc49bc06
commit c01d0cf5e4
No known key found for this signature in database
GPG Key ID: 11A98E7DE0412B33
4 changed files with 200 additions and 0 deletions

View File

@ -0,0 +1,61 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_packing : enable
// shader 15bc7edf9de2ed30
layout(binding = 6, std140)
uniform uniformBlockVS6
{
vec4 uf_blockVS6[1024];
};
layout(binding = 7, std140)
uniform uniformBlockVS7
{
vec4 uf_blockVS7[1024];
};
layout(binding = 8, std140)
uniform uniformBlockVS8
{
vec4 uf_blockVS8[1024];
};
layout(binding = 11, std140)
uniform uniformBlockVS11
{
vec4 uf_blockVS11[1024];
};
layout(binding = 45) uniform sampler2D textureUnitVS13;
layout(location = 0) in uvec4 attrDataSem0;
layout(location = 1) in uvec4 attrDataSem1;
layout(location = 2) in uvec4 attrDataSem2;
layout(location = 3) in uvec4 attrDataSem3;
layout(location = 4) in uvec4 attrDataSem4;
layout(location = 5) in uvec4 attrDataSem5;
layout(location = 6) in uvec4 attrDataSem6;
layout(location = 7) in uvec4 attrDataSem7;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ return min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
void main()
{
// export
gl_Position = vec4(0.0);
}

View File

@ -0,0 +1,72 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_packing : enable
// shader 24838b84d15a1da1
layout(binding = 6, std140)
uniform uniformBlockVS6
{
vec4 uf_blockVS6[1024];
};
layout(binding = 7, std140)
uniform uniformBlockVS7
{
vec4 uf_blockVS7[1024];
};
layout(binding = 8, std140)
uniform uniformBlockVS8
{
vec4 uf_blockVS8[1024];
};
layout(binding = 11, std140)
uniform uniformBlockVS11
{
vec4 uf_blockVS11[1024];
};
layout(binding = 13, std140)
uniform uniformBlockVS13
{
vec4 uf_blockVS13[1024];
};
layout(binding = 40) uniform sampler2D textureUnitVS8;
layout(binding = 45) uniform sampler2D textureUnitVS13;
layout(location = 0) in uvec4 attrDataSem0;
layout(location = 1) in uvec4 attrDataSem1;
layout(location = 2) in uvec4 attrDataSem2;
layout(location = 3) in uvec4 attrDataSem3;
layout(location = 4) in uvec4 attrDataSem4;
layout(location = 5) in uvec4 attrDataSem5;
layout(location = 6) in uvec4 attrDataSem6;
layout(location = 7) in uvec4 attrDataSem7;
layout(location = 8) in uvec4 attrDataSem8;
layout(location = 9) in uvec4 attrDataSem9;
layout(location = 10) in uvec4 attrDataSem10;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ return min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
void main()
{
// export
gl_Position = vec4(0.0);
}

View File

@ -0,0 +1,61 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_packing : enable
// shader 83a697d61a3b9202
layout(binding = 6, std140)
uniform uniformBlockVS6
{
vec4 uf_blockVS6[1024];
};
layout(binding = 7, std140)
uniform uniformBlockVS7
{
vec4 uf_blockVS7[1024];
};
layout(binding = 8, std140)
uniform uniformBlockVS8
{
vec4 uf_blockVS8[1024];
};
layout(binding = 11, std140)
uniform uniformBlockVS11
{
vec4 uf_blockVS11[1024];
};
layout(binding = 45) uniform sampler2D textureUnitVS13;
layout(location = 0) in uvec4 attrDataSem0;
layout(location = 1) in uvec4 attrDataSem1;
layout(location = 2) in uvec4 attrDataSem2;
layout(location = 3) in uvec4 attrDataSem3;
layout(location = 4) in uvec4 attrDataSem4;
layout(location = 5) in uvec4 attrDataSem5;
layout(location = 6) in uvec4 attrDataSem6;
layout(location = 7) in uvec4 attrDataSem7;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ return min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
void main()
{
// export
gl_Position = vec4(0.0);
}

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = "Workaround for AMD crashes"
path = "The Legend of Zelda: Breath of the Wild/Workarounds/GPU specific workarounds/AMD Crash"
description = Workaround for a shader related crash on AMD drivers. Required for Cemu 1.15.8 and above.
version = 3