From a6000e2b6679d91c9dab44e49b485de6816372bc Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 18 Jun 2015 16:59:54 +0200 Subject: windows: Disable D3D9/11 with ANGLE in VMs By adding support for the driver description, we can detect if we are in VMware. In this case D3D9 and 11 get disabled, so only the software-based options are in use. This allows running autotests like tst_qopengl, tst_qopenglwidget, tst_qgl, etc. in the Qt CI system. There OpenGL 2.x is not available, so ANGLE is the only option. D3D11 is not an option, so it picks D3D9 by default. However, this results in mystic failures. The stable solution seems to be to use WARP. This can be achieved by setting disable_d3d9 in the built-in GPU blacklist. Change-Id: I937c4b3fa82fc1a2d524b4eb712732722df2070c Reviewed-by: Simon Hausmann --- src/gui/opengl/qopengl.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/gui/opengl/qopengl.cpp') diff --git a/src/gui/opengl/qopengl.cpp b/src/gui/opengl/qopengl.cpp index 1c008ccb42c..5c16e79e6f7 100644 --- a/src/gui/opengl/qopengl.cpp +++ b/src/gui/opengl/qopengl.cpp @@ -141,6 +141,7 @@ static inline QString vendorIdKey() { return QStringLiteral("vendor_id"); } static inline QString glVendorKey() { return QStringLiteral("gl_vendor"); } static inline QString deviceIdKey() { return QStringLiteral("device_id"); } static inline QString driverVersionKey() { return QStringLiteral("driver_version"); } +static inline QString driverDescriptionKey() { return QStringLiteral("driver_description"); } static inline QString featuresKey() { return QStringLiteral("features"); } static inline QString idKey() { return QStringLiteral("id"); } static inline QString descriptionKey() { return QStringLiteral("description"); } @@ -336,6 +337,15 @@ static bool matches(const QJsonObject &object, QLatin1String("Driver version must be of type object.")); } } + + if (!gpu.driverDescription.isEmpty()) { + const QJsonValue driverDescriptionV = object.value(driverDescriptionKey()); + if (driverDescriptionV.isString()) { + if (!gpu.driverDescription.contains(driverDescriptionV.toString().toUtf8())) + return false; + } + } + return true; } -- cgit v1.2.3