Skip to content

v0.15.1

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Oct 07:09
· 7 commits to main since this release

No occlusion-query limit per frame

A frame no longer runs out of occlusion queries. Before, past about 500 queries in one frame, every further query that drew answered fully visible. Now each query answers its own count, however many a frame issues.

  • The query buffer grows with the frame, and a frame that fills the device's largest buffer continues in another one (#1191)
  • Only a failed allocation still answers fully visible, and it warns once in the log (#1191)
  • Mirror's Edge issues more queries than the old limit: its log carried visibility-query slot budget exhausted for this frame and it showed light halos through walls. Whether the halos are gone is not yet confirmed in the game (#1191)

sRGB write leaves float render targets linear

D3DRS_SRGBWRITEENABLE now encodes only the render targets whose format takes an sRGB write and writes every other target linear, as D3D9 does. A float render target beside an 8-bit one keeps the value the shader wrote, so the depth of field in Pro Evolution Soccer 2017's goal cut-scenes no longer blurs the whole frame.

  • A8R8G8B8, X8R8G8B8, A8B8G8R8 and X8B8G8R8 are encoded, after the blender. R5G6B5, A1R5G5B5, G16R16, A16B16G16R16 and the float formats are written linear, also beside encoded targets in the same pass (#1185)
  • A Clear with sRGB write on stores the colour encoded in an sRGB-capable target and linear in the others (#1185)
  • CheckDeviceFormat with D3DUSAGE_QUERY_SRGBWRITE answers yes only for the four encoded render-target formats (#1185)
  • The reporter's patch fixed the PES 2017 cut-scenes in game. The merged build is not yet confirmed in PES 2017 (#1185)

Rendering fixes

  • Fixed-function sphere-map texgen (D3DTSS_TCI_SPHEREMAP) generates the coordinates D3D9 does, so an environment map samples the right part of its texture. Every generated coordinate was off before (#1187)
  • Linear table fog with D3DRS_FOGSTART equal to D3DRS_FOGEND leaves a depth below the end unfogged and fully fogs one at or above it. Before, the whole primitive took the fog colour (#1187)
  • Vertex fog with an equal start and end still fogs every vertex, as D3D9 does (#1187)

Behaviour changes

  • CreateDevice, CreateDeviceEx, CreateAdditionalSwapChain, Reset and ResetEx answer D3DERR_INVALIDCALL for a lockable back buffer that is also multisampled, as D3D9 does. A game that asks for one now fails there, as it does on Windows and on Wine's own d3d9 (#1184)
  • A plain device whose Reset was refused this way needs another Reset. An extended device keeps its state (#1184)
  • Under D3DRS_SRGBWRITEENABLE, render targets of any format other than the four 8-bit ones above are written linear, and D3DUSAGE_QUERY_SRGBWRITE answers no for them (#1185)

Internals

  • bench-compare reports the counts of the sampled draw-snapshot timers as info, and a noisy perf count per frame fails only when it moves by more than five events per thousand frames as well as past its ratio threshold (#1181)
  • A unit test pins the mode list served on a 1470x956 desktop of a 2560x1664 panel, where League of Legends needs 1280x800, which v0.15.0 serves (#1188)
  • The first-draw pipeline cache end-to-end test runs in a private copy of the test executable, so no other process shares its cache file (#1189)
  • The conformance runner restarts the prefix's wineserver session after a subtest reports Failed to restore display modes, which happens on a display below 60 Hz, so the subtests after it start from the display's own mode. The @mac2 baseline is re-recorded for it (#1190)
  • Five device.c sites of Wine's d3d9 tests for the lockable multisampled back buffer, and visual.c 18390 and 29162 for table fog and sphere-map texgen, now pass and left the baseline (#1184, #1187)
  • New end-to-end tests cover occlusion queries that grow a buffer and spill across a pass break, sRGB write into an 8-bit and a float target together, sphere-map texgen coordinates, equal-range table fog and the lockable multisampled refusal at every entry point (#1184, #1185, #1187, #1191)

See INSTALL.md inside the archive for installation.

Full changelog: v0.15.0...v0.15.1