On old CPUs lacking XSAVEC, Windows 8+ does not set AllFeatureSize and AllFeatures.
Wine-Bug: https://bugs.winehq.org//show_bug.cgi?id=51188 Signed-off-by: Francois Gouget fgouget@codeweavers.com --- As per the comment and commit message, my understanding is that this is tied to the XSAVEC support in the CPU.
I removed broken() to match the xstate.AllFeatures check. But I'm also fine with having either or both with broken(): I don't know what we want / can do in Wine for this.
This should fix the Windows 8.1 failures on cw-gtx560 and cw-rx460: https://test.winehq.org/data/patterns.html#ntdll:virtual --- dlls/ntdll/tests/virtual.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/tests/virtual.c b/dlls/ntdll/tests/virtual.c index e657a424fcd..5f155b1a147 100644 --- a/dlls/ntdll/tests/virtual.c +++ b/dlls/ntdll/tests/virtual.c @@ -952,12 +952,14 @@ static void test_user_shared_data(void) ok(xstate.OptimizedSave, "Got zero OptimizedSave with compaction enabled.\n"); ok(!xstate.AlignedFeatures, "Got unexpected AlignedFeatures %s.\n", wine_dbgstr_longlong(xstate.AlignedFeatures)); - ok(xstate.AllFeatureSize >= 512 + sizeof(XSTATE), "Got unexpected AllFeatureSize %u.\n", - xstate.AllFeatureSize); + ok(xstate.AllFeatureSize >= 512 + sizeof(XSTATE) + || !xstate.AllFeatureSize /* win8 on CPUs without XSAVEC */, + "Got unexpected AllFeatureSize %u.\n", xstate.AllFeatureSize);
for (i = 0; i < ARRAY_SIZE(feature_sizes); ++i) { - ok(xstate.AllFeatures[i] == feature_sizes[i] || !xstate.AllFeatures[i], + ok(xstate.AllFeatures[i] == feature_sizes[i] + || !xstate.AllFeatures[i] /* win8+ on CPUs without XSAVEC */, "Got unexpected AllFeatures[%u] %u, expected %u.\n", i, xstate.AllFeatures[i], feature_sizes[i]); ok(xstate.Features[i].Size == feature_sizes[i], "Got unexpected Features[%u].Size %u, expected %u.\n", i,