<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Ryujinx/src/Ryujinx.Graphics.Gpu/Engine, branch master</title>
<subtitle>A backup of the Ryujinx master git branch.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/'/>
<entry>
<title>Replace passing by IMemoryOwner&lt;byte&gt; with passing by concrete MemoryOwner&lt;byte&gt; (#7171)</title>
<updated>2024-09-19T02:00:54+00:00</updated>
<author>
<name>jhorv</name>
<email>38920027+jhorv@users.noreply.github.com</email>
</author>
<published>2024-09-19T02:00:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=73f985d27ca0c85f053e8b9494ba83a6c4d3afbf'/>
<id>73f985d27ca0c85f053e8b9494ba83a6c4d3afbf</id>
<content type='text'>
* refactor(perf): pass MemoryOwner&lt;byte&gt; around as itself rather than IMemoryOwner&lt;byte&gt;

* fix(perf): get span via MemoryOwner&lt;byte&gt;.Span property instead of through Memory property

* fix: incorrect comment change</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* refactor(perf): pass MemoryOwner&lt;byte&gt; around as itself rather than IMemoryOwner&lt;byte&gt;

* fix(perf): get span via MemoryOwner&lt;byte&gt;.Span property instead of through Memory property

* fix: incorrect comment change</pre>
</div>
</content>
</entry>
<entry>
<title>Change image format view handling to allow view incompatible formats (#7311)</title>
<updated>2024-09-17T18:52:30+00:00</updated>
<author>
<name>gdkchan</name>
<email>gab.dark.100@gmail.com</email>
</author>
<published>2024-09-17T18:52:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=eb8132b627d3c0285dd199f4e40c6f3800bdb22d'/>
<id>eb8132b627d3c0285dd199f4e40c6f3800bdb22d</id>
<content type='text'>
* Allow creating texture aliases on texture pool

* Delete old image format override code

* New format incompatible alias

* Missing bounds check

* GetForBinding now takes FormatInfo

* Make FormatInfo struct more compact</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Allow creating texture aliases on texture pool

* Delete old image format override code

* New format incompatible alias

* Missing bounds check

* GetForBinding now takes FormatInfo

* Make FormatInfo struct more compact</pre>
</div>
</content>
</entry>
<entry>
<title>Implement fast DMA texture to texture copy (#7299)</title>
<updated>2024-09-15T21:12:05+00:00</updated>
<author>
<name>gdkchan</name>
<email>gab.dark.100@gmail.com</email>
</author>
<published>2024-09-15T21:12:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=cd74ae1bbd491987d983bfff36545451e2e6764c'/>
<id>cd74ae1bbd491987d983bfff36545451e2e6764c</id>
<content type='text'>
* Implement fast DMA texture to texture copy

* PR feedback</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Implement fast DMA texture to texture copy

* PR feedback</pre>
</div>
</content>
</entry>
<entry>
<title>Fix incorrect depth texture 3D flag (#7262)</title>
<updated>2024-09-01T20:58:01+00:00</updated>
<author>
<name>gdkchan</name>
<email>gab.dark.100@gmail.com</email>
</author>
<published>2024-09-01T20:58:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=fdd7ee791cd37546390856f38eab16ea78451742'/>
<id>fdd7ee791cd37546390856f38eab16ea78451742</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Make HLE project AOT friendly (#7085)</title>
<updated>2024-08-31T14:39:26+00:00</updated>
<author>
<name>Emmanuel Hansen</name>
<email>emmausssss@gmail.com</email>
</author>
<published>2024-08-31T14:39:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=2c5c0392f9ff80a3907bbf376a13f797ebbc12cc'/>
<id>2c5c0392f9ff80a3907bbf376a13f797ebbc12cc</id>
<content type='text'>
* add hle service generator

remove usage of reflection in device state

* remove rd.xml generation

* make applet manager reflection free

* fix typos

* fix encoding

* fix style report

* remove rogue generator reference

* remove double assignment</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* add hle service generator

remove usage of reflection in device state

* remove rd.xml generation

* make applet manager reflection free

* fix typos

* fix encoding

* fix style report

* remove rogue generator reference

* remove double assignment</pre>
</div>
</content>
</entry>
<entry>
<title>replace ByteMemoryPool usage in Ryujinx.Graphics (#7129)</title>
<updated>2024-08-03T18:50:53+00:00</updated>
<author>
<name>jhorv</name>
<email>38920027+jhorv@users.noreply.github.com</email>
</author>
<published>2024-08-03T18:50:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=59ddb26628fc2ab94f1c274a254c76b3e368f8b6'/>
<id>59ddb26628fc2ab94f1c274a254c76b3e368f8b6</id>
<content type='text'>
* chore: replace `ByteMemoryPool` usage with `MemoryOwner&lt;byte&gt;`

* refactor: `PixelConverter.ConvertR4G4ToR4G4B4A4()` - rename old `outputSpan` to `outputSpanUInt16`, reuse same output `Span&lt;byte&gt;` as newly-freed name `outputSpan`

* eliminate temporary buffer allocations

* chore, perf: use MemoryOwner&lt;byte&gt; instead of IMemoryOwner&lt;byte&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* chore: replace `ByteMemoryPool` usage with `MemoryOwner&lt;byte&gt;`

* refactor: `PixelConverter.ConvertR4G4ToR4G4B4A4()` - rename old `outputSpan` to `outputSpanUInt16`, reuse same output `Span&lt;byte&gt;` as newly-freed name `outputSpan`

* eliminate temporary buffer allocations

* chore, perf: use MemoryOwner&lt;byte&gt; instead of IMemoryOwner&lt;byte&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794)</title>
<updated>2024-05-19T19:53:37+00:00</updated>
<author>
<name>riperiperi</name>
<email>rhy3756547@hotmail.com</email>
</author>
<published>2024-05-19T19:53:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=eb1ce41b00e415fe84537bc872ddbf13996055d5'/>
<id>eb1ce41b00e415fe84537bc872ddbf13996055d5</id>
<content type='text'>
* GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings

Essentially retreading #4540, but it's on the GPU project now instead of the backend. This allows us to have a lot more control + knowledge of where the buffer backing has been changed and allows us to pre-emptively flush pages to host memory for quicker readback. It will allow us to do other stuff in the future, but we'll get there when we get there.

Performance greatly improved in Hyrule Warriors: Age of Calamity. Performance notably improved in TOTK (average). Performance for BOTW restored to how it was before #4911, perhaps a bit better.

- Rewrites a bunch of buffer migration stuff. Might want to tighten up how dispose stuff works.
- Fixed an issue where the copy for texture pre-flush would happen _after_ the syncpoint.

TODO: remove a page from pre-flush if it isn't flushed after a certain number of copies.

* Add copy deactivation

* Fix dependent virtual buffers

* Remove logging

* Fix format issues (maybe)

* Vulkan: Remove backing swap

* Add explicit memory access types for most buffers

* Fix typo

* Add device local force expiry, change buffer inheritance behaviour

* General cleanup, OGL fix

* BufferPreFlush comments

* BufferBackingState comments

* Add an extra precaution to BufferMigration

This is very unlikely, but it's important to cover loose ends like this.

* Address some feedback

* Docs</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings

Essentially retreading #4540, but it's on the GPU project now instead of the backend. This allows us to have a lot more control + knowledge of where the buffer backing has been changed and allows us to pre-emptively flush pages to host memory for quicker readback. It will allow us to do other stuff in the future, but we'll get there when we get there.

Performance greatly improved in Hyrule Warriors: Age of Calamity. Performance notably improved in TOTK (average). Performance for BOTW restored to how it was before #4911, perhaps a bit better.

- Rewrites a bunch of buffer migration stuff. Might want to tighten up how dispose stuff works.
- Fixed an issue where the copy for texture pre-flush would happen _after_ the syncpoint.

TODO: remove a page from pre-flush if it isn't flushed after a certain number of copies.

* Add copy deactivation

* Fix dependent virtual buffers

* Remove logging

* Fix format issues (maybe)

* Vulkan: Remove backing swap

* Add explicit memory access types for most buffers

* Fix typo

* Add device local force expiry, change buffer inheritance behaviour

* General cleanup, OGL fix

* BufferPreFlush comments

* BufferBackingState comments

* Add an extra precaution to BufferMigration

This is very unlikely, but it's important to cover loose ends like this.

* Address some feedback

* Docs</pre>
</div>
</content>
</entry>
<entry>
<title>Add support for bindless textures from shader input (vertex buffer) on Vulkan (#6577)</title>
<updated>2024-04-22T18:05:55+00:00</updated>
<author>
<name>gdkchan</name>
<email>gab.dark.100@gmail.com</email>
</author>
<published>2024-04-22T18:05:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=c6f8bfed904e30f7c5d890a2f0ef531eb9e298e5'/>
<id>c6f8bfed904e30f7c5d890a2f0ef531eb9e298e5</id>
<content type='text'>
* Add support for bindless textures from shader input (vertex buffer)

* Shader cache version bump

* Format whitespace

* Remove cache entries on pool removal, disable for OpenGL

* PR feedback</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Add support for bindless textures from shader input (vertex buffer)

* Shader cache version bump

* Format whitespace

* Remove cache entries on pool removal, disable for OpenGL

* PR feedback</pre>
</div>
</content>
</entry>
<entry>
<title>End render target lifetime on syncpoint increment (#6687)</title>
<updated>2024-04-21T01:35:20+00:00</updated>
<author>
<name>gdkchan</name>
<email>gab.dark.100@gmail.com</email>
</author>
<published>2024-04-21T01:35:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=7070cf6ae502b5c11551fceb164bc9f158ba980b'/>
<id>7070cf6ae502b5c11551fceb164bc9f158ba980b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Texture loading: reduce memory allocations (#6623)</title>
<updated>2024-04-14T20:06:14+00:00</updated>
<author>
<name>jhorv</name>
<email>38920027+jhorv@users.noreply.github.com</email>
</author>
<published>2024-04-14T20:06:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.benis.co.uk/Ryujinx/commit/?id=268c9aecf8e9181bb7114cf1dd826f00b2237714'/>
<id>268c9aecf8e9181bb7114cf1dd826f00b2237714</id>
<content type='text'>
* rebase

* add methods Ryyjinx.Common EmbeddedResources and SteamUtils

* GAL changes - change SetData() methods and ThreadedTexture commands to use IMemoryOwner&lt;byte&gt; instead of SpanOrArray&lt;byte&gt;

* Ryujinx.Graphics.Texture: change texture conversion methods to return IMemoryOwner&lt;byte&gt; and allocate from ByteMemoryPool

* Ryujinx.Graphics.OpenGL: update ITexture and Texture-like types with SetData() methods to take IMemoryOwner&lt;byte&gt; instead of SpanOrArray&lt;byte&gt;

* Ryujinx.Graphics.Vulkan: update ITexture and Texture-like types with SetData() methods to take IMemoryOwner&lt;byte&gt; instead of SpanOrArray&lt;byte&gt;

* Ryujinx.Graphics.Gpu: update ITexture and Texture-like types with SetData() methods to take IMemoryOwner&lt;byte&gt; instead of SpanOrArray&lt;byte&gt;

* Remove now-unused SpanOrArray&lt;T&gt;

* post-rebase cleanup

* PixelConverter: remove unsafe modifier on safe methods, and remove one unnecessary cast

* use ByteMemoryPool.Rent() in GetWritableRegion() impls

* fix formatting, rename `ReadRentedMemory()` to `ReadFileToRentedMemory()``

* Texture.ConvertToHostCompatibleFormat(): dispose of `result` in Astc decode branch</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* rebase

* add methods Ryyjinx.Common EmbeddedResources and SteamUtils

* GAL changes - change SetData() methods and ThreadedTexture commands to use IMemoryOwner&lt;byte&gt; instead of SpanOrArray&lt;byte&gt;

* Ryujinx.Graphics.Texture: change texture conversion methods to return IMemoryOwner&lt;byte&gt; and allocate from ByteMemoryPool

* Ryujinx.Graphics.OpenGL: update ITexture and Texture-like types with SetData() methods to take IMemoryOwner&lt;byte&gt; instead of SpanOrArray&lt;byte&gt;

* Ryujinx.Graphics.Vulkan: update ITexture and Texture-like types with SetData() methods to take IMemoryOwner&lt;byte&gt; instead of SpanOrArray&lt;byte&gt;

* Ryujinx.Graphics.Gpu: update ITexture and Texture-like types with SetData() methods to take IMemoryOwner&lt;byte&gt; instead of SpanOrArray&lt;byte&gt;

* Remove now-unused SpanOrArray&lt;T&gt;

* post-rebase cleanup

* PixelConverter: remove unsafe modifier on safe methods, and remove one unnecessary cast

* use ByteMemoryPool.Rent() in GetWritableRegion() impls

* fix formatting, rename `ReadRentedMemory()` to `ReadFileToRentedMemory()``

* Texture.ConvertToHostCompatibleFormat(): dispose of `result` in Astc decode branch</pre>
</div>
</content>
</entry>
</feed>
