Salman Alshamrani

Results 103 issues of Salman Alshamrani

Since #5508 was merged, mipmap generation has regressed on Vulkan, and the likely culprit for breaking it here is the hacky use of `CopyTexture` on the rendering command list, as...

priority:1
area:renderer-veldrid

As part of making sense of sRGB colours. It should be explicitly shown whether `SRGBColour` is going to give a linear or sRGB colour, by getting rid of the implicit...

type:code-quality
area:graphics

Been hanging on my list for a good while now. Have been testing with iOS simulator as I don't have the required accessory to connect a mouse to my phone....

area:input
platform:iOS
size/S

Direct3D allows binding the same texture as both an SRV and UAV resource as long as the mipmap ranges differ between the two.

Xcode has been yelling about this for a while now but I haven't realised how bad the overhead is until I've profiled it myself. This PR reduces down all encoding...

- [ ] Depends on #497 for `MTLFramebuffer`/`MTLSwapchainFramebuffer` refactor Metal offers a [specific optimised storage mode](https://developer.apple.com/documentation/metal/mtlstoragemode/memoryless) on Apple GPUs for framebuffer attachments that are only used within a render pass...

This becomes very apparent when updating buffers without using blit commands, where 99% of the overhead comes from retrieving the pointer using `MTLBuffer.contents()`. Before: ![CleanShot 2023-04-15 at 12 50 52](https://user-images.githubusercontent.com/22781491/232206792-d2a225b2-97eb-4ca6-a6e3-7af26fd708bc.png)...

["Private" storage mode](https://developer.apple.com/documentation/metal/mtlresourceoptions/1515324-storagemodeprivate) is better suited for buffers that are never accessed by the CPU, allowing Metal to apply optimisations on them. This would benefit any non-staging/non-dynamic buffers populated only...

Oversight from #439 Before: ![CleanShot 2023-04-15 at 12 17 43](https://user-images.githubusercontent.com/22781491/232204492-cadeb995-fba7-4aed-9caf-c0238bfc0a01.png) (notice `BlendAttachmentDescription.Equals` at the very top with high memory footprint) After: ![CleanShot 2023-04-15 at 12 17 45](https://user-images.githubusercontent.com/22781491/232204529-b4eb3f4c-e0c9-48e4-9ad3-c082aa9ce251.png)

A `GraphicsPipeline` in Veldrid translates to four states in Metal (`MTLRenderPipelineState`, `MTLComputePipelineState`, `MTLDepthStencilState`, and `ThreadsPerThreadgroup`). Multiple pipelines may be compiled to change certain states while keeping others as-is, this aims...