The partial free is not supported from VirtualFree (we have a test for that) but NtFreeVirtualMemory supports it.
The primary motivation behind these patches is the preparation for VM placeholders support. With those flags (MEM_RESERVE_PLACEHOLDER, MEM_PRESERVE_PLACEHOLDER, MEM_REPLACE_PLACEHOLDER and MEM_COALESCE_PLACEHOLDERS) views might be arbitrary split or joined with just page alignment.
--
v2: ntdll: Add logging for free ranges.
ntdll: Support partial view release in NtFreeVirtualMemory().
ntdll: Factor out some view manipulation functions.
ntdll: Fully support unaligned views in free ranges management.
ntdll: Fix size validation in NtFreeVirtualMemory().
kernelbase: Validate nonzero size for MEM_RELEASE in VirtualFreeEx().
ntdll/tests: Add tests for freeing a part of view.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1339
--
v4: tests: Add a test for SampleBias() with multiple mipmap levels.
tests: Add a test for sampling from nonzero mipmap levels.
tests: Add a test for loading from nonzero mipmap levels.
tests/shader_runner: Add support for creating mipmapped textures.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/191