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>
110: Expose VK_KHR_maintenance1 and fix the descriptor allocation fall back r=msiglreith a=kvark
Depends on https://github.com/gfx-rs/gfx/pull/2202
cc @fkaa
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
108: fix overly conservative function pointer retrieval r=kvark a=msiglreith
Addresses some parts of https://github.com/gfx-rs/portability/pull/98
Current implementation rejects too agressively which is not required, in most cases the spec defines the returned pointers as undefined. InstanceProcAddr also doesn't correctly retrieve some device proc addresses.
CTS looks fine
(9 green, 3 unsupported, `dEQP-VK.api.device_init.create_instance_device_intentional_alloc_fail` crashes but seems unrelated)
cc @grovesNL
Co-authored-by: msiglreith <m.siglreith@gmail.com>
98: Map present modes and more r=kvark a=grovesNL
Present modes:
- Update to latest gfx
- Expose relevant present modes in `gfxGetPhysicalDeviceSurfacePresentModesKHR`
- Map present modes to HAL and back
Instance/device creation (with these changes we pass 10/13 of `dEQP-VK.api.device_init`, the other 3 are not supported for now):
- Handle null instance/device and whether required extensions (although the check is not comprehensive for now) have been enabled in `gfxGet{Instance|Device}ProcAddr` – this fixes `dEQP-VK.api.version_check.entry_points`
- Check API version to fix `dEQP-VK.api.device_init.create_instance_invalid_api_version`
- Verify that the provided instance/device extension names are valid – fixes a couple more tests in `dEQP-VK.api.device_init`
- Verify that the requested features are supported - fixes `dEQP-VK.api.device_init.create_device_unsupported_features`
Co-authored-by: Joshua Groves <josh@joshgroves.com>