139: New image acquiring API, swapchain release fix r=msiglreith a=kvark
The old logic was consuming the swapchain when it was passed as the old swapchain. This was incorrect, since Vulkan apps are still expected to destroy those swapchains.
The PR also adds `GFX_METAL_ACQUIRING=wait|oldest` command line. The benefit of `wait` at this moment is a simpler acquire implementation and proper error codes for it, unlike the `oldest` one (to be addressed).
Also, `-vulkan_disable_occlusion_queries` are back since apparently Dota2 requires more queries in total than our global query buffer can fit.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
131: gfx-rs update for the swapchain configuration r=msiglreith a=kvark
This should probably wait for https://github.com/gfx-rs/gfx/pull/2325
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
130: Log gfx errors r=kvark a=grovesNL
Adds `error!` to returned `Err`s in a few places – device creation, pipeline creation, and descriptor set allocation.
Co-authored-by: Joshua Groves <josh@joshgroves.com>
127: gfx update and GFX_METAL_STITCHING environment option r=kvark a=kvark
This is fairly straightforward.
Also notice the new `make molten-links` command.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
124: Build with panic=abort r=kvark a=jrmuizel
This drops the size of libportability.dylib from 2.4M to 2.1M and
gives the compiler better opportunities for optimization.
Co-authored-by: Jeff Muizelaar <jmuizelaar@mozilla.com>
123: Update gfx-rs and use GFX_METAL_RECORDING environment r=kvark a=kvark
For benchmarking dota, one can now use `make dota-bench-gfx GFX_METAL_RECORDING=deferred`
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
121: Descriptor iterator r=msiglreith a=kvark
This PR reduces the amount of magic going on during the descriptor writes, makes us move less stuff on the stack.
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
114: Handle unused depth stencil subpass attachments r=kvark a=msiglreith
Treating VK_UNUSED_ATTACHMENT case same way as passing NULL for the depth stencil attachment.
Co-authored-by: msiglreith <m.siglreith@gmail.com>
113: Robust descriptor release, safe handle access, more iterator usage r=msiglreith a=kvark
This is super important, has 3 parts:
- fixed and refined descriptor set allocation (now calling `free` on failure)
- added a check to `Handle` be valid on any access, this catches the Dota bug in all configurations and is hugely important for us to avoid undefined behavior in the future
- removes a few `Vec::collect()` occurrences in favor of iterators
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>