Forráskód Böngészése

Add a bug workaround for newer nVidia drivers

Panagiotis Christopoulos Charitos 9 éve
szülő
commit
7e13b284b9
4 módosított fájl, 25 hozzáadás és 5 törlés
  1. 2 0
      shaders/Common.glsl
  2. 9 0
      shaders/MsCommonFrag.glsl
  3. 10 0
      shaders/MsCommonVert.glsl
  4. 4 5
      src/gr/gl/GlState.cpp

+ 2 - 0
shaders/Common.glsl

@@ -9,6 +9,8 @@
 #ifndef ANKI_SHADERS_COMMON_GLSL
 #define ANKI_SHADERS_COMMON_GLSL
 
+#define NVIDIA_LINK_ERROR_WORKAROUND 1
+
 // Default precision
 #ifndef DEFAULT_FLOAT_PRECISION
 #define DEFAULT_FLOAT_PRECISION highp

+ 9 - 0
shaders/MsCommonFrag.glsl

@@ -19,7 +19,12 @@ layout(early_fragment_tests) in;
 //
 // Input
 //
+#if NVIDIA_LINK_ERROR_WORKAROUND
+layout(location = 0) in highp vec4 in_uv;
+#else
 layout(location = 0) in highp vec2 in_uv;
+#endif
+
 #if PASS == COLOR
 layout(location = 1) in mediump vec3 in_normal;
 layout(location = 2) in mediump vec4 in_tangent;
@@ -66,7 +71,11 @@ vec4 getTangent()
 #define getTextureCoord_DEFINED
 vec2 getTextureCoord()
 {
+#if NVIDIA_LINK_ERROR_WORKAROUND
+	return in_uv.xy;
+#else
 	return in_uv;
+#endif
 }
 
 // Getter

+ 10 - 0
shaders/MsCommonVert.glsl

@@ -27,7 +27,11 @@ out gl_PerVertex
 	vec4 gl_Position;
 };
 
+#if NVIDIA_LINK_ERROR_WORKAROUND
+layout(location = 0) out highp vec4 out_uv;
+#else
 layout(location = 0) out highp vec2 out_uv;
+#endif
 
 #if PASS == COLOR || TESSELLATION
 layout(location = 1) out mediump vec3 out_normal;
@@ -46,10 +50,16 @@ void writePositionAndUv(in mat4 mvp)
 {
 #if PASS == DEPTH && LOD > 0
 // No tex coords for you
+#else
+
+#if NVIDIA_LINK_ERROR_WORKAROUND
+	out_uv = vec4(in_uv, 0.0, 0.0);
 #else
 	out_uv = in_uv;
 #endif
 
+#endif
+
 #if TESSELLATION
 	gl_Position = vec4(in_position, 1.0);
 #else

+ 4 - 5
src/gr/gl/GlState.cpp

@@ -89,16 +89,15 @@ __stdcall
 void GlState::init0(const ConfigSet& config)
 {
 	m_dynamicBuffers[BufferUsage::UNIFORM].m_size =
-		config.getNumber("gr.frameUniformsSize");
+		config.getNumber("gr.uniformPerFrameMemorySize");
 
 	m_dynamicBuffers[BufferUsage::STORAGE].m_size =
-		config.getNumber("gr.frameStorageSize");
+		config.getNumber("gr.storagePerFrameMemorySize");
 
-	m_dynamicBuffers[BufferUsage::VERTEX].m_size =
-		config.getNumber("gr.frameVertexSize");
+	m_dynamicBuffers[BufferUsage::VERTEX].m_size = 1024;
 
 	m_dynamicBuffers[BufferUsage::TRANSFER].m_size =
-		config.getNumber("gr.frameTransferSize");
+		config.getNumber("gr.transferPersistentMemorySize");
 }
 
 //==============================================================================