IddCx Driver frame stutters, potentially caused by OS version issues - wdk

I am working on a IddCx indirect Display Driver. I have run into a bug that I cant find any reason to blame my own code on. Every two seconds or so IddCxSwapChainReleaseAndAcquireBuffer takes over 100ms, up to 8000ms to complete. It normally takes below 16ms to complete (depends on your frame rate).
I even added timestamps to the IddCx Sample code from Microsoft. It still has this issue, so it cant be a fault with my own code. I have exhausted most of my debugging options.
Changing IddCx versions I am compiling with (1.4 to 1.8) by targeting the libs, the headers, and defining the macros (IDDCX_VERSION_MAJOR, IDDCX_VERSION_MINOR, IDDCX_MINIMUM_VERSION_REQUIRED). 1.9 btw doesnt seem to run well, IddCxDeviceInitConfig() fails with Invalid Parameter if I choose version 1.9.
Changing which UMDF version I am compiling with (2.25 to 2.33).
Changing the Windows SDK version I am using (10.0.19041.0, 10.0.20348.0, 10.0.22000.0, 10.0.22572.0).
Swapping my OS to the Insider Program preview version of win11 (currently 22000.588 co_release).
Things I think may be solutions that I need help on.
When I am running the Driver, within dxdiag, the display says its using WDDM version 1.3, while my other displays use WDDM version 3.0. WDDM 1.3 is old, so maybe this could be causing issues? How do I tell visual studio to compile my driver to compile with WDDM version 3.0? Does my driver need to WHQL Logo'd first?
IddCxGetVersion() returns with version 1801 or 1803 no matter what I change (SDK, IDDCx version, etc), which is from 2018! So what am I doing wrong here to get the OS to choose to use a newer version of IddCx? This may be related to the WDDM version being 1.3 instead of 3.0.
Swapping back to Windows 10. I originally swapped to Windows 11 because the WDK dev environment is completely unstable, with the samples sometimes not creating functional drivers, that fail to call into 'EVT_IDD_CX_ADAPTER_INIT_FINISHED', I have confirmed its being compiled incorrectly (sometimes) on windows 10, and the old dlls from earlier that day will still work, but the new dlls will not. So thats why I am staying with Windows 11, I also need to swap to Windows 11 anyways since we should be moving forwards, not backwards.

forgot to close this.
Realized the issue was that the monitor desktop simply wasnt updating. So the OS was just rendering the desktop less often, resulting in less frames being pushed to the swapchain for me to grab

Related

_CrtIsValidHeapPointer is consuming too much cpu on Windows 10 1809, Why?

I have encountered a weried problem about _CrtIsValidHeapPointer in a debug version of a dll, which compiled using msvc2017 compiler. When the debug version (with debug version of vc runtime) is loaded and running, the performance is terrible. I confirmed that most of the cpu is consumed by the calling to _CrtIsValidHeapPointer, which is called from operator delete or free(C function). Because it it pretty common to allocate and free object on the heap, the _CrtIsValidHeapPointer is called often and it leads to very laggy interaction, and somethings may cause the program to be unresponsive.
I have tried many different methods, here is what I found:
Linking with static lib version or dll version of the VC CRT makes no difference.
Using WinSDK 8.1 or 10.0 makes no difference
When running the dll under Win10 1803, it works fine. Under Win10 1809, laggy and unresponsive.
Now I have no idea why the Win10 version lead to a different behavior and how.
Any help will be appreciated.

Go after 1.10 and support of Windows XP

