<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/VideoCommon/TextureInfo.cpp, branch master</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>VideoCommon: Move TextureInfo getters to header</title>
<updated>2026-01-19T18:46:21+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-01-19T18:41:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=b07c78aabe4646a7329d279f999c6d136e055734'/>
<id>b07c78aabe4646a7329d279f999c6d136e055734</id>
<content type='text'>
This improves my PC's performance on RS2 Hoth by... 0.1% or so, which I
think is within the margin of error. But this change also cuts down on
boilerplate.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This improves my PC's performance on RS2 Hoth by... 0.1% or so, which I
think is within the margin of error. But this change also cuts down on
boilerplate.
</pre>
</div>
</content>
</entry>
<entry>
<title>VideoCommon: Don't create mipmap vector in TextureInfo</title>
<updated>2026-01-17T16:57:07+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-01-17T16:43:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=f7b4d2738be26b233510577bd4e972da298dc578'/>
<id>f7b4d2738be26b233510577bd4e972da298dc578</id>
<content type='text'>
The TextureInfo constructor creates a vector of MipLevels. This could be
good for performance if MipLevels are accessed very often for each
TextureInfo, but that's not the case. Dolphin creates thousands of
TextureInfos per second that it never accesses the mipmap levels of
because there's a hit in the texture cache, and in the uncommon case of
a texture cache miss, the mipmap levels only get looped through once.

To make the common case of texture cache hits as fast as possible, let's
not create a vector in the TextureInfo constructor. This commit
implements a custom iterator for MipLevels instead.

In my testing on the Death Star level of Rogue Squadron 2, this speeds
up TextureInfo::FromStage by 200%, giving an overall emulation speedup
of a bit over 1%. Results on the Hoth level are even better, with
TextureInfo::FromStage being close to 300% faster and overall emulation
being over 4% faster. (Single core, no GPU texture decoding.)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The TextureInfo constructor creates a vector of MipLevels. This could be
good for performance if MipLevels are accessed very often for each
TextureInfo, but that's not the case. Dolphin creates thousands of
TextureInfos per second that it never accesses the mipmap levels of
because there's a hit in the texture cache, and in the uncommon case of
a texture cache miss, the mipmap levels only get looped through once.

To make the common case of texture cache hits as fast as possible, let's
not create a vector in the TextureInfo constructor. This commit
implements a custom iterator for MipLevels instead.

In my testing on the Death Star level of Rogue Squadron 2, this speeds
up TextureInfo::FromStage by 200%, giving an overall emulation speedup
of a bit over 1%. Results on the Hoth level are even better, with
TextureInfo::FromStage being close to 300% faster and overall emulation
being over 4% faster. (Single core, no GPU texture decoding.)
</pre>
</div>
</content>
</entry>
<entry>
<title>GCC: Remedy NRVO Fails</title>
<updated>2025-03-10T19:38:03+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-12-13T22:02:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=433c6ce0f20e33379985a56b58540197feeeff59'/>
<id>433c6ce0f20e33379985a56b58540197feeeff59</id>
<content type='text'>
Using the `-Wnrvo` flag introduced by GCC 14, I identified a few places where NRVO was clearly intended, but is fumbled.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using the `-Wnrvo` flag introduced by GCC 14, I identified a few places where NRVO was clearly intended, but is fumbled.
</pre>
</div>
</content>
</entry>
<entry>
<title>VideoCommon: Use GetSpanForAddress safely in texture decoding</title>
<updated>2024-04-20T16:31:08+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2024-04-13T16:29:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=3cfa233b63dfcd734be2dd0ae4bd0d3e98109df6'/>
<id>3cfa233b63dfcd734be2dd0ae4bd0d3e98109df6</id>
<content type='text'>
Now only VertexLoader remains... But that one might be tricky.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now only VertexLoader remains... But that one might be tricky.
</pre>
</div>
</content>
</entry>
<entry>
<title>Memmap: Replace GetPointer with GetSpanForAddress</title>
<updated>2024-04-20T16:31:08+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2024-04-13T10:08:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=5c9bb80638ec05b32eaa129a8c763ac6bb3a5cb4'/>
<id>5c9bb80638ec05b32eaa129a8c763ac6bb3a5cb4</id>
<content type='text'>
To ensure memory safety, callers of GetPointer have to perform a bounds
check. But how is this bounds check supposed to be performed?
GetPointerForRange contained one implementation of a bounds check, but
it was cumbersome, and it also isn't obvious why it's correct.

