diff --git a/src/bgfx.cpp b/src/bgfx.cpp index fa0f05e0..505b8b36 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -1070,6 +1070,15 @@ namespace bgfx static void dumpCaps() { + 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 Seq %016" PRIx64, SORT_KEY_SEQ_MASK); + BX_TRACE("\tD Trans %016" PRIx64, SORT_KEY_DRAW_TRANS_MASK); + BX_TRACE("\tD Program %016" PRIx64, SORT_KEY_DRAW_PROGRAM_MASK); + BX_TRACE("\tC Program %016" PRIx64, SORT_KEY_COMPUTE_PROGRAM_MASK); + BX_TRACE("\tD Depth %016" PRIx64, SORT_KEY_DRAW_DEPTH_MASK); + BX_TRACE("Supported capabilities (renderer %s, vendor 0x%04x, device 0x%04x):" , s_ctx->m_renderCtx->getRendererName() , g_caps.vendorId diff --git a/src/bgfx_p.h b/src/bgfx_p.h index 3f185f73..67f5af5c 100644 --- a/src/bgfx_p.h +++ b/src/bgfx_p.h @@ -702,26 +702,28 @@ namespace bgfx void operator=(const CommandBuffer&); }; -#define SORT_KEY_DRAW_BIT (UINT64_C(1)<<0x36) +#define SORT_KEY_NUM_BITS_TRANS 2 -#define SORT_KEY_SEQ_SHIFT 0x2b -#define SORT_KEY_SEQ_MASK (UINT64_C(0x7ff)<> SORT_KEY_SEQ_SHIFT); + m_seq = uint32_t( (_key & SORT_KEY_SEQ_MASK ) >> SORT_KEY_SEQ_SHIFT); m_view = uint8_t( (_key & SORT_KEY_VIEW_MASK) >> SORT_KEY_VIEW_SHIFT); if (_key & SORT_KEY_DRAW_BIT) { @@ -834,15 +836,15 @@ namespace bgfx void reset() { m_depth = 0; - m_program = 0; m_seq = 0; + m_program = 0; m_view = 0; m_trans = 0; } uint32_t m_depth; + uint32_t m_seq; uint16_t m_program; - uint16_t m_seq; uint8_t m_view; uint8_t m_trans; }; diff --git a/src/config.h b/src/config.h index df5c159c..edfa69da 100644 --- a/src/config.h +++ b/src/config.h @@ -197,6 +197,21 @@ # define BGFX_CONFIG_MAX_RECT_CACHE (4<<10) #endif // BGFX_CONFIG_MAX_RECT_CACHE +#ifndef BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH +# define BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH 32 +#endif // BGFX_CONFIG_SORT_KEY_NUM_BITS_DEPTH + +#ifndef BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ +# define BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ 11 +#endif // BGFX_CONFIG_SORT_KEY_NUM_BITS_SEQ + +#ifndef BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM +# define BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM 9 +#endif // BGFX_CONFIG_SORT_KEY_NUM_BITS_PROGRAM + +// Cannot be configured directly. Must must be power of 2. +#define BGFX_CONFIG_MAX_PROGRAMS (1<