First of all: I know that Windows XP is end of life, insanely insecure, a big risk and that everyone still using it will be doomed for ever.
Nonetheless I have to provide an application that can also run on Windows XP and I do so using Go.
In 1.10 it was announced that XP will no longer be supported and 1.11 confirms this in the release notes:
As announced in the Go 1.10 release notes, Go 1.11 now requires
OpenBSD 6.2 or later, macOS 10.10 Yosemite or later, or Windows 7 or
later; support for previous versions of these operating systems has
been removed.
I compiled my application with 1.11 and tried to execute it on a Windows XP SP3 virtual machine. It could be executed successfully !
Then I thought that the revoked support for Windows XP only applies to the development toolchain but even that can still be executed on Windows XP:
As you can see the main go binary still runs on XP too. Is it already known when it will no longer be possible to run golang compiled exes on Windows XP because of technical limitations or if certain methods will fail because they can no longer work because of missing APIs on XP ?
Issue #23380 is the relevant discussion.
In short:
Note that even if 1.10 is the last version to support XP, you'd get bugfix backports until 1.11 is out, and security backports until 1.12 is out. That means until January 2019 <…>
As to supporting Windows XP, there are both technical and non-technical reasons.
Supporting a platform requires:
Someone who has access to it, and an incentive to work on it
(either paid or unpaid).
The most active Go-on-Windows developer, Alex Brainman,
seems to have no interest in XP anymore.
This platform must be supported on autobuilders which are part of the Go release / QA process.
An autobuilder must be supported by someone.
Bugs specific to a platform must be fixed and tested.
For instance, that issue refers to #23375 which happens only on Windows XP (SP3).
But even if a bug was specific to Windows in general—as opposed
to Windows XP, a fix for it would have to be tested on XP anyway.
Hence, unfortunately, if there is no interest in supported Go on Windows XP coming from some "powerful entities"—such as corporations—the best you can do is to actually work towards still supporting this by yourself, FWIW.
Also note that even after the support is officially ended, you still might have success building newer Go releases from the source (which is reasonably simple since Go 1.5 as Go is now built using (an older release of) Go).
Hence a real show-stopper would be the Go team hitting some roadblock which would just require some kernel feature not present in Windows XP.
A good example was some difficulty with SEH handling on Windows 2000 which eventually led to dropping support for that OS.

IE11 compatibility questions

We have a pretty huge HTML / JavaScript application written in a 15 year span that several programmers updated, edited and patched. We use this application on our computers (about 60 PCs) to teach languages online. The PCs that are used by our teachers are all Windows 8.1 (last update made in 2015), and the current IE version that's running the application is (it works only on IE):
Version: 11.0.9600.17937
Update version: 11.0.22
The decision to stop updating the computers was made due to the worry of compatibility issues. I'm taking over the position of the previous IT guy and I think it would be mandatory to update all machines with Windows 10 and the latest version of IE.
I would like to know your opinion and if there could be any compatibility issues between the IE11 version we are currently using and the latest version available on Windows 10.
I'm going to test myself the whole thing anyway.
Thank you for your help.

Upgrade path for legacy device driver code (DriverStudio) to Win10 64-bit?

tl;dr: Device driver written in NuMega DriverStudio for Win95 to be upgraded to Win10 64-bit. What's the easiest path?
We have a very old product line, which is still selling well. One dll, accessing a UART in a way normal serial handlers can not (to support an even older protocol for another company's products), was made back when the product was first released - for Windows 98! Ever since, it has been working flawless (on 32-bit machines). Therefore, the code has never been touched since it's initial creation!! (This is based on the memory of a few of my colleagues who were around at the time). The only source I have been able to find is from 2001, although one file dates back to 1998.
The driver type is WDM
Now Microsoft have stopped providing 32-bit versions of Windows 10, and customers have started asking for a 64-bit version of our software, so I landed the task of figuring out how easiest to fix it - and support win7 through to Win10, 64-bit.
However the DriverStudio from NuMega was discontinued shortly after the company was purchased by Compuware (and they have lost all knowledge of it!), and even if we were able to find an old version (latest is from 2002), it's unlikely that it's going to help us very much.
I've been searching the web, but haven't found anything giving any suggestions to what the then users of DriverStudio did to upgrade their drivers.
At the time, Jungo WinDriver were an alternative that most people didn't consider to use for 'real' drivers, but perhaps times have changed?
Any advice on how to upgrade this driver code as easy as possible will be highly appreciated.

SQLite 12 times slower on Mac than Windows

My app uses FireDAC (Delphi XE7) to access SQLite.
The Mac version is about 12 times slower than the Windows version.
I have journal_mode turned off, and no journal files appear.
The only difference I can see is that the Mac has checkpoint_fullfsync turned on by default (it's turned off by default in Windows). I've turned it off on the Mac but the 12X slowdown persists.
The Mac is the latest Yosemite. SQLite3 -version reports 3.8.5.
Windows 7 is using whatever version of SQLite3 is baked into FireDAC.
What would cause such a huge difference in performance?
As da-soft said in their comment, setting FDConnection.ResourceOptions.SilentMode to True solves the issue. Queries are now ten times faster on OSX.
Based on tests done by folks by product testers working with Embarcadero, including comparisons to UNIDac using the same queries, the 12X slowdown has something to the way FireDAC uses transactions. The issue has been added to Embarcadero's bug reporting system and it was duplicated.

Resources