mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-10-25 02:10:51 +00:00
Replaced per-view sequence counter with render item index. (#4013)
This commit is contained in:
committed by
GitHub
parent
8d4af17207
commit
e4c9e10ca9
14
src/bgfx.cpp
14
src/bgfx.cpp
@@ -1591,15 +1591,15 @@ namespace bgfx
|
||||
SortKey::Enum type;
|
||||
switch (s_ctx->m_view[_id].m_mode)
|
||||
{
|
||||
case ViewMode::Sequential: m_key.m_seq = s_ctx->getSeqIncr(_id); type = SortKey::SortSequence; break;
|
||||
case ViewMode::DepthAscending: m_key.m_depth = _depth; type = SortKey::SortDepth; break;
|
||||
case ViewMode::DepthDescending: m_key.m_depth = UINT32_MAX-_depth; type = SortKey::SortDepth; break;
|
||||
default: m_key.m_depth = _depth; type = SortKey::SortProgram; break;
|
||||
case ViewMode::Sequential: m_key.m_seq = renderItemIdx; type = SortKey::SortSequence; break;
|
||||
case ViewMode::DepthAscending: m_key.m_depth = _depth; type = SortKey::SortDepth; break;
|
||||
case ViewMode::DepthDescending: m_key.m_depth = UINT32_MAX-_depth; type = SortKey::SortDepth; break;
|
||||
default: m_key.m_depth = _depth; type = SortKey::SortProgram; break;
|
||||
}
|
||||
|
||||
uint64_t key = m_key.encodeDraw(type);
|
||||
|
||||
m_frame->m_sortKeys[renderItemIdx] = key;
|
||||
m_frame->m_sortKeys [renderItemIdx] = key;
|
||||
m_frame->m_sortValues[renderItemIdx] = RenderItemCount(renderItemIdx);
|
||||
|
||||
m_draw.m_uniformIdx = m_uniformIdx;
|
||||
@@ -1675,7 +1675,7 @@ namespace bgfx
|
||||
m_key.m_program = _handle;
|
||||
m_key.m_depth = 0;
|
||||
m_key.m_view = _id;
|
||||
m_key.m_seq = s_ctx->getSeqIncr(_id);
|
||||
m_key.m_seq = renderItemIdx;
|
||||
|
||||
uint64_t key = m_key.encodeCompute();
|
||||
m_frame->m_sortKeys[renderItemIdx] = key;
|
||||
@@ -2948,8 +2948,6 @@ namespace bgfx
|
||||
uint32_t nextFrameNum = m_render->m_frameNum + 1;
|
||||
m_submit->start(nextFrameNum);
|
||||
|
||||
bx::memSet(m_seq, 0, sizeof(m_seq) );
|
||||
|
||||
if (BX_ENABLED(BGFX_CONFIG_DEBUG_TEXT) )
|
||||
{
|
||||
m_submit->m_textVideoMem->resize(
|
||||
|
||||
@@ -1391,6 +1391,7 @@ namespace bgfx
|
||||
static constexpr uint64_t kSortKeyComputeProgramMask = uint64_t(BGFX_CONFIG_MAX_PROGRAMS-1)<<kSortKeyComputeProgramShift;
|
||||
|
||||
static_assert(BGFX_CONFIG_MAX_VIEWS <= (1<<kSortKeyViewNumBits) );
|
||||
static_assert(BGFX_CONFIG_MAX_DRAW_CALLS <= (1<<BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ), "BGFX_CONFIG_MAX_DRAW_CALLS must fit into BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ bits.");
|
||||
static_assert( (BGFX_CONFIG_MAX_PROGRAMS & (BGFX_CONFIG_MAX_PROGRAMS-1) ) == 0); // Must be power of 2.
|
||||
static_assert( (0 // Render key mask shouldn't overlap.
|
||||
| kSortKeyViewMask
|
||||
@@ -7801,11 +7802,6 @@ namespace bgfx
|
||||
|
||||
BGFX_API_FUNC(uint32_t frame(uint8_t _flags = BGFX_FRAME_NONE) );
|
||||
|
||||
uint32_t getSeqIncr(ViewId _id)
|
||||
{
|
||||
return bx::atomicFetchAndAdd<uint32_t>(&m_seq[_id], 1);
|
||||
}
|
||||
|
||||
void dumpViewStats();
|
||||
void freeDynamicBuffers();
|
||||
void freeAllHandles(Frame* _frame);
|
||||
@@ -8002,7 +7998,6 @@ namespace bgfx
|
||||
VertexLayoutRef m_vertexLayoutRef;
|
||||
|
||||
ViewId m_viewRemap[BGFX_CONFIG_MAX_VIEWS];
|
||||
uint32_t m_seq[BGFX_CONFIG_MAX_VIEWS];
|
||||
View m_view[BGFX_CONFIG_MAX_VIEWS];
|
||||
|
||||
UniformCache m_uniformCache;
|
||||
|
||||
@@ -370,7 +370,7 @@
|
||||
#endif // BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH
|
||||
|
||||
/// Number of bits used for sequence number in the sort key. Default is 20.
|
||||
/// Determines maximum draw calls per view in sequential mode (2^20 = ~1M).
|
||||
/// Determines maximum BGFX_CONFIG_MAX_DRAW_CALLS (2^20 = ~1M).
|
||||
#ifndef BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ
|
||||
# define BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ 20
|
||||
#endif // BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ
|
||||
|
||||
Reference in New Issue
Block a user