<feed xmlns='http://www.w3.org/2005/Atom'>
<title>yuzu/src/video_core/dma_pusher.cpp, branch main</title>
<subtitle>Nintendo Switch emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/'/>
<entry>
<title>video_core: Enforce safe memory reads for compute dispatch</title>
<updated>2025-05-11T11:17:03+00:00</updated>
<author>
<name>Zephyron</name>
<email>zephyron@citron-emu.org</email>
</author>
<published>2025-01-02T06:38:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=8830df1b9f10fccf16cc93d508cd276437bed5f7'/>
<id>8830df1b9f10fccf16cc93d508cd276437bed5f7</id>
<content type='text'>
- Modify DmaPusher to use safe memory reads when handling compute
  operations at High GPU accuracy
- Prevent potential memory corruption issues that could lead to
  invalid dispatch parameters
- Previously, unsafe reads could result in corrupted launch_description
  data in KeplerCompute::ProcessLaunch, causing invalid vkCmdDispatch
  calls
- By enforcing safe reads specifically for compute operations, we
  maintain performance for other GPU tasks while ensuring compute
  dispatch stability

This change requires &gt;= High GPU accuracy level to take effect.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Modify DmaPusher to use safe memory reads when handling compute
  operations at High GPU accuracy
- Prevent potential memory corruption issues that could lead to
  invalid dispatch parameters
- Previously, unsafe reads could result in corrupted launch_description
  data in KeplerCompute::ProcessLaunch, causing invalid vkCmdDispatch
  calls
- By enforcing safe reads specifically for compute operations, we
  maintain performance for other GPU tasks while ensuring compute
  dispatch stability

This change requires &gt;= High GPU accuracy level to take effect.
</pre>
</div>
</content>
</entry>
<entry>
<title>perf(VideoCore): Refactor DispatchIndirect</title>
<updated>2024-12-20T15:24:58+00:00</updated>
<author>
<name>EmulationEnjoyer</name>
<email>emulationenjoyer@noreply.localhost</email>
</author>
<published>2024-11-12T21:28:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=3f6fbc21a66843e84263a98a261dad883e7942c4'/>
<id>3f6fbc21a66843e84263a98a261dad883e7942c4</id>
<content type='text'>
- Added automatic safe or unsafe processing for better emulation accuracy.

ref: https://git.citron-emu.org/Citron/Citron/commit/8cae0310e3aece0135e8c8e82e5fbeb379560b78
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Added automatic safe or unsafe processing for better emulation accuracy.

ref: https://git.citron-emu.org/Citron/Citron/commit/8cae0310e3aece0135e8c8e82e5fbeb379560b78
</pre>
</div>
</content>
</entry>
<entry>
<title>dma_pusher.cpp: remove now unused variable that breaks the android build (#76)</title>
<updated>2024-12-20T15:24:58+00:00</updated>
<author>
<name>anon</name>
<email>anon@noreply.localhost</email>
</author>
<published>2024-11-03T12:34:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=f0ec85c514f649507ffce8adbba8988a460a542d'/>
<id>f0ec85c514f649507ffce8adbba8988a460a542d</id>
<content type='text'>
Completes http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/71

Discovered when building android version on debian via command line.

Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/76
Co-authored-by: anon &lt;anon@noreply.localhost&gt;
Co-committed-by: anon &lt;anon@noreply.localhost&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Completes http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/71

Discovered when building android version on debian via command line.

Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/76
Co-authored-by: anon &lt;anon@noreply.localhost&gt;
Co-committed-by: anon &lt;anon@noreply.localhost&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kepler_compute: use safe memory read</title>
<updated>2024-12-20T15:24:58+00:00</updated>
<author>
<name>cow</name>
<email>cow@vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion</email>
</author>
<published>2024-10-21T23:24:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=6179cc0588ca74671cacb4b5f633082f70836407'/>
<id>6179cc0588ca74671cacb4b5f633082f70836407</id>
<content type='text'>
If unsafe read is done there can sometimes be corrupt data in the
KeplerCompute::ProcessLaunch qmd structure.

Fixes GPU crashes in 'Princess Peach: Showtime!' when using vulkan
renderer. Requires using "Accuracy Level High" (crashes will still
happen if using "Normal").

Tested on Radeon 6750XT, Linux 6.11.2, Mesa 24.2.5 (RADV driver).

Unsafe read was introduced in 115792158d3ac4ca746d1775f2381e8f8dd18582
"VideoCore: Implement DispatchIndirect"

How did I debug this:
- Used VK_LAYER_KHRONOS_validation which found invalid vkCmdDispatch
  (along with a lot of other noise!)
- Instrumented all calls to vulkan Dispatch(), set breakpoint when
  grid_dim_x &gt; 1024 (an obviously invalid value). Found dispatch came
  from RasterizerVulkan::DispatchCompute().
- Commented out DispatchCompute() entirely, game runs with no crashes
  but some graphics effects are missing.
- Keep going one layer up, observe corrupted `launch_description` in
  KeplerCompute::ProcessLaunch()
- Attempted safe ReadBlock (`which = VideoCommon::CacheType::All`)
  instead of ReadBlockUnsafe in KeplerCompute::ProcessLaunch(), did not
  help
- Go one layer up to DmaPusher. Switch to safe_process(). No more
  corrupt `launch_description`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If unsafe read is done there can sometimes be corrupt data in the
KeplerCompute::ProcessLaunch qmd structure.

Fixes GPU crashes in 'Princess Peach: Showtime!' when using vulkan
renderer. Requires using "Accuracy Level High" (crashes will still
happen if using "Normal").

Tested on Radeon 6750XT, Linux 6.11.2, Mesa 24.2.5 (RADV driver).

Unsafe read was introduced in 115792158d3ac4ca746d1775f2381e8f8dd18582
"VideoCore: Implement DispatchIndirect"

How did I debug this:
- Used VK_LAYER_KHRONOS_validation which found invalid vkCmdDispatch
  (along with a lot of other noise!)
- Instrumented all calls to vulkan Dispatch(), set breakpoint when
  grid_dim_x &gt; 1024 (an obviously invalid value). Found dispatch came
  from RasterizerVulkan::DispatchCompute().
- Commented out DispatchCompute() entirely, game runs with no crashes
  but some graphics effects are missing.
- Keep going one layer up, observe corrupted `launch_description` in
  KeplerCompute::ProcessLaunch()
- Attempted safe ReadBlock (`which = VideoCommon::CacheType::All`)
  instead of ReadBlockUnsafe in KeplerCompute::ProcessLaunch(), did not
  help
- Go one layer up to DmaPusher. Switch to safe_process(). No more
  corrupt `launch_description`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Core: Clang format and other small issues.</title>
<updated>2024-01-19T02:12:30+00:00</updated>
<author>
<name>Fernando Sahmkow</name>
<email>fsahmkow27@gmail.com</email>
</author>
<published>2023-12-31T19:55:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=590d9b7e1d875e0403fb87cfcd4a8d52c50e2b81'/>
<id>590d9b7e1d875e0403fb87cfcd4a8d52c50e2b81</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>SMMU: Initial adaptation to video_core.</title>
<updated>2024-01-19T02:12:30+00:00</updated>
<author>
<name>Fernando Sahmkow</name>
<email>fsahmkow27@gmail.com</email>
</author>
<published>2023-12-25T06:32:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=0a2536a0df1f4aea406f2132d3edda0430acc9d1'/>
<id>0a2536a0df1f4aea406f2132d3edda0430acc9d1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>VideoCore: Implement DispatchIndirect</title>
<updated>2023-08-27T02:26:22+00:00</updated>
<author>
<name>Fernando Sahmkow</name>
<email>fsahmkow27@gmail.com</email>
</author>
<published>2023-08-27T00:58:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=115792158d3ac4ca746d1775f2381e8f8dd18582'/>
<id>115792158d3ac4ca746d1775f2381e8f8dd18582</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>DMA Pusher: Fix regression caused by guest memory optimizations</title>
<updated>2023-08-26T20:00:43+00:00</updated>
<author>
<name>Fernando Sahmkow</name>
<email>fsahmkow27@gmail.com</email>
</author>
<published>2023-08-26T20:00:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=8beda6a2bf4da0c9673a0532d8e80c9e5e534ced'/>
<id>8beda6a2bf4da0c9673a0532d8e80c9e5e534ced</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Use spans over guest memory where possible instead of copying data.</title>
<updated>2023-07-02T22:09:48+00:00</updated>
<author>
<name>Kelebek1</name>
<email>eeeedddccc@hotmail.co.uk</email>
</author>
<published>2023-05-28T23:35:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=6f7cb69c94bef0795f054d881e061745f69d1eda'/>
<id>6f7cb69c94bef0795f054d881e061745f69d1eda</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>DMAPusher: Improve collection of non executing methods</title>
<updated>2023-01-01T21:43:57+00:00</updated>
<author>
<name>Fernando Sahmkow</name>
<email>fsahmkow27@gmail.com</email>
</author>
<published>2022-11-26T23:58:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/yuzu/commit/?id=cb1497d0d7711a1c0e527aaa3e1dc3f95e5a6644'/>
<id>cb1497d0d7711a1c0e527aaa3e1dc3f95e5a6644</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
