Basically, @giomasce proposal of specifying shader models for tests individually.
Supersedes !418.
---
To make the shader_runner expressive enough to handle SM1 and SM6 shader
models on tests, we need to intercept the shader model ranges for which
we want to run the tests with the ranges that each backend is capable of
running, this is complicated.
So, to make it more clear, the test's shader models are specified
individually, and runner->minimum_shader_model and
runner->maximum_shader_model are replaced with just
runner->current_shader_model.
The supported ranges are removed from the backends (except for d3d12, which handles them internally)
and their check_requirements functions is always assumed to exist and
return either true or false for just a single shader model.
Something that must be kept in mind with these changes is that if two
tests with different shader models rely on the same resources, these
resources must be either specified twice, or after a [require] directive
that includes all the pertaining models. This was necessary for
gather.shader_test and gather-offset.shader_test.
---
The following patches would change:
```
run_compilation_tests(SHADER_MODEL_4_0, SHADER_MODEL_5_1, NULL);
```
to
```
run_compilation_tests(SHADER_MODEL_2_0, SHADER_MODEL_5_1, NULL);
```
for Unix and non-cross builds, so we can test SM1 compilation even if we don't have a backend available that can actually run the tests. Some improvements to the qualifiers are required before that, to mark sm1 todos properly.
Once we have a proper SM1 runner, maybe we could get rid of run_compilation_tests().
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/434
The patch set is ready now.
--
v9: winegstreamer: Implement finalize for media sink.
winestreamer: Implement wg_muxer_finalize.
winegstreamer: Introduce media_sink_write_stream.
winestreamer: Implement wg_muxer_{get,copy,free}_buffer.
winegstreamer: Implement ProcessSample for media sink.
winegstreamer: Implement wg_muxer_push_sample.
winegstreamer: Implement wg_muxer_add_stream.
winegstreamer: Create wg_muxer for media sink.
winegstreamer: Implement seeking query for wg_muxer sink pad.
winegstreamer: Introduce new wg_muxer struct.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3303
This fixes the following issue:
- Thread X holds the typelib cache list CS, and is iterating through the list.
- Thread Y calls Release on the typelib interface, reference count hits 0, it's waiting for the cache list CS to remove this typelib.
- Thread X finds the typelib in the cache list, returns it, exits the CS.
- Thread Y enters now the CS, removes the typelib from the cache list, and proceeds to free all of the resources associated with the typelib.
- Thread X tries to use the typelib, use after free.
The method used here to prevent incrementing the reference count is borrowed from MR !2752.
An alternative could be to decouple the actual typelib data from the `ITypeLib2` interface itself, e.g what gets stored into the typelib cache is just the data for the typelib, which would have its own private reference count locked behind the cache list CS. When the public `ITypeLib2` interface's reference count hits 0, it'd lock the typelib cache list CS, decrement the private reference count, and if the private reference count is 0 remove it from the list.
The alternative method would require major restructuring of the code, which is why I'd prefer to use the one in this MR.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4002
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
--
v2: ntdll: Add ACTCTX field limit checks to RtlCreateActivationContext().
kernel32: Add ACTCTX field limit checks to CreateActCtxA().
kernel32/tests: Add some tests for CreateActCtx() with different structure sizes.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3839