diff options
author | 2023-09-05 17:10:24 +0200 | |
---|---|---|
committer | 2023-09-06 01:10:24 +1000 | |
commit | 1c61ccfe840cdae7a9f92292946a45f3b47e2412 (patch) | |
tree | b56d4b69b96e314abcf56407da44705a602727f1 /3rdparty/bgfx/src/bgfx_p.h | |
parent | b2c399c61d65063ae95e8387d34b098e9516b1a9 (diff) |
Updated bgfx, bx and bimg to current upstream versions. (#11493)
* Reverted "macOS, iOS: Removed OpenGL/OpenGLES support. (commit 4693983242a698eaafed87faf4ffef1789adc8f9).
* Reverted "Fix macOS build" (commit ce2c2c13eda7d699051f75f598e740a447343a88).
* Reverted "macOS: Fixed deprecated warnings." (commit 10a8cb61f882ebc9bb376ee2341d003880b7037f).
* Added bgfx/README.mame explaining deviations from upstream.
Diffstat (limited to '3rdparty/bgfx/src/bgfx_p.h')
-rw-r--r-- | 3rdparty/bgfx/src/bgfx_p.h | 78 |
1 files changed, 49 insertions, 29 deletions
diff --git a/3rdparty/bgfx/src/bgfx_p.h b/3rdparty/bgfx/src/bgfx_p.h index 31ede49d044..a6ae7ed0988 100644 --- a/3rdparty/bgfx/src/bgfx_p.h +++ b/3rdparty/bgfx/src/bgfx_p.h @@ -1,5 +1,5 @@ /* - * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * Copyright 2011-2023 Branimir Karadzic. All rights reserved. * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ @@ -666,7 +666,7 @@ namespace bgfx ~TextVideoMem() { - BX_FREE(g_allocator, m_mem); + bx::free(g_allocator, m_mem); } void resize(bool _small, uint32_t _width, uint32_t _height) @@ -686,7 +686,7 @@ namespace bgfx uint32_t size = m_size; m_size = m_width * m_height; - m_mem = (MemSlot*)BX_REALLOC(g_allocator, m_mem, m_size * sizeof(MemSlot) ); + m_mem = (MemSlot*)bx::realloc(g_allocator, m_mem, m_size * sizeof(MemSlot) ); if (size < m_size) { @@ -757,7 +757,7 @@ namespace bgfx struct TextVideoMemBlitter { - void init(); + void init(uint8_t scale); void shutdown(); TextureHandle m_texture; @@ -765,6 +765,7 @@ namespace bgfx TransientIndexBuffer* m_ib; VertexLayout m_layout; ProgramHandle m_program; + uint8_t m_scale; }; struct RendererContextI; @@ -885,7 +886,7 @@ namespace bgfx ~CommandBuffer() { - BX_FREE(g_allocator, m_buffer); + bx::free(g_allocator, m_buffer); } void init(uint32_t _minCapacity) @@ -933,7 +934,7 @@ namespace bgfx void resize(uint32_t _capacity = 0) { m_capacity = bx::alignUp(bx::max(_capacity, m_minCapacity), 1024); - m_buffer = (uint8_t*)BX_REALLOC(g_allocator, m_buffer, m_capacity); + m_buffer = (uint8_t*)bx::realloc(g_allocator, m_buffer, m_capacity); } void write(const void* _data, uint32_t _size) @@ -1483,14 +1484,14 @@ namespace bgfx const uint32_t structSize = sizeof(UniformBuffer)-sizeof(UniformBuffer::m_buffer); uint32_t size = bx::alignUp(_size, 16); - void* data = BX_ALLOC(g_allocator, size+structSize); + void* data = bx::alloc(g_allocator, size+structSize); return BX_PLACEMENT_NEW(data, UniformBuffer)(size); } static void destroy(UniformBuffer* _uniformBuffer) { _uniformBuffer->~UniformBuffer(); - BX_FREE(g_allocator, _uniformBuffer); + bx::free(g_allocator, _uniformBuffer); } static void update(UniformBuffer** _uniformBuffer, uint32_t _threshold = 64<<10, uint32_t _grow = 1<<20) @@ -1500,7 +1501,7 @@ namespace bgfx { const uint32_t structSize = sizeof(UniformBuffer)-sizeof(UniformBuffer::m_buffer); uint32_t size = bx::alignUp(uniformBuffer->m_size + _grow, 16); - void* data = BX_REALLOC(g_allocator, uniformBuffer, size+structSize); + void* data = bx::realloc(g_allocator, uniformBuffer, size+structSize); uniformBuffer = reinterpret_cast<UniformBuffer*>(data); uniformBuffer->m_size = size; @@ -1977,7 +1978,7 @@ namespace bgfx m_height = _height; m_depth = _depth; m_format = uint8_t(_format); - m_numSamples = 1 << bx::uint32_satsub((_flags & BGFX_TEXTURE_RT_MSAA_MASK) >> BGFX_TEXTURE_RT_MSAA_SHIFT, 1); + m_numSamples = 1 << bx::uint32_satsub( (_flags & BGFX_TEXTURE_RT_MSAA_MASK) >> BGFX_TEXTURE_RT_MSAA_SHIFT, 1); m_numMips = _numMips; m_numLayers = _numLayers; m_owned = false; @@ -2182,7 +2183,7 @@ namespace bgfx { const uint32_t num = g_caps.limits.maxEncoders; - m_uniformBuffer = (UniformBuffer**)BX_ALLOC(g_allocator, sizeof(UniformBuffer*)*num); + m_uniformBuffer = (UniformBuffer**)bx::alloc(g_allocator, sizeof(UniformBuffer*)*num); for (uint32_t ii = 0; ii < num; ++ii) { @@ -2202,8 +2203,8 @@ namespace bgfx UniformBuffer::destroy(m_uniformBuffer[ii]); } - BX_FREE(g_allocator, m_uniformBuffer); - BX_DELETE(g_allocator, m_textVideoMem); + bx::free(g_allocator, m_uniformBuffer); + bx::deleteObject(g_allocator, m_textVideoMem); } void reset() @@ -3129,6 +3130,7 @@ namespace bgfx , m_rtMemoryUsed(0) , m_textureMemoryUsed(0) , m_renderCtx(NULL) + , m_headless(false) , m_rendererInitialized(false) , m_exit(false) , m_flipAfterRender(false) @@ -3165,6 +3167,15 @@ namespace bgfx BGFX_API_FUNC(void reset(uint32_t _width, uint32_t _height, uint32_t _flags, TextureFormat::Enum _format) ) { + BGFX_MUTEX_SCOPE(m_resourceApiLock); + + BX_ASSERT(false + || !m_headless + || 0 == _width + || 0 == _height + , "Running in headless mode, resolution of non-existing backbuffer can't be larger than 0x0!" + ); + const TextureFormat::Enum format = TextureFormat::Count != _format ? _format : m_init.resolution.format; if (!g_platformDataChangedSinceReset @@ -3247,7 +3258,12 @@ namespace bgfx { BGFX_MUTEX_SCOPE(m_resourceApiLock); - m_submit->m_textVideoMem->resize(_small, (uint16_t)m_init.resolution.width, (uint16_t)m_init.resolution.height); + const uint8_t debugTextScale = m_init.resolution.debugTextScale; + m_submit->m_textVideoMem->resize( + _small + , (uint16_t)m_init.resolution.width / debugTextScale + , (uint16_t)m_init.resolution.height / debugTextScale + ); m_submit->m_textVideoMem->clear(_attr); } @@ -3572,7 +3588,8 @@ namespace bgfx { BGFX_MUTEX_SCOPE(m_resourceApiLock); - BX_ASSERT(0 == (_flags & BGFX_BUFFER_COMPUTE_READ_WRITE), "Cannot initialize compute buffer from CPU."); + BX_ASSERT(0 == (_flags & BGFX_BUFFER_COMPUTE_WRITE), "Can't initialize compute write buffer from CPU."); + const uint32_t indexSize = 0 == (_flags & BGFX_BUFFER_INDEX32) ? 2 : 4; DynamicIndexBufferHandle handle = createDynamicIndexBuffer(_mem->size/indexSize, _flags); @@ -3594,7 +3611,7 @@ namespace bgfx BGFX_CHECK_HANDLE("updateDynamicIndexBuffer", m_dynamicIndexBufferHandle, _handle); DynamicIndexBuffer& dib = m_dynamicIndexBuffers[_handle.idx]; - BX_ASSERT(0 == (dib.m_flags & BGFX_BUFFER_COMPUTE_WRITE), "Can't update GPU buffer from CPU."); + BX_ASSERT(0 == (dib.m_flags & BGFX_BUFFER_COMPUTE_WRITE), "Can't update GPU write buffer from CPU."); const uint32_t indexSize = 0 == (dib.m_flags & BGFX_BUFFER_INDEX32) ? 2 : 4; if (dib.m_size < _mem->size @@ -3640,16 +3657,16 @@ namespace bgfx void destroy(const DynamicIndexBuffer& _dib) { - if (0 != (_dib.m_flags & BGFX_BUFFER_COMPUTE_READ_WRITE)) + if (0 != (_dib.m_flags & BGFX_BUFFER_COMPUTE_READ_WRITE) ) { destroyIndexBuffer(_dib.m_handle); } else { m_dynIndexBufferAllocator.free(uint64_t(_dib.m_handle.idx) << 32 | _dib.m_offset); - if (m_dynIndexBufferAllocator.compact()) + if (m_dynIndexBufferAllocator.compact() ) { - for (uint64_t ptr = m_dynIndexBufferAllocator.remove(); 0 != ptr; ptr = m_dynIndexBufferAllocator.remove()) + for (uint64_t ptr = m_dynIndexBufferAllocator.remove(); 0 != ptr; ptr = m_dynIndexBufferAllocator.remove() ) { IndexBufferHandle handle = { uint16_t(ptr >> 32) }; destroyIndexBuffer(handle); @@ -3769,6 +3786,8 @@ namespace bgfx { BGFX_MUTEX_SCOPE(m_resourceApiLock); + BX_ASSERT(0 == (_flags & BGFX_BUFFER_COMPUTE_WRITE), "Can't initialize compute write buffer from CPU."); + uint32_t numVertices = _mem->size/_layout.m_stride; DynamicVertexBufferHandle handle = createDynamicVertexBuffer(numVertices, _layout, _flags); @@ -3790,7 +3809,7 @@ namespace bgfx BGFX_CHECK_HANDLE("updateDynamicVertexBuffer", m_dynamicVertexBufferHandle, _handle); DynamicVertexBuffer& dvb = m_dynamicVertexBuffers[_handle.idx]; - BX_ASSERT(0 == (dvb.m_flags & BGFX_BUFFER_COMPUTE_WRITE), "Can't update GPU write buffer from CPU."); + BX_ASSERT(0 == (dvb.m_flags & BGFX_BUFFER_COMPUTE_WRITE), "Can't update GPU write buffer from CPU."); if (dvb.m_size < _mem->size && 0 != (dvb.m_flags & BGFX_BUFFER_ALLOW_RESIZE) ) @@ -3839,16 +3858,16 @@ namespace bgfx void destroy(const DynamicVertexBuffer& _dvb) { - if (0 != (_dvb.m_flags & BGFX_BUFFER_COMPUTE_READ_WRITE)) + if (0 != (_dvb.m_flags & BGFX_BUFFER_COMPUTE_READ_WRITE) ) { destroyVertexBuffer(_dvb.m_handle); } else { m_dynVertexBufferAllocator.free(uint64_t(_dvb.m_handle.idx) << 32 | _dvb.m_offset); - if (m_dynVertexBufferAllocator.compact()) + if (m_dynVertexBufferAllocator.compact() ) { - for (uint64_t ptr = m_dynVertexBufferAllocator.remove(); 0 != ptr; ptr = m_dynVertexBufferAllocator.remove()) + for (uint64_t ptr = m_dynVertexBufferAllocator.remove(); 0 != ptr; ptr = m_dynVertexBufferAllocator.remove() ) { VertexBufferHandle handle = { uint16_t(ptr >> 32) }; destroyVertexBuffer(handle); @@ -3909,7 +3928,7 @@ namespace bgfx + bx::alignUp<uint32_t>(sizeof(TransientIndexBuffer), 16) + bx::alignUp(_size, 16) ; - tib = (TransientIndexBuffer*)BX_ALIGNED_ALLOC(g_allocator, size, 16); + tib = (TransientIndexBuffer*)bx::alignedAlloc(g_allocator, size, 16); tib->data = (uint8_t *)tib + bx::alignUp(sizeof(TransientIndexBuffer), 16); tib->size = _size; tib->handle = handle; @@ -3926,7 +3945,7 @@ namespace bgfx cmdbuf.write(_tib->handle); m_submit->free(_tib->handle); - BX_ALIGNED_FREE(g_allocator, _tib, 16); + bx::alignedFree(g_allocator, _tib, 16); } BGFX_API_FUNC(void allocTransientIndexBuffer(TransientIndexBuffer* _tib, uint32_t _num, bool _index32) ) @@ -3976,7 +3995,7 @@ namespace bgfx + bx::alignUp<uint32_t>(sizeof(TransientVertexBuffer), 16) + bx::alignUp(_size, 16) ; - tvb = (TransientVertexBuffer*)BX_ALIGNED_ALLOC(g_allocator, size, 16); + tvb = (TransientVertexBuffer*)bx::alignedAlloc(g_allocator, size, 16); tvb->data = (uint8_t *)tvb + bx::alignUp(sizeof(TransientVertexBuffer), 16); tvb->size = _size; tvb->startVertex = 0; @@ -3996,7 +4015,7 @@ namespace bgfx cmdbuf.write(_tvb->handle); m_submit->free(_tvb->handle); - BX_ALIGNED_FREE(g_allocator, _tvb, 16); + bx::alignedFree(g_allocator, _tvb, 16); } BGFX_API_FUNC(void allocTransientVertexBuffer(TransientVertexBuffer* _tvb, uint32_t _num, VertexLayoutHandle _layoutHandle, uint16_t _stride) ) @@ -4207,7 +4226,7 @@ namespace bgfx if (0 != sr.m_num) { uint32_t size = sr.m_num*sizeof(UniformHandle); - sr.m_uniforms = (UniformHandle*)BX_ALLOC(g_allocator, size); + sr.m_uniforms = (UniformHandle*)bx::alloc(g_allocator, size); bx::memCopy(sr.m_uniforms, uniforms, size); } @@ -4320,7 +4339,7 @@ namespace bgfx destroyUniform(sr.m_uniforms[ii]); } - BX_FREE(g_allocator, sr.m_uniforms); + bx::free(g_allocator, sr.m_uniforms); sr.m_uniforms = NULL; sr.m_num = 0; } @@ -5352,6 +5371,7 @@ namespace bgfx RendererContextI* m_renderCtx; + bool m_headless; bool m_rendererInitialized; bool m_exit; bool m_flipAfterRender; |