mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-28 11:49:06 +00:00
GeometryShaderGen: Pack uniforms more tightly.
This commit is contained in:
parent
d115048615
commit
0ac7103391
4 changed files with 46 additions and 36 deletions
|
@ -15,8 +15,8 @@
|
|||
// track changes
|
||||
static bool s_projection_changed, s_viewport_changed, s_lineptwidth_changed;
|
||||
|
||||
static const float LINE_PT_TEX_OFFSETS[8] = {
|
||||
0.f, 0.0625f, 0.125f, 0.25f, 0.5f, 1.f, 1.f, 1.f
|
||||
static const int LINE_PT_TEX_OFFSETS[8] = {
|
||||
0, 16, 8, 4, 2, 1, 1, 1
|
||||
};
|
||||
|
||||
GeometryShaderConstants GeometryShaderManager::constants;
|
||||
|
@ -56,16 +56,16 @@ void GeometryShaderManager::SetConstants()
|
|||
{
|
||||
if (s_lineptwidth_changed)
|
||||
{
|
||||
constants.lineptwidth[0] = bpmem.lineptwidth.linesize / 6.f;
|
||||
constants.lineptwidth[1] = bpmem.lineptwidth.pointsize / 6.f;
|
||||
constants.lineptwidth[2] = LINE_PT_TEX_OFFSETS[bpmem.lineptwidth.lineoff];
|
||||
constants.lineptwidth[3] = LINE_PT_TEX_OFFSETS[bpmem.lineptwidth.pointoff];
|
||||
constants.lineptparams[2] = bpmem.lineptwidth.linesize / 6.f;
|
||||
constants.lineptparams[3] = bpmem.lineptwidth.pointsize / 6.f;
|
||||
constants.texoffset[2] = LINE_PT_TEX_OFFSETS[bpmem.lineptwidth.lineoff];
|
||||
constants.texoffset[3] = LINE_PT_TEX_OFFSETS[bpmem.lineptwidth.pointoff];
|
||||
}
|
||||
|
||||
if (s_viewport_changed)
|
||||
{
|
||||
constants.viewport[0] = 2.0f * xfmem.viewport.wd;
|
||||
constants.viewport[1] = -2.0f * xfmem.viewport.ht;
|
||||
constants.lineptparams[0] = 2.0f * xfmem.viewport.wd;
|
||||
constants.lineptparams[1] = -2.0f * xfmem.viewport.ht;
|
||||
}
|
||||
|
||||
if (s_projection_changed)
|
||||
|
@ -106,7 +106,11 @@ void GeometryShaderManager::SetLinePtWidthChanged()
|
|||
void GeometryShaderManager::SetTexCoordChanged(u8 texmapid)
|
||||
{
|
||||
TCoordInfo& tc = bpmem.texcoords[texmapid];
|
||||
constants.texoffsetflags[texmapid] = tc.s.line_offset + tc.s.point_offset * 2;
|
||||
int bitmask = 1 << texmapid;
|
||||
constants.texoffset[0] &= ~bitmask;
|
||||
constants.texoffset[0] |= tc.s.line_offset << texmapid;
|
||||
constants.texoffset[1] &= ~bitmask;
|
||||
constants.texoffset[1] |= tc.s.point_offset << texmapid;
|
||||
dirty = true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue