diff options
author | 2023-01-05 05:12:10 +0100 | |
---|---|---|
committer | 2023-01-04 23:12:10 -0500 | |
commit | 5581eaa50a42256242f32569f59ce10d70ddd8c2 (patch) | |
tree | 0d79e41b381ebf6d50ab5b7e20c0993b7328b5b6 /3rdparty/bgfx/examples/common/bgfx_utils.cpp | |
parent | 34c37d4f5415f886ec3ae462b008cebbf5fa22f9 (diff) |
Update BGFX, BX and BIMG (#10750)
* Update to bgfx a93a714632b79b5ddbf5c86ac323fa9b76ed3433
Co-authored-by: Бранимир Караџић <branimirkaradzic@gmail.com>
Diffstat (limited to '3rdparty/bgfx/examples/common/bgfx_utils.cpp')
-rw-r--r-- | 3rdparty/bgfx/examples/common/bgfx_utils.cpp | 117 |
1 files changed, 66 insertions, 51 deletions
diff --git a/3rdparty/bgfx/examples/common/bgfx_utils.cpp b/3rdparty/bgfx/examples/common/bgfx_utils.cpp index 6573b882858..209e3ea7fe1 100644 --- a/3rdparty/bgfx/examples/common/bgfx_utils.cpp +++ b/3rdparty/bgfx/examples/common/bgfx_utils.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2011-2021 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + * Copyright 2011-2022 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE */ #include "common.h" @@ -29,7 +29,7 @@ void* load(bx::FileReaderI* _reader, bx::AllocatorI* _allocator, const char* _fi { uint32_t size = (uint32_t)bx::getSize(_reader); void* data = BX_ALLOC(_allocator, size); - bx::read(_reader, data, size); + bx::read(_reader, data, size, bx::ErrorAssert{}); bx::close(_reader); if (NULL != _size) { @@ -66,7 +66,7 @@ static const bgfx::Memory* loadMem(bx::FileReaderI* _reader, const char* _filePa { uint32_t size = (uint32_t)bx::getSize(_reader); const bgfx::Memory* mem = bgfx::alloc(size+1); - bx::read(_reader, mem->data, size); + bx::read(_reader, mem->data, size, bx::ErrorAssert{}); bx::close(_reader); mem->data[mem->size-1] = '\0'; return mem; @@ -82,7 +82,7 @@ static void* loadMem(bx::FileReaderI* _reader, bx::AllocatorI* _allocator, const { uint32_t size = (uint32_t)bx::getSize(_reader); void* data = BX_ALLOC(_allocator, size); - bx::read(_reader, data, size); + bx::read(_reader, data, size, bx::ErrorAssert{}); bx::close(_reader); if (NULL != _size) @@ -375,7 +375,7 @@ void Group::reset() namespace bgfx { - int32_t read(bx::ReaderI* _reader, bgfx::VertexLayout& _layout, bx::Error* _err = NULL); + int32_t read(bx::ReaderI* _reader, bgfx::VertexLayout& _layout, bx::Error* _err); } void Mesh::load(bx::ReaderSeekerI* _reader, bool _ramcopy) @@ -402,17 +402,17 @@ void Mesh::load(bx::ReaderSeekerI* _reader, bool _ramcopy) { case kChunkVertexBuffer: { - read(_reader, group.m_sphere); - read(_reader, group.m_aabb); - read(_reader, group.m_obb); + read(_reader, group.m_sphere, &err); + read(_reader, group.m_aabb, &err); + read(_reader, group.m_obb, &err); - read(_reader, m_layout); + read(_reader, m_layout, &err); uint16_t stride = m_layout.getStride(); - read(_reader, group.m_numVertices); + read(_reader, group.m_numVertices, &err); const bgfx::Memory* mem = bgfx::alloc(group.m_numVertices*stride); - read(_reader, mem->data, mem->size); + read(_reader, mem->data, mem->size, &err); if (_ramcopy) { @@ -426,23 +426,23 @@ void Mesh::load(bx::ReaderSeekerI* _reader, bool _ramcopy) case kChunkVertexBufferCompressed: { - read(_reader, group.m_sphere); - read(_reader, group.m_aabb); - read(_reader, group.m_obb); + read(_reader, group.m_sphere, &err); + read(_reader, group.m_aabb, &err); + read(_reader, group.m_obb, &err); - read(_reader, m_layout); + read(_reader, m_layout, &err); uint16_t stride = m_layout.getStride(); - read(_reader, group.m_numVertices); + read(_reader, group.m_numVertices, &err); const bgfx::Memory* mem = bgfx::alloc(group.m_numVertices*stride); uint32_t compressedSize; - bx::read(_reader, compressedSize); + bx::read(_reader, compressedSize, &err); void* compressedVertices = BX_ALLOC(allocator, compressedSize); - bx::read(_reader, compressedVertices, compressedSize); + bx::read(_reader, compressedVertices, compressedSize, &err); meshopt_decodeVertexBuffer(mem->data, group.m_numVertices, stride, (uint8_t*)compressedVertices, compressedSize); @@ -460,9 +460,10 @@ void Mesh::load(bx::ReaderSeekerI* _reader, bool _ramcopy) case kChunkIndexBuffer: { - read(_reader, group.m_numIndices); + read(_reader, group.m_numIndices, &err); + const bgfx::Memory* mem = bgfx::alloc(group.m_numIndices*2); - read(_reader, mem->data, mem->size); + read(_reader, mem->data, mem->size, &err); if (_ramcopy) { @@ -476,16 +477,16 @@ void Mesh::load(bx::ReaderSeekerI* _reader, bool _ramcopy) case kChunkIndexBufferCompressed: { - bx::read(_reader, group.m_numIndices); + bx::read(_reader, group.m_numIndices, &err); const bgfx::Memory* mem = bgfx::alloc(group.m_numIndices*2); uint32_t compressedSize; - bx::read(_reader, compressedSize); + bx::read(_reader, compressedSize, &err); void* compressedIndices = BX_ALLOC(allocator, compressedSize); - bx::read(_reader, compressedIndices, compressedSize); + bx::read(_reader, compressedIndices, compressedSize, &err); meshopt_decodeIndexBuffer(mem->data, group.m_numIndices, 2, (uint8_t*)compressedIndices, compressedSize); @@ -504,31 +505,31 @@ void Mesh::load(bx::ReaderSeekerI* _reader, bool _ramcopy) case kChunkPrimitive: { uint16_t len; - read(_reader, len); + read(_reader, len, &err); stl::string material; material.resize(len); - read(_reader, const_cast<char*>(material.c_str() ), len); + read(_reader, const_cast<char*>(material.c_str() ), len, &err); uint16_t num; - read(_reader, num); + read(_reader, num, &err); for (uint32_t ii = 0; ii < num; ++ii) { - read(_reader, len); + read(_reader, len, &err); stl::string name; name.resize(len); - read(_reader, const_cast<char*>(name.c_str() ), len); + read(_reader, const_cast<char*>(name.c_str() ), len, &err); Primitive prim; - read(_reader, prim.m_startIndex); - read(_reader, prim.m_numIndices); - read(_reader, prim.m_startVertex); - read(_reader, prim.m_numVertices); - read(_reader, prim.m_sphere); - read(_reader, prim.m_aabb); - read(_reader, prim.m_obb); + read(_reader, prim.m_startIndex, &err); + read(_reader, prim.m_numIndices, &err); + read(_reader, prim.m_startVertex, &err); + read(_reader, prim.m_numVertices, &err); + read(_reader, prim.m_sphere, &err); + read(_reader, prim.m_aabb, &err); + read(_reader, prim.m_obb, &err); group.m_prims.push_back(prim); } @@ -595,8 +596,16 @@ void Mesh::submit(bgfx::ViewId _id, bgfx::ProgramHandle _program, const float* _ bgfx::setIndexBuffer(group.m_ibh); bgfx::setVertexBuffer(0, group.m_vbh); - bgfx::submit(_id, _program, 0, (it == itEnd-1) ? (BGFX_DISCARD_INDEX_BUFFER | BGFX_DISCARD_VERTEX_STREAMS | BGFX_DISCARD_STATE) : BGFX_DISCARD_NONE); + bgfx::submit( + _id + , _program + , 0 + , BGFX_DISCARD_INDEX_BUFFER + | BGFX_DISCARD_VERTEX_STREAMS + ); } + + bgfx::discard(); } void Mesh::submit(const MeshState*const* _state, uint8_t _numPasses, const float* _mtx, uint16_t _numMatrices) const @@ -631,10 +640,19 @@ void Mesh::submit(const MeshState*const* _state, uint8_t _numPasses, const float state.m_viewId , state.m_program , 0 - , (it == itEnd - 1) ? (BGFX_DISCARD_INDEX_BUFFER | BGFX_DISCARD_VERTEX_STREAMS | BGFX_DISCARD_STATE) : BGFX_DISCARD_NONE + , BGFX_DISCARD_INDEX_BUFFER + | BGFX_DISCARD_VERTEX_STREAMS ); } + + bgfx::discard(0 + | BGFX_DISCARD_BINDINGS + | BGFX_DISCARD_STATE + | BGFX_DISCARD_TRANSFORM + ); } + + bgfx::discard(); } Mesh* meshLoad(bx::ReaderSeekerI* _reader, bool _ramcopy) @@ -749,20 +767,17 @@ Args::Args(int _argc, const char* const* _argv) { m_type = bgfx::RendererType::Noop; } - else if (BX_ENABLED(BX_PLATFORM_WINDOWS|BX_PLATFORM_WINRT|BX_PLATFORM_XBOXONE) ) + if (cmdLine.hasArg("d3d9") ) { - if (cmdLine.hasArg("d3d9") ) - { - m_type = bgfx::RendererType::Direct3D9; - } - else if (cmdLine.hasArg("d3d11") ) - { - m_type = bgfx::RendererType::Direct3D11; - } - else if (cmdLine.hasArg("d3d12") ) - { - m_type = bgfx::RendererType::Direct3D12; - } + m_type = bgfx::RendererType::Direct3D9; + } + else if (cmdLine.hasArg("d3d11") ) + { + m_type = bgfx::RendererType::Direct3D11; + } + else if (cmdLine.hasArg("d3d12") ) + { + m_type = bgfx::RendererType::Direct3D12; } else if (BX_ENABLED(BX_PLATFORM_OSX) ) { |