[Interest] Qt 5.5 WinRT x64 VS2013 applications fail WACK Direct3D tests

Andrew Knight andrew.knight at intopalo.com
Tue Sep 29 22:23:28 CEST 2015


Hi Alexander,

First of all, thanks for bringing this to our attention. The lack of 
Trim() was a regression we let in 5.5.0, although the additional D3D 
tests failures are caused by new items in the Windows 10 WACK. The fix 
is now in the 5.5.1 branch of qtbase and will be part of the 5.5.1 
release (https://codereview.qt-project.org/126680).

I've added some comments inline.

Cheers,
Andrew

On 09/24/2015 04:20 PM, Alexander Tkachenko wrote:
> Hi Maurice,
>
> Thank you for your reply!
>
> If I'm correct, d3dcompiler_47.dll should not be included in Windows 
> Store package at all because it is a Microsoft's digitally signed dll, 
> which is already present in the OS. So, WinRT-restricted API calls in 
> d3dcompiler_47.dll aren't actually a problem. I 
> touched d3dcompiler_47.dll just to clarify that putting this dll did 
> not help me to resolve the issue.
>

Right, this DLL is provided by the system and is loaded when the 
platform plugin is loaded, as the platform plugin (qwinrt.dll) links to 
d3dcompiler.lib.

> The problem is that even basic Qt 5.5 x64 WinRT QWidget application 
> fails WACK tests. So, most likely Qt 5.5 x64 WinRT application could 
> not be submitted to Windows Store.
>
> I have installed Windows 8.1 SDK WACK instead of Windows 10 SDK's one: 
> Direct3D feature level support - OK , but Trim() test is still failing.

I saw that problem, too. The above fix addresses both problems from a 
WACK point of view, although that doesn't mean all apps will work on all 
feature levels. We probably need to allow changing the D3D feature level 
via an environment variable in Qt 5.6. That way, you will be able to 
ensure your app works with the lowest D3D levels without needing to 
manually hack the code or test on an older machine.

> Here are detailed steps to reproduce the issue:
>
> 1. Download Open Source version of Qt online installer from 
> http://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe and 
> launch it;
>
> 2. Login into account and select Windows Runtime 8.1 x64 (MSVC2013);
>
> 3. Install it and create basic QWidget application File->New file or 
> project->Qt Widgets Application->Select "Desktop Windows Runtime 8.1 
> x64" Kit->Enter the name->select QWidget as base class;
>
> 4. Go to .ui file, add Push Button, press go to clicked() slot and add 
> QMessageBox::information(...)  there;
>
> 5. Build release and copy all needed file to separate folder, e.g. 
> "test_wack":
> + Assets
>    - logo_30x30.png
>    - logo_70x70.png
>    - logo_150x150.png
>    - logo_310x150.png
>    - logo_310x310.png
>    - logo_620x300.png
>    - logo_store.png
> + platforms
>    - qwinrt.dll
> - AppxManifest.xml
> - libEGL.dll
> - libGLESv2.dll
> - Qt5Core.dll
> - Qt5Gui.dll
> - Qt5Widgets.dll
> - test_wack.exe;
>
> 6. Copy this folder to Windows 8.1 x64 PC and install the application 
> by running in PowerShell (you should have a developer license 
> installer otherwise run Show-WindowsDeveloperLicenseRegistration and 
> enter your developer account credentials) :
> PS C:\Windows\system32> cd C:\Users\test\Desktop\test_wack
> PS C:\Users\test\Desktop\test_wack> Add-AppxPackage -Register 
> AppxManifest.xml
>
> 7. Launch the application to ensure that it's working. Test the button 
> and see Metro style message box.
>
> 8. Install App Cert Kit (version 3.4) from 8.1 Windows SDK and test 
> the application by pressing "Validate Windows Store App" button
> Overall result: FAILED
> *FAILED *Direct3D Trim after Suspend
>
> 9. Install the latest Windows 10 SDK WACK (version 10) and perform the 
> same test:
> Overall result: FAILED
> *FAILED *Crashes and hangs
> *FAILED *Direct3D feature level support
>
> *FAILED *Direct3D Trim after Suspend
> Note: After unchecking both Direct3D tests "Crashes and hangs" test is 
> OK, so this crash or hang is connected to Direct3D tests.
>
> As I mentioned in previous email, I have installed Digia's 
> QuickForecast application from Windows Store and it passed all Windows 
> 10 WACK tests. Is there a bug in Qt 5.5 or in QWidget for WinRT?

Yes.

> Am I missing something important? Is there any way to pass all WACK 
> tests? Is passing all Direct3D tests by Qt application obligatory for 
> submitting to Windows Store?

By using Qt 5.5.1.


> Any information is highly appreciated.
>
> Best Regards,
> Alexander Tkachenko
>
> ------------------------------------------------------------------------
> From: Maurice.Kalinowski at theqtcompany.com
> To: atkachenko at live.ru; interest at qt-project.org
> Subject: RE: [Interest] Qt 5.5 WinRT x64 VS2013 applications fail WACK 
> Direct3D tests
> Date: Mon, 21 Sep 2015 08:44:38 +0000
>
> Hi,
>
> would you be able to tell us, which API calls are failing on your side?
>
> We are aware of Trim() causing troubles against the Windows 10 
> certification and are aiming to have this resolved with Qt 5.6. 
> However, it should still work with VS2013/8.1 and then have your app 
> also deployed on Windows 10 itself.
>
> If there is anything else on your side, please let us know.
>
> D3dcompile_qt was needed in older versions before D3DCompile was 
> present. Hence we could remove that library at some point in the past.
>
> BR,
>
> Maurice
>
> *From:*interest-bounces+maurice.kalinowski=theqtcompany.com at qt-project.org 
> [mailto:interest-bounces+maurice.kalinowski=theqtcompany.com at qt-project.org] 
> *On Behalf Of *Alexander Tkachenko
> *Sent:* Freitag, 18. September 2015 14:01
> *To:* interest at qt-project.org
> *Subject:* [Interest] Qt 5.5 WinRT x64 VS2013 applications fail WACK 
> Direct3D tests
>
> Hello!
>
> I downloaded latest Qt 5.5 x64 WinRT VS2013 binaries, created basic 
> QWidget application and converted my Qt project to VS project by 
> executing "qmake -tp vc .pro "CONFIG+=windeployqt"". The VS2013 
> project could be compiled and launched easily but both Windows 
> Application Certification Kit Direct3D feature tests failed. I also 
> have tested Several Qt example projects on Win 10 VirtualBox and Win 
> 8.1 PC with the same result. Tried all these things with Qt 5.5 WinRT 
> x86 VS2013 which I've built from sources w/o success.
>
> On the other hand I installed Qt's QuickForecast application from 
> Windows Store and it passed all WACK tests. The only significant 
> difference I noticed between both packages is d3dcompiler_qt.dll in 
> QuickForecast package folder. This .dll is missing in Qt 5.5 x64 WinRT 
> VS2013. There is a d3dcompiler_47.dll but when I put it into package I 
> got another WACK fails connected to restricted APIs in d3dcompiler_47.dll.
>
> Is there any way to enable Direct3D features support and passing WACK 
> tests with Qt 5.5 WinRT x64 VS2013?
>
> I really appreciate any help.
>
> Best regards,
>
> Alexander Tkachenko
>
>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest




More information about the Interest mailing list