mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-17 20:52:36 +01:00
SortKey: Replacing macros with constexpr.
This commit is contained in:
28
src/bgfx.cpp
28
src/bgfx.cpp
@@ -1515,30 +1515,30 @@ namespace bgfx
|
||||
|
||||
BX_TRACE("");
|
||||
BX_TRACE("Sort key masks:");
|
||||
BX_TRACE("\t View %016" PRIx64, SORT_KEY_VIEW_MASK);
|
||||
BX_TRACE("\t Draw bit %016" PRIx64, SORT_KEY_DRAW_BIT);
|
||||
BX_TRACE("\t View %016" PRIx64, kSortKeyViewMask);
|
||||
BX_TRACE("\t Draw bit %016" PRIx64, kSortKeyDrawBit);
|
||||
|
||||
BX_TRACE("");
|
||||
BX_TRACE("\tD Type %016" PRIx64, SORT_KEY_DRAW_TYPE_MASK);
|
||||
BX_TRACE("\tD Type %016" PRIx64, kSortKeyDrawTypeMask);
|
||||
|
||||
BX_TRACE("");
|
||||
BX_TRACE("\tD0 Trans %016" PRIx64, SORT_KEY_DRAW_0_TRANS_MASK);
|
||||
BX_TRACE("\tD0 Program %016" PRIx64, SORT_KEY_DRAW_0_PROGRAM_MASK);
|
||||
BX_TRACE("\tD0 Depth %016" PRIx64, SORT_KEY_DRAW_0_DEPTH_MASK);
|
||||
BX_TRACE("\tD0 Trans %016" PRIx64, kSortKeyDraw0TransMask);
|
||||
BX_TRACE("\tD0 Program %016" PRIx64, kSortKeyDraw0ProgramMask);
|
||||
BX_TRACE("\tD0 Depth %016" PRIx64, kSortKeyDraw0DepthMask);
|
||||
|
||||
BX_TRACE("");
|
||||
BX_TRACE("\tD1 Depth %016" PRIx64, SORT_KEY_DRAW_1_DEPTH_MASK);
|
||||
BX_TRACE("\tD1 Trans %016" PRIx64, SORT_KEY_DRAW_1_TRANS_MASK);
|
||||
BX_TRACE("\tD1 Program %016" PRIx64, SORT_KEY_DRAW_1_PROGRAM_MASK);
|
||||
BX_TRACE("\tD1 Depth %016" PRIx64, kSortKeyDraw1DepthMask);
|
||||
BX_TRACE("\tD1 Trans %016" PRIx64, kSortKeyDraw1TransMask);
|
||||
BX_TRACE("\tD1 Program %016" PRIx64, kSortKeyDraw1ProgramMask);
|
||||
|
||||
BX_TRACE("");
|
||||
BX_TRACE("\tD2 Seq %016" PRIx64, SORT_KEY_DRAW_2_SEQ_MASK);
|
||||
BX_TRACE("\tD2 Trans %016" PRIx64, SORT_KEY_DRAW_2_TRANS_MASK);
|
||||
BX_TRACE("\tD2 Program %016" PRIx64, SORT_KEY_DRAW_2_PROGRAM_MASK);
|
||||
BX_TRACE("\tD2 Seq %016" PRIx64, kSortKeyDraw2SeqMask);
|
||||
BX_TRACE("\tD2 Trans %016" PRIx64, kSortKeyDraw2TransMask);
|
||||
BX_TRACE("\tD2 Program %016" PRIx64, kSortKeyDraw2ProgramMask);
|
||||
|
||||
BX_TRACE("");
|
||||
BX_TRACE("\t C Seq %016" PRIx64, SORT_KEY_COMPUTE_SEQ_MASK);
|
||||
BX_TRACE("\t C Program %016" PRIx64, SORT_KEY_COMPUTE_PROGRAM_MASK);
|
||||
BX_TRACE("\t C Seq %016" PRIx64, kSortKeyComputeSeqMask);
|
||||
BX_TRACE("\t C Program %016" PRIx64, kSortKeyComputeProgramMask);
|
||||
|
||||
BX_TRACE("");
|
||||
BX_TRACE("Supported capabilities (renderer %s, vendor 0x%04x, device 0x%04x):"
|
||||
|
||||
224
src/bgfx_p.h
224
src/bgfx_p.h
@@ -887,120 +887,118 @@ namespace bgfx
|
||||
};
|
||||
|
||||
//
|
||||
#define SORT_KEY_NUM_BITS_VIEW 10
|
||||
constexpr uint8_t kSortKeyViewNumBits = 10;
|
||||
constexpr uint8_t kSortKeyViewBitShift = 64-kSortKeyViewNumBits;
|
||||
constexpr uint64_t kSortKeyViewMask = uint64_t(BGFX_CONFIG_MAX_VIEWS-1)<<kSortKeyViewBitShift;
|
||||
|
||||
#define SORT_KEY_VIEW_SHIFT (64-SORT_KEY_NUM_BITS_VIEW)
|
||||
#define SORT_KEY_VIEW_MASK ( (uint64_t(BGFX_CONFIG_MAX_VIEWS-1) )<<SORT_KEY_VIEW_SHIFT)
|
||||
|
||||
#define SORT_KEY_DRAW_BIT_SHIFT (SORT_KEY_VIEW_SHIFT - 1)
|
||||
#define SORT_KEY_DRAW_BIT (UINT64_C(1)<<SORT_KEY_DRAW_BIT_SHIFT)
|
||||
constexpr uint8_t kSortKeyDrawBitShift = kSortKeyViewBitShift - 1;
|
||||
constexpr uint64_t kSortKeyDrawBit = uint64_t(1)<<kSortKeyDrawBitShift;
|
||||
|
||||
//
|
||||
#define SORT_KEY_NUM_BITS_DRAW_TYPE 2
|
||||
constexpr uint8_t kSortKeyDrawTypeNumBits = 2;
|
||||
constexpr uint8_t kSortKeyDrawTypeBitShift = kSortKeyDrawBitShift - kSortKeyDrawTypeNumBits;
|
||||
constexpr uint64_t kSortKeyDrawTypeMask = uint64_t(3)<<kSortKeyDrawTypeBitShift;
|
||||
|
||||
#define SORT_KEY_DRAW_TYPE_BIT_SHIFT (SORT_KEY_DRAW_BIT_SHIFT - SORT_KEY_NUM_BITS_DRAW_TYPE)
|
||||
#define SORT_KEY_DRAW_TYPE_MASK (UINT64_C(3)<<SORT_KEY_DRAW_TYPE_BIT_SHIFT)
|
||||
|
||||
#define SORT_KEY_DRAW_TYPE_PROGRAM (UINT64_C(0)<<SORT_KEY_DRAW_TYPE_BIT_SHIFT)
|
||||
#define SORT_KEY_DRAW_TYPE_DEPTH (UINT64_C(1)<<SORT_KEY_DRAW_TYPE_BIT_SHIFT)
|
||||
#define SORT_KEY_DRAW_TYPE_SEQUENCE (UINT64_C(2)<<SORT_KEY_DRAW_TYPE_BIT_SHIFT)
|
||||
constexpr uint64_t kSortKeyDrawTypeProgram = uint64_t(0)<<kSortKeyDrawTypeBitShift;
|
||||
constexpr uint64_t kSortKeyDrawTypeDepth = uint64_t(1)<<kSortKeyDrawTypeBitShift;
|
||||
constexpr uint64_t kSortKeyDrawTypeSequence = uint64_t(2)<<kSortKeyDrawTypeBitShift;
|
||||
|
||||
//
|
||||
#define SORT_KEY_NUM_BITS_TRANS 2
|
||||
constexpr uint8_t kSortKeyTransNumBits = 2;
|
||||
|
||||
#define SORT_KEY_DRAW_0_TRANS_SHIFT (SORT_KEY_DRAW_TYPE_BIT_SHIFT - SORT_KEY_NUM_BITS_TRANS)
|
||||
#define SORT_KEY_DRAW_0_TRANS_MASK (UINT64_C(0x3)<<SORT_KEY_DRAW_0_TRANS_SHIFT)
|
||||
constexpr uint8_t kSortKeyDraw0TransShift = kSortKeyDrawTypeBitShift - kSortKeyTransNumBits;
|
||||
constexpr uint64_t kSortKeyDraw0TransMask = uint64_t(0x3)<<kSortKeyDraw0TransShift;
|
||||
|
||||
#define SORT_KEY_DRAW_0_PROGRAM_SHIFT (SORT_KEY_DRAW_0_TRANS_SHIFT - BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM)
|
||||
#define SORT_KEY_DRAW_0_PROGRAM_MASK ( (uint64_t(BGFX_CONFIG_MAX_PROGRAMS-1) )<<SORT_KEY_DRAW_0_PROGRAM_SHIFT)
|
||||
constexpr uint8_t kSortKeyDraw0ProgramShift = kSortKeyDraw0TransShift - BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM;
|
||||
constexpr uint64_t kSortKeyDraw0ProgramMask = uint64_t(BGFX_CONFIG_MAX_PROGRAMS-1)<<kSortKeyDraw0ProgramShift;
|
||||
|
||||
#define SORT_KEY_DRAW_0_DEPTH_SHIFT (SORT_KEY_DRAW_0_PROGRAM_SHIFT - BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH)
|
||||
#define SORT_KEY_DRAW_0_DEPTH_MASK ( ( (UINT64_C(1)<<BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH)-1)<<SORT_KEY_DRAW_0_DEPTH_SHIFT)
|
||||
constexpr uint8_t kSortKeyDraw0DepthShift = kSortKeyDraw0ProgramShift - BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH;
|
||||
constexpr uint64_t kSortKeyDraw0DepthMask = ( (uint64_t(1)<<BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH)-1)<<kSortKeyDraw0DepthShift;
|
||||
|
||||
//
|
||||
#define SORT_KEY_DRAW_1_DEPTH_SHIFT (SORT_KEY_DRAW_TYPE_BIT_SHIFT - BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH)
|
||||
#define SORT_KEY_DRAW_1_DEPTH_MASK ( ( (UINT64_C(1)<<BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH)-1)<<SORT_KEY_DRAW_1_DEPTH_SHIFT)
|
||||
constexpr uint8_t kSortKeyDraw1DepthShift = kSortKeyDrawTypeBitShift - BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH;
|
||||
constexpr uint64_t kSortKeyDraw1DepthMask = ( (uint64_t(1)<<BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH)-1)<<kSortKeyDraw1DepthShift;
|
||||
|
||||
#define SORT_KEY_DRAW_1_TRANS_SHIFT (SORT_KEY_DRAW_1_DEPTH_SHIFT - SORT_KEY_NUM_BITS_TRANS)
|
||||
#define SORT_KEY_DRAW_1_TRANS_MASK (UINT64_C(0x3)<<SORT_KEY_DRAW_1_TRANS_SHIFT)
|
||||
constexpr uint8_t kSortKeyDraw1TransShift = kSortKeyDraw1DepthShift - kSortKeyTransNumBits;
|
||||
constexpr uint64_t kSortKeyDraw1TransMask = uint64_t(0x3)<<kSortKeyDraw1TransShift;
|
||||
|
||||
#define SORT_KEY_DRAW_1_PROGRAM_SHIFT (SORT_KEY_DRAW_1_TRANS_SHIFT - BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM)
|
||||
#define SORT_KEY_DRAW_1_PROGRAM_MASK ( (uint64_t(BGFX_CONFIG_MAX_PROGRAMS-1) )<<SORT_KEY_DRAW_1_PROGRAM_SHIFT)
|
||||
constexpr uint8_t kSortKeyDraw1ProgramShift = kSortKeyDraw1TransShift - BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM;
|
||||
constexpr uint64_t kSortKeyDraw1ProgramMask = uint64_t(BGFX_CONFIG_MAX_PROGRAMS-1)<<kSortKeyDraw1ProgramShift;
|
||||
|
||||
//
|
||||
#define SORT_KEY_DRAW_2_SEQ_SHIFT (SORT_KEY_DRAW_TYPE_BIT_SHIFT - BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ)
|
||||
#define SORT_KEY_DRAW_2_SEQ_MASK ( ( (UINT64_C(1)<<BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ)-1)<<SORT_KEY_DRAW_2_SEQ_SHIFT)
|
||||
constexpr uint8_t kSortKeyDraw2SeqShift = kSortKeyDrawTypeBitShift - BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ;
|
||||
constexpr uint64_t kSortKeyDraw2SeqMask = ( (uint64_t(1)<<BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ)-1)<<kSortKeyDraw2SeqShift;
|
||||
|
||||
#define SORT_KEY_DRAW_2_TRANS_SHIFT (SORT_KEY_DRAW_2_SEQ_SHIFT - SORT_KEY_NUM_BITS_TRANS)
|
||||
#define SORT_KEY_DRAW_2_TRANS_MASK (UINT64_C(0x3)<<SORT_KEY_DRAW_2_TRANS_SHIFT)
|
||||
constexpr uint8_t kSortKeyDraw2TransShift = kSortKeyDraw2SeqShift - kSortKeyTransNumBits;
|
||||
constexpr uint64_t kSortKeyDraw2TransMask = uint64_t(0x3)<<kSortKeyDraw2TransShift;
|
||||
|
||||
#define SORT_KEY_DRAW_2_PROGRAM_SHIFT (SORT_KEY_DRAW_2_TRANS_SHIFT - BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM)
|
||||
#define SORT_KEY_DRAW_2_PROGRAM_MASK ( (uint64_t(BGFX_CONFIG_MAX_PROGRAMS-1) )<<SORT_KEY_DRAW_2_PROGRAM_SHIFT)
|
||||
constexpr uint8_t kSortKeyDraw2ProgramShift = kSortKeyDraw2TransShift - BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM;
|
||||
constexpr uint64_t kSortKeyDraw2ProgramMask = uint64_t(BGFX_CONFIG_MAX_PROGRAMS-1)<<kSortKeyDraw2ProgramShift;
|
||||
|
||||
//
|
||||
#define SORT_KEY_COMPUTE_SEQ_SHIFT (SORT_KEY_DRAW_BIT_SHIFT - BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ)
|
||||
#define SORT_KEY_COMPUTE_SEQ_MASK ( ( (UINT64_C(1)<<BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ)-1)<<SORT_KEY_COMPUTE_SEQ_SHIFT)
|
||||
constexpr uint8_t kSortKeyComputeSeqShift = kSortKeyDrawBitShift - BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ;
|
||||
constexpr uint64_t kSortKeyComputeSeqMask = ( (uint64_t(1)<<BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ)-1)<<kSortKeyComputeSeqShift;
|
||||
|
||||
#define SORT_KEY_COMPUTE_PROGRAM_SHIFT (SORT_KEY_COMPUTE_SEQ_SHIFT - BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM)
|
||||
#define SORT_KEY_COMPUTE_PROGRAM_MASK ( (uint64_t(BGFX_CONFIG_MAX_PROGRAMS-1) )<<SORT_KEY_COMPUTE_PROGRAM_SHIFT)
|
||||
constexpr uint8_t kSortKeyComputeProgramShift = kSortKeyComputeSeqShift - BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM;
|
||||
constexpr uint64_t kSortKeyComputeProgramMask = uint64_t(BGFX_CONFIG_MAX_PROGRAMS-1)<<kSortKeyComputeProgramShift;
|
||||
|
||||
BX_STATIC_ASSERT(BGFX_CONFIG_MAX_VIEWS <= (1<<SORT_KEY_NUM_BITS_VIEW) );
|
||||
BX_STATIC_ASSERT(BGFX_CONFIG_MAX_VIEWS <= (1<<kSortKeyViewNumBits) );
|
||||
BX_STATIC_ASSERT( (BGFX_CONFIG_MAX_PROGRAMS & (BGFX_CONFIG_MAX_PROGRAMS-1) ) == 0); // Must be power of 2.
|
||||
BX_STATIC_ASSERT( (0 // Render key mask shouldn't overlap.
|
||||
| SORT_KEY_VIEW_MASK
|
||||
| SORT_KEY_DRAW_BIT
|
||||
| SORT_KEY_DRAW_TYPE_MASK
|
||||
| SORT_KEY_DRAW_0_TRANS_MASK
|
||||
| SORT_KEY_DRAW_0_PROGRAM_MASK
|
||||
| SORT_KEY_DRAW_0_DEPTH_MASK
|
||||
| kSortKeyViewMask
|
||||
| kSortKeyDrawBit
|
||||
| kSortKeyDrawTypeMask
|
||||
| kSortKeyDraw0TransMask
|
||||
| kSortKeyDraw0ProgramMask
|
||||
| kSortKeyDraw0DepthMask
|
||||
) == (0
|
||||
^ SORT_KEY_VIEW_MASK
|
||||
^ SORT_KEY_DRAW_BIT
|
||||
^ SORT_KEY_DRAW_TYPE_MASK
|
||||
^ SORT_KEY_DRAW_0_TRANS_MASK
|
||||
^ SORT_KEY_DRAW_0_PROGRAM_MASK
|
||||
^ SORT_KEY_DRAW_0_DEPTH_MASK
|
||||
^ kSortKeyViewMask
|
||||
^ kSortKeyDrawBit
|
||||
^ kSortKeyDrawTypeMask
|
||||
^ kSortKeyDraw0TransMask
|
||||
^ kSortKeyDraw0ProgramMask
|
||||
^ kSortKeyDraw0DepthMask
|
||||
) );
|
||||
BX_STATIC_ASSERT( (0 // Render key mask shouldn't overlap.
|
||||
| SORT_KEY_VIEW_MASK
|
||||
| SORT_KEY_DRAW_BIT
|
||||
| SORT_KEY_DRAW_TYPE_MASK
|
||||
| SORT_KEY_DRAW_1_DEPTH_MASK
|
||||
| SORT_KEY_DRAW_1_TRANS_MASK
|
||||
| SORT_KEY_DRAW_1_PROGRAM_MASK
|
||||
| kSortKeyViewMask
|
||||
| kSortKeyDrawBit
|
||||
| kSortKeyDrawTypeMask
|
||||
| kSortKeyDraw1DepthMask
|
||||
| kSortKeyDraw1TransMask
|
||||
| kSortKeyDraw1ProgramMask
|
||||
) == (0
|
||||
^ SORT_KEY_VIEW_MASK
|
||||
^ SORT_KEY_DRAW_BIT
|
||||
^ SORT_KEY_DRAW_TYPE_MASK
|
||||
^ SORT_KEY_DRAW_1_DEPTH_MASK
|
||||
^ SORT_KEY_DRAW_1_TRANS_MASK
|
||||
^ SORT_KEY_DRAW_1_PROGRAM_MASK
|
||||
^ kSortKeyViewMask
|
||||
^ kSortKeyDrawBit
|
||||
^ kSortKeyDrawTypeMask
|
||||
^ kSortKeyDraw1DepthMask
|
||||
^ kSortKeyDraw1TransMask
|
||||
^ kSortKeyDraw1ProgramMask
|
||||
) );
|
||||
BX_STATIC_ASSERT( (0 // Render key mask shouldn't overlap.
|
||||
| SORT_KEY_VIEW_MASK
|
||||
| SORT_KEY_DRAW_BIT
|
||||
| SORT_KEY_DRAW_TYPE_MASK
|
||||
| SORT_KEY_DRAW_2_SEQ_MASK
|
||||
| SORT_KEY_DRAW_2_TRANS_MASK
|
||||
| SORT_KEY_DRAW_2_PROGRAM_MASK
|
||||
| kSortKeyViewMask
|
||||
| kSortKeyDrawBit
|
||||
| kSortKeyDrawTypeMask
|
||||
| kSortKeyDraw2SeqMask
|
||||
| kSortKeyDraw2TransMask
|
||||
| kSortKeyDraw2ProgramMask
|
||||
) == (0
|
||||
^ SORT_KEY_VIEW_MASK
|
||||
^ SORT_KEY_DRAW_BIT
|
||||
^ SORT_KEY_DRAW_TYPE_MASK
|
||||
^ SORT_KEY_DRAW_2_SEQ_MASK
|
||||
^ SORT_KEY_DRAW_2_TRANS_MASK
|
||||
^ SORT_KEY_DRAW_2_PROGRAM_MASK
|
||||
^ kSortKeyViewMask
|
||||
^ kSortKeyDrawBit
|
||||
^ kSortKeyDrawTypeMask
|
||||
^ kSortKeyDraw2SeqMask
|
||||
^ kSortKeyDraw2TransMask
|
||||
^ kSortKeyDraw2ProgramMask
|
||||
) );
|
||||
BX_STATIC_ASSERT( (0 // Compute key mask shouldn't overlap.
|
||||
| SORT_KEY_VIEW_MASK
|
||||
| SORT_KEY_DRAW_BIT
|
||||
| SORT_KEY_COMPUTE_SEQ_SHIFT
|
||||
| SORT_KEY_COMPUTE_PROGRAM_MASK
|
||||
| kSortKeyViewMask
|
||||
| kSortKeyDrawBit
|
||||
| kSortKeyComputeSeqShift
|
||||
| kSortKeyComputeProgramMask
|
||||
) == (0
|
||||
^ SORT_KEY_VIEW_MASK
|
||||
^ SORT_KEY_DRAW_BIT
|
||||
^ SORT_KEY_COMPUTE_SEQ_SHIFT
|
||||
^ SORT_KEY_COMPUTE_PROGRAM_MASK
|
||||
^ kSortKeyViewMask
|
||||
^ kSortKeyDrawBit
|
||||
^ kSortKeyComputeSeqShift
|
||||
^ kSortKeyComputeProgramMask
|
||||
) );
|
||||
|
||||
// | 3 2 1 0|
|
||||
@@ -1051,11 +1049,11 @@ namespace bgfx
|
||||
{
|
||||
case SortProgram:
|
||||
{
|
||||
const uint64_t depth = (uint64_t(m_depth ) << SORT_KEY_DRAW_0_DEPTH_SHIFT ) & SORT_KEY_DRAW_0_DEPTH_MASK;
|
||||
const uint64_t program = (uint64_t(m_program.idx) << SORT_KEY_DRAW_0_PROGRAM_SHIFT) & SORT_KEY_DRAW_0_PROGRAM_MASK;
|
||||
const uint64_t trans = (uint64_t(m_trans ) << SORT_KEY_DRAW_0_TRANS_SHIFT ) & SORT_KEY_DRAW_0_TRANS_MASK;
|
||||
const uint64_t view = (uint64_t(m_view ) << SORT_KEY_VIEW_SHIFT ) & SORT_KEY_VIEW_MASK;
|
||||
const uint64_t key = view|SORT_KEY_DRAW_BIT|SORT_KEY_DRAW_TYPE_PROGRAM|trans|program|depth;
|
||||
const uint64_t depth = (uint64_t(m_depth ) << kSortKeyDraw0DepthShift ) & kSortKeyDraw0DepthMask;
|
||||
const uint64_t program = (uint64_t(m_program.idx) << kSortKeyDraw0ProgramShift) & kSortKeyDraw0ProgramMask;
|
||||
const uint64_t trans = (uint64_t(m_trans ) << kSortKeyDraw0TransShift ) & kSortKeyDraw0TransMask;
|
||||
const uint64_t view = (uint64_t(m_view ) << kSortKeyViewBitShift ) & kSortKeyViewMask;
|
||||
const uint64_t key = view|kSortKeyDrawBit|kSortKeyDrawTypeProgram|trans|program|depth;
|
||||
|
||||
return key;
|
||||
}
|
||||
@@ -1063,24 +1061,24 @@ namespace bgfx
|
||||
|
||||
case SortDepth:
|
||||
{
|
||||
const uint64_t depth = (uint64_t(m_depth ) << SORT_KEY_DRAW_1_DEPTH_SHIFT ) & SORT_KEY_DRAW_1_DEPTH_MASK;
|
||||
const uint64_t program = (uint64_t(m_program.idx) << SORT_KEY_DRAW_1_PROGRAM_SHIFT) & SORT_KEY_DRAW_1_PROGRAM_MASK;
|
||||
const uint64_t trans = (uint64_t(m_trans ) << SORT_KEY_DRAW_1_TRANS_SHIFT ) & SORT_KEY_DRAW_1_TRANS_MASK;
|
||||
const uint64_t view = (uint64_t(m_view ) << SORT_KEY_VIEW_SHIFT ) & SORT_KEY_VIEW_MASK;
|
||||
const uint64_t key = view|SORT_KEY_DRAW_BIT|SORT_KEY_DRAW_TYPE_DEPTH|depth|trans|program;
|
||||
const uint64_t depth = (uint64_t(m_depth ) << kSortKeyDraw1DepthShift ) & kSortKeyDraw1DepthMask;
|
||||
const uint64_t program = (uint64_t(m_program.idx) << kSortKeyDraw1ProgramShift) & kSortKeyDraw1ProgramMask;
|
||||
const uint64_t trans = (uint64_t(m_trans ) << kSortKeyDraw1TransShift) & kSortKeyDraw1TransMask;
|
||||
const uint64_t view = (uint64_t(m_view ) << kSortKeyViewBitShift ) & kSortKeyViewMask;
|
||||
const uint64_t key = view|kSortKeyDrawBit|kSortKeyDrawTypeDepth|depth|trans|program;
|
||||
return key;
|
||||
}
|
||||
break;
|
||||
|
||||
case SortSequence:
|
||||
{
|
||||
const uint64_t seq = (uint64_t(m_seq ) << SORT_KEY_DRAW_2_SEQ_SHIFT ) & SORT_KEY_DRAW_2_SEQ_MASK;
|
||||
const uint64_t program = (uint64_t(m_program.idx) << SORT_KEY_DRAW_2_PROGRAM_SHIFT) & SORT_KEY_DRAW_2_PROGRAM_MASK;
|
||||
const uint64_t trans = (uint64_t(m_trans ) << SORT_KEY_DRAW_2_TRANS_SHIFT ) & SORT_KEY_DRAW_2_TRANS_MASK;
|
||||
const uint64_t view = (uint64_t(m_view ) << SORT_KEY_VIEW_SHIFT ) & SORT_KEY_VIEW_MASK;
|
||||
const uint64_t key = view|SORT_KEY_DRAW_BIT|SORT_KEY_DRAW_TYPE_SEQUENCE|seq|trans|program;
|
||||
const uint64_t seq = (uint64_t(m_seq ) << kSortKeyDraw2SeqShift ) & kSortKeyDraw2SeqMask;
|
||||
const uint64_t program = (uint64_t(m_program.idx) << kSortKeyDraw2ProgramShift) & kSortKeyDraw2ProgramMask;
|
||||
const uint64_t trans = (uint64_t(m_trans ) << kSortKeyDraw2TransShift ) & kSortKeyDraw2TransMask;
|
||||
const uint64_t view = (uint64_t(m_view ) << kSortKeyViewBitShift ) & kSortKeyViewMask;
|
||||
const uint64_t key = view|kSortKeyDrawBit|kSortKeyDrawTypeSequence|seq|trans|program;
|
||||
|
||||
BX_CHECK(seq == (uint64_t(m_seq) << SORT_KEY_DRAW_2_SEQ_SHIFT)
|
||||
BX_CHECK(seq == (uint64_t(m_seq) << kSortKeyDraw2SeqShift)
|
||||
, "SortKey error, sequence is truncated (m_seq: %d)."
|
||||
, m_seq
|
||||
);
|
||||
@@ -1096,12 +1094,12 @@ namespace bgfx
|
||||
|
||||
uint64_t encodeCompute()
|
||||
{
|
||||
const uint64_t program = (uint64_t(m_program.idx) << SORT_KEY_COMPUTE_PROGRAM_SHIFT) & SORT_KEY_COMPUTE_PROGRAM_MASK;
|
||||
const uint64_t seq = (uint64_t(m_seq ) << SORT_KEY_COMPUTE_SEQ_SHIFT ) & SORT_KEY_COMPUTE_SEQ_MASK;
|
||||
const uint64_t view = (uint64_t(m_view ) << SORT_KEY_VIEW_SHIFT ) & SORT_KEY_VIEW_MASK;
|
||||
const uint64_t program = (uint64_t(m_program.idx) << kSortKeyComputeProgramShift) & kSortKeyComputeProgramMask;
|
||||
const uint64_t seq = (uint64_t(m_seq ) << kSortKeyComputeSeqShift ) & kSortKeyComputeSeqMask;
|
||||
const uint64_t view = (uint64_t(m_view ) << kSortKeyViewBitShift ) & kSortKeyViewMask;
|
||||
const uint64_t key = program|seq|view;
|
||||
|
||||
BX_CHECK(seq == (uint64_t(m_seq) << SORT_KEY_COMPUTE_SEQ_SHIFT)
|
||||
BX_CHECK(seq == (uint64_t(m_seq) << kSortKeyComputeSeqShift)
|
||||
, "SortKey error, sequence is truncated (m_seq: %d)."
|
||||
, m_seq
|
||||
);
|
||||
@@ -1112,39 +1110,39 @@ namespace bgfx
|
||||
/// Returns true if item is compute command.
|
||||
bool decode(uint64_t _key, ViewId _viewRemap[BGFX_CONFIG_MAX_VIEWS])
|
||||
{
|
||||
m_view = _viewRemap[(_key & SORT_KEY_VIEW_MASK) >> SORT_KEY_VIEW_SHIFT];
|
||||
if (_key & SORT_KEY_DRAW_BIT)
|
||||
m_view = _viewRemap[(_key & kSortKeyViewMask) >> kSortKeyViewBitShift];
|
||||
if (_key & kSortKeyDrawBit)
|
||||
{
|
||||
uint64_t type = _key & SORT_KEY_DRAW_TYPE_MASK;
|
||||
if (type == SORT_KEY_DRAW_TYPE_DEPTH)
|
||||
uint64_t type = _key & kSortKeyDrawTypeMask;
|
||||
if (type == kSortKeyDrawTypeDepth)
|
||||
{
|
||||
m_program.idx = uint16_t( (_key & SORT_KEY_DRAW_1_PROGRAM_MASK) >> SORT_KEY_DRAW_1_PROGRAM_SHIFT);
|
||||
m_program.idx = uint16_t( (_key & kSortKeyDraw1ProgramMask) >> kSortKeyDraw1ProgramShift);
|
||||
return false;
|
||||
}
|
||||
else if (type == SORT_KEY_DRAW_TYPE_SEQUENCE)
|
||||
else if (type == kSortKeyDrawTypeSequence)
|
||||
{
|
||||
m_program.idx = uint16_t( (_key & SORT_KEY_DRAW_2_PROGRAM_MASK) >> SORT_KEY_DRAW_2_PROGRAM_SHIFT);
|
||||
m_program.idx = uint16_t( (_key & kSortKeyDraw2ProgramMask) >> kSortKeyDraw2ProgramShift);
|
||||
return false;
|
||||
}
|
||||
|
||||
m_program.idx = uint16_t( (_key & SORT_KEY_DRAW_0_PROGRAM_MASK) >> SORT_KEY_DRAW_0_PROGRAM_SHIFT);
|
||||
m_program.idx = uint16_t( (_key & kSortKeyDraw0ProgramMask) >> kSortKeyDraw0ProgramShift);
|
||||
return false; // draw
|
||||
}
|
||||
|
||||
m_program.idx = uint16_t( (_key & SORT_KEY_COMPUTE_PROGRAM_MASK) >> SORT_KEY_COMPUTE_PROGRAM_SHIFT);
|
||||
m_program.idx = uint16_t( (_key & kSortKeyComputeProgramMask) >> kSortKeyComputeProgramShift);
|
||||
return true; // compute
|
||||
}
|
||||
|
||||
static ViewId decodeView(uint64_t _key)
|
||||
{
|
||||
return ViewId( (_key & SORT_KEY_VIEW_MASK) >> SORT_KEY_VIEW_SHIFT);
|
||||
return ViewId( (_key & kSortKeyViewMask) >> kSortKeyViewBitShift);
|
||||
}
|
||||
|
||||
static uint64_t remapView(uint64_t _key, ViewId _viewRemap[BGFX_CONFIG_MAX_VIEWS])
|
||||
{
|
||||
const ViewId oldView = decodeView(_key);
|
||||
const uint64_t view = uint64_t(_viewRemap[oldView]) << SORT_KEY_VIEW_SHIFT;
|
||||
const uint64_t key = (_key & ~SORT_KEY_VIEW_MASK) | view;
|
||||
const uint64_t view = uint64_t(_viewRemap[oldView]) << kSortKeyViewBitShift;
|
||||
const uint64_t key = (_key & ~kSortKeyViewMask) | view;
|
||||
return key;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user