summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/src/bgfx_p.h
diff options
context:
space:
mode:
author Julian Sikorski <belegdol+github@gmail.com>2023-09-05 17:10:24 +0200
committer GitHub <noreply@github.com>2023-09-06 01:10:24 +1000
commit1c61ccfe840cdae7a9f92292946a45f3b47e2412 (patch)
treeb56d4b69b96e314abcf56407da44705a602727f1 /3rdparty/bgfx/src/bgfx_p.h
parentb2c399c61d65063ae95e8387d34b098e9516b1a9 (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.h78
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;