mirror of https://github.com/bkaradzic/bgfx
Fixed blit with view remapping.
This commit is contained in:
parent
2f2287aa34
commit
706facc788
|
@ -831,6 +831,11 @@ namespace bgfx
|
|||
return true; // compute
|
||||
}
|
||||
|
||||
static uint8_t decodeView(uint64_t _key)
|
||||
{
|
||||
return uint8_t( (_key & SORT_KEY_VIEW_MASK) >> SORT_KEY_VIEW_SHIFT);
|
||||
}
|
||||
|
||||
static uint64_t remapView(uint64_t _key, uint8_t _viewRemap[BGFX_CONFIG_MAX_VIEWS])
|
||||
{
|
||||
const uint8_t oldView = uint8_t( (_key & SORT_KEY_VIEW_MASK) >> SORT_KEY_VIEW_SHIFT);
|
||||
|
|
|
@ -5314,7 +5314,8 @@ BX_PRAGMA_DIAGNOSTIC_POP();
|
|||
int32_t numItems = _render->m_num;
|
||||
for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;)
|
||||
{
|
||||
const bool isCompute = key.decode(_render->m_sortKeys[item], _render->m_viewRemap);
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
statsKeyType[isCompute]++;
|
||||
|
||||
const bool viewChanged = 0
|
||||
|
@ -5428,7 +5429,8 @@ BX_PRAGMA_DIAGNOSTIC_POP();
|
|||
prim = s_primInfo[BX_COUNTOF(s_primName)]; // Force primitive type update after clear quad.
|
||||
}
|
||||
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= view; blitItem++)
|
||||
const uint8_t blitView = SortKey::decodeView(encodedKey);
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= blitView; blitItem++)
|
||||
{
|
||||
const BlitItem& blit = _render->m_blitItem[blitItem];
|
||||
blitKey.decode(_render->m_blitKeys[blitItem+1]);
|
||||
|
|
|
@ -4849,7 +4849,8 @@ data.NumQualityLevels = 0;
|
|||
int32_t numItems = _render->m_num;
|
||||
for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;)
|
||||
{
|
||||
const bool isCompute = key.decode(_render->m_sortKeys[item], _render->m_viewRemap);
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
statsKeyType[isCompute]++;
|
||||
|
||||
const bool viewChanged = 0
|
||||
|
@ -4907,7 +4908,8 @@ data.NumQualityLevels = 0;
|
|||
|
||||
prim = s_primInfo[BX_COUNTOF(s_primName)]; // Force primitive type update.
|
||||
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= view; blitItem++)
|
||||
const uint8_t blitView = SortKey::decodeView(encodedKey);
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= blitView; blitItem++)
|
||||
{
|
||||
const BlitItem& blit = _render->m_blitItem[blitItem];
|
||||
blitKey.decode(_render->m_blitKeys[blitItem+1]);
|
||||
|
|
|
@ -3636,7 +3636,8 @@ namespace bgfx { namespace d3d9
|
|||
{
|
||||
for (uint32_t item = 0, numItems = _render->m_num; item < numItems; ++item)
|
||||
{
|
||||
const bool isCompute = key.decode(_render->m_sortKeys[item], _render->m_viewRemap);
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
statsKeyType[isCompute]++;
|
||||
|
||||
if (isCompute)
|
||||
|
@ -3718,7 +3719,8 @@ namespace bgfx { namespace d3d9
|
|||
DX_CHECK(device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE) );
|
||||
DX_CHECK(device->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATER) );
|
||||
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= view; blitItem++)
|
||||
const uint8_t blitView = SortKey::decodeView(encodedKey);
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= blitView; blitItem++)
|
||||
{
|
||||
const BlitItem& blit = _render->m_blitItem[blitItem];
|
||||
blitKey.decode(_render->m_blitKeys[blitItem+1]);
|
||||
|
|
|
@ -6259,7 +6259,8 @@ namespace bgfx { namespace gl
|
|||
int32_t numItems = _render->m_num;
|
||||
for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;)
|
||||
{
|
||||
const bool isCompute = key.decode(_render->m_sortKeys[item], _render->m_viewRemap);
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
statsKeyType[isCompute]++;
|
||||
|
||||
const bool viewChanged = 0
|
||||
|
@ -6379,7 +6380,8 @@ namespace bgfx { namespace gl
|
|||
|
||||
if (m_blitSupported)
|
||||
{
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= view; blitItem++)
|
||||
const uint8_t blitView = SortKey::decodeView(encodedKey);
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= blitView; blitItem++)
|
||||
{
|
||||
const BlitItem& bi = _render->m_blitItem[blitItem];
|
||||
blitKey.decode(_render->m_blitKeys[blitItem + 1]);
|
||||
|
|
|
@ -2996,7 +2996,8 @@ namespace bgfx { namespace mtl
|
|||
int32_t numItems = _render->m_num;
|
||||
for (int32_t item = 0, restartItem = numItems; item < numItems || restartItem < numItems;)
|
||||
{
|
||||
const bool isCompute = key.decode(_render->m_sortKeys[item], _render->m_viewRemap);
|
||||
const uint64_t encodedKey = _render->m_sortKeys[item];
|
||||
const bool isCompute = key.decode(encodedKey, _render->m_viewRemap);
|
||||
statsKeyType[isCompute]++;
|
||||
|
||||
const bool viewChanged = 0
|
||||
|
@ -3047,8 +3048,8 @@ namespace bgfx { namespace mtl
|
|||
viewState.m_rect.m_width /= 2;
|
||||
}
|
||||
|
||||
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= view; blitItem++)
|
||||
const uint8_t blitView = SortKey::decodeView(encodedKey);
|
||||
for (; blitItem < numBlitItems && blitKey.m_view <= blitView; blitItem++)
|
||||
{
|
||||
if (0 != m_renderCommandEncoder)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue