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::
};