From 0d5470a713bec66d13604b77c9dfc9ffa5cb5a64 Mon Sep 17 00:00:00 2001 From: zeromus Date: Sat, 17 Oct 2015 19:27:58 -0500 Subject: [PATCH] make display methods more resilient to uncompilable shaders --- Bizware/BizHawk.Bizware.BizwareGL.OpenTK/IGL_TK.cs | 6 ++++++ Bizware/BizHawk.Bizware.BizwareGL/RetroShader.cs | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Bizware/BizHawk.Bizware.BizwareGL.OpenTK/IGL_TK.cs b/Bizware/BizHawk.Bizware.BizwareGL.OpenTK/IGL_TK.cs index 57854e91d2..0969f798ee 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL.OpenTK/IGL_TK.cs +++ b/Bizware/BizHawk.Bizware.BizwareGL.OpenTK/IGL_TK.cs @@ -179,6 +179,12 @@ namespace BizHawk.Bizware.BizwareGL.Drivers.OpenTK public Pipeline CreatePipeline(VertexLayout vertexLayout, Shader vertexShader, Shader fragmentShader, bool required, string memo) { + //if the shaders arent available, the pipeline isn't either + if (!vertexShader.Available || !fragmentShader.Available) + { + return new Pipeline(this, null, false, null, null, null); + } + bool success = true; var vsw = vertexShader.Opaque as ShaderWrapper; diff --git a/Bizware/BizHawk.Bizware.BizwareGL/RetroShader.cs b/Bizware/BizHawk.Bizware.BizwareGL/RetroShader.cs index 92fe334844..dc105d6f3c 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL/RetroShader.cs +++ b/Bizware/BizHawk.Bizware.BizwareGL/RetroShader.cs @@ -29,7 +29,13 @@ namespace BizHawk.Bizware.BizwareGL string psSource = "#define FRAGMENT\r\n" + defines + source; var vs = owner.CreateVertexShader(true, vsSource, "main_vertex", debug); var ps = owner.CreateFragmentShader(true, psSource, "main_fragment", debug); - Pipeline = Owner.CreatePipeline(VertexLayout, vs, ps, debug, "retro"); + Pipeline = Owner.CreatePipeline(VertexLayout, vs, ps, debug, "retro"); + + if (!Pipeline.Available) + { + Available = false; + return; + } //retroarch shaders will sometimes not have the right sampler name //it's unclear whether we should bind to s_p or sampler0