diff --git a/source/blender/gpu/GPU_extensions.h b/source/blender/gpu/GPU_extensions.h index 3813fe3da8e..66b19449419 100644 --- a/source/blender/gpu/GPU_extensions.h +++ b/source/blender/gpu/GPU_extensions.h @@ -51,6 +51,7 @@ typedef struct GPUFrameBuffer GPUFrameBuffer; struct GPUShader; typedef struct GPUShader GPUShader; +void GPU_extensions_disable(void); void GPU_extensions_init(void); /* call this before running any of the functions below */ void GPU_extensions_exit(void); int GPU_extensions_minimum_support(void); diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index a8dc369460c..7654c67419b 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -66,11 +66,17 @@ - arb draw buffers? 2.0 core */ -struct GPUGlobal { +static struct GPUGlobal { GLint maxtextures; GLuint currentfb; int minimumsupport; -} GG = {1, 0, 0}; + int extdisabled; +} GG = {1, 0, 0, 0}; + +void GPU_extensions_disable() +{ + GG.extdisabled = 1; +} void GPU_extensions_init() { @@ -89,7 +95,7 @@ void GPU_extensions_init() int GPU_extensions_minimum_support() { - return GG.minimumsupport; + return !GG.extdisabled && GG.minimumsupport; } int GPU_print_error(char *str) diff --git a/source/creator/creator.c b/source/creator/creator.c index ab86c46dbdd..38c37575bd1 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -77,6 +77,7 @@ #include "RE_pipeline.h" #include "GPU_draw.h" +#include "GPU_extensions.h" #include "playanim_ext.h" #include "mydevice.h" @@ -220,6 +221,7 @@ static void print_help(void) printf (" -d\t\tTurn debugging on\n"); printf (" -noaudio\tDisable audio on systems that support audio\n"); printf (" -nojoystick\tDisable joystick support\n"); + printf (" -noglsl\tDisable GLSL shading\n"); printf (" -h\t\tPrint this help text\n"); printf (" -y\t\tDisable automatic python script execution (scriptlinks, pydrivers, pyconstraints, pynodes)\n"); printf (" -P \tRun the given Python script (filename or Blender Text)\n"); @@ -506,6 +508,8 @@ int main(int argc, char **argv) SYS_WriteCommandLineInt(syshandle,"nojoystick",1); if (G.f & G_DEBUG) printf("disabling nojoystick\n"); } + if (BLI_strcasecmp(argv[a], "-noglsl") == 0) + GPU_extensions_disable(); break; } }