To make doing the right thing easier, this commit changes GetPointer to
return a span that tells the caller how many bytes it's allowed to
access.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To ensure memory safety, callers of GetPointer have to perform a bounds
check. But how is this bounds check supposed to be performed?
GetPointerForRange contained one implementation of a bounds check, but
it was cumbersome, and it also isn't obvious why it's correct.

To make doing the right thing easier, this commit changes GetPointer to
return a span that tells the caller how many bytes it's allowed to
access.
</pre>
</div>
</content>
</entry>
<entry>
<title>Common/MathUtil: Move IntLog2 into MathUtil namespace</title>
<updated>2023-04-15T07:35:05+00:00</updated>
<author>
<name>Lioncash</name>
<email>mai.iam2048@gmail.com</email>
</author>
<published>2023-04-15T07:27:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=784a21692763296cbd93f59c4cf8a58c902b81e8'/>
<id>784a21692763296cbd93f59c4cf8a58c902b81e8</id>
<content type='text'>
Gets this out of the global namespace.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Gets this out of the global namespace.
</pre>
</div>
</content>
</entry>
<entry>
<title>HW/Memmap: Refactor Memory to class, move to Core::System.</title>
<updated>2022-12-03T12:27:02+00:00</updated>
<author>
<name>Admiral H. Curtiss</name>
<email>pikachu025@gmail.com</email>
</author>
<published>2022-12-02T19:07:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=839db591d9daa388c1b6eb944a9f34a9aa41c871'/>
<id>839db591d9daa388c1b6eb944a9f34a9aa41c871</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>TextureInfo: Reorder members in constructor</title>
<updated>2022-08-29T20:16:21+00:00</updated>
<author>
<name>Merry</name>
<email>git@mary.rs</email>
</author>
<published>2022-08-29T20:16:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=b0717607b2230034cfefc5940d2591d0ac7fbc64'/>
<id>b0717607b2230034cfefc5940d2591d0ac7fbc64</id>
<content type='text'>
m_stage is initialized last
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
m_stage is initialized last
</pre>
</div>
</content>
</entry>
<entry>
<title>VideoCommon: add support for setting and getting the stage from the texture info</title>
<updated>2022-06-26T05:45:13+00:00</updated>
<author>
<name>iwubcode</name>
<email>iwubcode@users.noreply.github.com</email>
</author>
<published>2022-03-05T20:52:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=7854afe512870b83baae0e11c42d62721e20a083'/>
<id>7854afe512870b83baae0e11c42d62721e20a083</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Eliminate SamplerCommon::AreBpTexMode0MipmapsEnabled</title>
<updated>2021-11-18T04:04:34+00:00</updated>
<author>
<name>Pokechu22</name>
<email>Pokechu022@gmail.com</email>
</author>
<published>2021-08-08T18:05:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=3096f77ba09fe3510a785e073602a8a829a02d9e'/>
<id>3096f77ba09fe3510a785e073602a8a829a02d9e</id>
<content type='text'>
This was added in 0b9a72a62d38481ff08f742b2318d07f29ff5dff but became irrelevant in 70f9fc4e7526fc9cfc008a43cd33229f62be99b6 as the check is now self-explanatory due to a rejiggering of the bitfields.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This was added in 0b9a72a62d38481ff08f742b2318d07f29ff5dff but became irrelevant in 70f9fc4e7526fc9cfc008a43cd33229f62be99b6 as the check is now self-explanatory due to a rejiggering of the bitfields.
</pre>
</div>
</content>
</entry>
</feed>
