diff --git a/src/bgfx.cpp b/src/bgfx.cpp index 818d4876..7077fa18 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -19,6 +19,11 @@ namespace bgfx # define BGFX_CHECK_RENDER_THREAD() #endif // BGFX_CONFIG_MULTITHREADED +#define BGFX_CHECK_CAPS(_caps, _msg) \ + BX_CHECK(0 != (g_caps.supported & (_caps) ) \ + , _msg " Use bgfx::getCaps to check " #_caps " backend renderer capabilities." \ + ); + #if BGFX_CONFIG_USE_TINYSTL void* TinyStlAllocator::static_allocate(size_t _bytes) { @@ -2619,9 +2624,7 @@ again: const InstanceDataBuffer* allocInstanceDataBuffer(uint32_t _num, uint16_t _stride) { BGFX_CHECK_MAIN_THREAD(); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_INSTANCING) - , "Instancing is not supported! Use bgfx::getCaps to check backend renderer capabilities." - ); + BGFX_CHECK_CAPS(BGFX_CAPS_INSTANCING, "Instancing is not supported!"); BX_CHECK(0 < _num, "Requesting 0 instanced data vertices."); return s_ctx->allocInstanceDataBuffer(_num, _stride); } @@ -2810,9 +2813,7 @@ again: TextureHandle createTexture3D(uint16_t _width, uint16_t _height, uint16_t _depth, uint8_t _numMips, TextureFormat::Enum _format, uint32_t _flags, const Memory* _mem) { BGFX_CHECK_MAIN_THREAD(); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_TEXTURE_3D) - , "Texture3D is not supported! Use bgfx::getCaps to check BGFX_CAPS_TEXTURE_3D backend renderer capabilities." - ); + BGFX_CHECK_CAPS(BGFX_CAPS_TEXTURE_3D, "Texture3D is not supported!"); _numMips = uint8_t(bx::uint32_max(1, _numMips) ); @@ -2915,9 +2916,7 @@ again: { BGFX_CHECK_MAIN_THREAD(); BX_CHECK(NULL != _mem, "_mem can't be NULL"); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_TEXTURE_3D) - , "Texture3D is not supported! Use bgfx::getCaps to check BGFX_CAPS_TEXTURE_3D backend renderer capabilities." - ); + BGFX_CHECK_CAPS(BGFX_CAPS_TEXTURE_3D, "Texture3D is not supported!"); if (_width == 0 || _height == 0 @@ -2951,9 +2950,7 @@ again: { BGFX_CHECK_MAIN_THREAD(); BX_CHECK(NULL != _data, "_data can't be NULL"); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_TEXTURE_READ_BACK) - , "Texture read-back is not supported! Use bgfx::getCaps to check BGFX_CAPS_TEXTURE_READ_BACK backend renderer capabilities." - ); + BGFX_CHECK_CAPS(BGFX_CAPS_TEXTURE_READ_BACK, "Texture read-back is not supported!"); s_ctx->readTexture(_handle, _data); } @@ -2961,9 +2958,7 @@ again: { BGFX_CHECK_MAIN_THREAD(); BX_CHECK(NULL != _data, "_data can't be NULL"); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_TEXTURE_READ_BACK) - , "Texture read-back is not supported! Use bgfx::getCaps to check BGFX_CAPS_TEXTURE_READ_BACK backend renderer capabilities." - ); + BGFX_CHECK_CAPS(BGFX_CAPS_TEXTURE_READ_BACK, "Texture read-back is not supported!"); s_ctx->readTexture(_handle, _attachment, _data); } @@ -3021,18 +3016,14 @@ again: OcclusionQueryHandle createOcclusionQuery() { BGFX_CHECK_MAIN_THREAD(); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_OCCLUSION_QUERY) - , "Occlusion query is not supported, use bgfx::getCaps to test BGFX_CAPS_OCCLUSION_QUERY feature availability" - ); + BGFX_CHECK_CAPS(BGFX_CAPS_OCCLUSION_QUERY, "Occlusion query is not supported!"); return s_ctx->createOcclusionQuery(); } void destroyOcclusionQuery(OcclusionQueryHandle _handle) { BGFX_CHECK_MAIN_THREAD(); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_OCCLUSION_QUERY) - , "Occlusion query is not supported, use bgfx::getCaps to test BGFX_CAPS_OCCLUSION_QUERY feature availability" - ); + BGFX_CHECK_CAPS(BGFX_CAPS_OCCLUSION_QUERY, "Occlusion query is not supported!"); s_ctx->destroyOcclusionQuery(_handle); } @@ -3172,9 +3163,7 @@ again: void setCondition(OcclusionQueryHandle _handle, bool _visible) { BGFX_CHECK_MAIN_THREAD(); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_OCCLUSION_QUERY) - , "Occlusion query is not supported, use bgfx::getCaps to test BGFX_CAPS_OCCLUSION_QUERY feature availability" - ); + BGFX_CHECK_CAPS(BGFX_CAPS_OCCLUSION_QUERY, "Occlusion query is not supported!"); s_ctx->setCondition(_handle, _visible); } @@ -3323,7 +3312,7 @@ again: BX_CHECK(false || !isValid(_occlusionQuery) || 0 != (g_caps.supported & BGFX_CAPS_OCCLUSION_QUERY) - , "Occlusion query is not supported, use bgfx::getCaps to test BGFX_CAPS_OCCLUSION_QUERY feature availability" + , "Occlusion query is not supported! Use bgfx::getCaps to check BGFX_CAPS_OCCLUSION_QUERY backend renderer capabilities." ); return s_ctx->submit(_id, _program, _occlusionQuery, _depth); } @@ -3407,18 +3396,14 @@ again: void blit(uint8_t _id, TextureHandle _dst, uint8_t _dstMip, uint16_t _dstX, uint16_t _dstY, uint16_t _dstZ, TextureHandle _src, uint8_t _srcMip, uint16_t _srcX, uint16_t _srcY, uint16_t _srcZ, uint16_t _width, uint16_t _height, uint16_t _depth) { BGFX_CHECK_MAIN_THREAD(); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_TEXTURE_BLIT) - , "Texture blit is not supported, use bgfx::getCaps to test BGFX_CAPS_TEXTURE_BLIT feature availability" - ); + BGFX_CHECK_CAPS(BGFX_CAPS_TEXTURE_BLIT, "Texture blit is not supported!"); s_ctx->blit(_id, _dst, _dstMip, _dstX, _dstY, _dstZ, _src, _srcMip, _srcX, _srcY, _srcZ, _width, _height, _depth); } void blit(uint8_t _id, TextureHandle _dst, uint8_t _dstMip, uint16_t _dstX, uint16_t _dstY, uint16_t _dstZ, FrameBufferHandle _src, uint8_t _attachment, uint8_t _srcMip, uint16_t _srcX, uint16_t _srcY, uint16_t _srcZ, uint16_t _width, uint16_t _height, uint16_t _depth) { BGFX_CHECK_MAIN_THREAD(); - BX_CHECK(0 != (g_caps.supported & BGFX_CAPS_TEXTURE_BLIT) - , "Texture blit is not supported! Use bgfx::getCaps to check BGFX_CAPS_TEXTURE_BLIT backend renderer capabilities." - ); + BGFX_CHECK_CAPS(BGFX_CAPS_TEXTURE_BLIT, "Texture blit is not supported!"); s_ctx->blit(_id, _dst, _dstMip, _dstX, _dstY, _dstZ, _src, _attachment, _srcMip, _srcX, _srcY, _srcZ, _width, _height, _depth); }