On Mon May 23 17:04:32 2022 +0000, **** wrote:
Zebediah Figura replied on the mailing list:
On 5/20/22 19:25, Chip Davis (@cdavis5e) wrote: > On Fri May 20 17:13:12 2022 +0000, **** wrote: >> Zebediah Figura replied on the mailing list: >> \`\`\` >> On 5/20/22 04:06, Jan Sikorski (@jsikorski) wrote: >>> On Fri May 20 09:06:20 2022 +0000, Chip Davis wrote: >>>> @jsikorski, I have no way of verifying that I didn't break the tests on >>>> Vulkan again. They crash on me at this moment. >>> I get the same result. Do you get a crash in test_texture() and >> test_compressed_format_compatibility() specifically? Those are the ones >> that regress. >>> >> I'm getting the same errors with GL too, actually. They seem to be >> triggered by patch 6/10 (the one moving BLOCKS etc.) >> \`\`\` >> I get the same result. Do you get a crash in test_texture() and test_compressed_format_compatibility() specifically? Those are the ones that regress. > > I don't see those failures. With Vulkan, I see different crashes that have a lot to do with a) MoltenVK not implementing stuff that b) wined3d blindly assumes that a Vulkan implementation will have. I see crashes in `test_so_statistics_query()` and `test_clear_state()`. With OpenGL, it doesn't even actually run any tests. > > This is supposed to be NFC. I don't see anything in the patch itself that would cause problems, yet clearly something is lurking there. Exactly what failures do you see? > I get signs of memory corruption and GL_INVALID_OPERATION errors like the following: 0104:err:d3d:wined3d_debug_callback 000000000039BC80: "GL_INVALID_VALUE in glCompressedTexSubImage2D(size=512)". I did a bit of debugging, and the following diff fixes things for me: diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 37846d980b7..50ccde057f0 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -3835,7 +3835,7 @@ static BOOL init_typeless_formats(const struct wined3d_adapter *adapter) attrs = typeless_format->attrs; memcpy(flags, typeless_format->flags, sizeof(flags)); copy_format(adapter, typeless_format, format); - typeless_format->attrs = attrs; + typeless_format->attrs |= attrs; for (j = 0; j < ARRAY_SIZE(typeless_format->flags); ++j) typeless_format->flags[j] |= flags[j]; }
/me smacks head
*That's* what I missed. And no wonder--it was in the first patch, when I was focused on patch 6.
Thanks for figuring this out. I have applied your diff to my patches.