diff --git a/src/lime/_internal/backend/html5/HTML5Window.hx b/src/lime/_internal/backend/html5/HTML5Window.hx index db9aea47a..474908356 100644 --- a/src/lime/_internal/backend/html5/HTML5Window.hx +++ b/src/lime/_internal/backend/html5/HTML5Window.hx @@ -287,7 +287,7 @@ class HTML5Window premultipliedAlpha: true, stencil: Reflect.hasField(contextAttributes, "stencil") ? contextAttributes.stencil : false, preserveDrawingBuffer: false, - failIfMajorPerformanceCaveat: true + failIfMajorPerformanceCaveat: Reflect.hasField(contextAttributes, "failIfMajorPerformanceCaveat") ? contextAttributes.failIfMajorPerformanceCaveat : false, }; var glContextType = ["webgl", "experimental-webgl"]; diff --git a/src/lime/graphics/RenderContextAttributes.hx b/src/lime/graphics/RenderContextAttributes.hx index 1e507da80..ade892d1a 100644 --- a/src/lime/graphics/RenderContextAttributes.hx +++ b/src/lime/graphics/RenderContextAttributes.hx @@ -48,4 +48,10 @@ typedef RenderContextAttributes = Whether vertical-sync (VSync) is enabled **/ @:optional var vsync:Bool; + + /** + Boolean that indicates if a context will be created + if the system performance is low or if no hardware GPU is available + **/ + @:optional var failIfMajorPerformanceCaveat:Bool; } diff --git a/src/lime/system/System.hx b/src/lime/system/System.hx index aa3867a1f..aebb5e8e0 100644 --- a/src/lime/system/System.hx +++ b/src/lime/system/System.hx @@ -509,6 +509,8 @@ class System attributes.x = Std.parseInt(argValue); case "y": attributes.y = Std.parseInt(argValue); + case "failIfMajorPerformanceCaveat": + attributes.context.failIfMajorPerformanceCaveat = __parseBool(argValue); default: } } diff --git a/src/lime/tools/HXProject.hx b/src/lime/tools/HXProject.hx index b5ece9f14..19995fa4b 100644 --- a/src/lime/tools/HXProject.hx +++ b/src/lime/tools/HXProject.hx @@ -171,6 +171,7 @@ class HXProject extends Script depthBuffer: true, stencilBuffer: true, colorDepth: 32, + failIfMajorPerformanceCaveat: false, maximized: false, minimized: false, hidden: false, diff --git a/src/lime/tools/WindowData.hx b/src/lime/tools/WindowData.hx index c6141bafb..2874fe404 100644 --- a/src/lime/tools/WindowData.hx +++ b/src/lime/tools/WindowData.hx @@ -23,6 +23,7 @@ typedef WindowData = @:optional var requireShaders:Bool; @:optional var depthBuffer:Bool; @:optional var stencilBuffer:Bool; + @:optional var failIfMajorPerformanceCaveat:Bool; @:optional var title:String; #if (js && html5) @:optional var element:js.html.Element; diff --git a/templates/haxe/ApplicationMain.hx b/templates/haxe/ApplicationMain.hx index f75d68b62..381eaffd3 100644 --- a/templates/haxe/ApplicationMain.hx +++ b/templates/haxe/ApplicationMain.hx @@ -60,6 +60,7 @@ import ::APP_MAIN::; depth: ::depthBuffer::, hardware: ::hardware::, stencil: ::stencilBuffer::, + failIfMajorPerformanceCaveat: ::failIfMajorPerformanceCaveat::, type: null, vsync: ::vsync:: };