Cleanup.
This commit is contained in:
parent
31b1712e7c
commit
7abc5af763
16
src/bgfx.cpp
16
src/bgfx.cpp
@ -1441,6 +1441,8 @@ namespace bgfx
|
|||||||
|
|
||||||
frameNoRenderWait();
|
frameNoRenderWait();
|
||||||
|
|
||||||
|
uint16_t idx = m_encoderHandle.alloc();
|
||||||
|
BX_CHECK(0 == idx, "Internal encoder handle is not 0 (idx %d).", idx); BX_UNUSED(idx);
|
||||||
m_encoder[0].begin(m_submit, 0);
|
m_encoder[0].begin(m_submit, 0);
|
||||||
m_encoder0 = reinterpret_cast<Encoder*>(&m_encoder[0]);
|
m_encoder0 = reinterpret_cast<Encoder*>(&m_encoder[0]);
|
||||||
|
|
||||||
@ -1529,7 +1531,7 @@ namespace bgfx
|
|||||||
getCommandBuffer(CommandBuffer::RendererShutdownEnd);
|
getCommandBuffer(CommandBuffer::RendererShutdownEnd);
|
||||||
frame();
|
frame();
|
||||||
|
|
||||||
m_encoder[0].end();
|
m_encoder[0].end(true);
|
||||||
|
|
||||||
m_dynVertexBufferAllocator.compact();
|
m_dynVertexBufferAllocator.compact();
|
||||||
m_dynIndexBufferAllocator.compact();
|
m_dynIndexBufferAllocator.compact();
|
||||||
@ -1690,14 +1692,14 @@ namespace bgfx
|
|||||||
{
|
{
|
||||||
bx::MutexScope scopeLock(m_encoderApiLock);
|
bx::MutexScope scopeLock(m_encoderApiLock);
|
||||||
|
|
||||||
if (BGFX_CONFIG_MAX_ENCODERS == m_numEncoders )
|
uint16_t idx = m_encoderHandle.alloc();
|
||||||
|
if (kInvalidHandle == idx)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t idx = uint8_t(m_numEncoders++);
|
|
||||||
encoder = &m_encoder[idx];
|
encoder = &m_encoder[idx];
|
||||||
encoder->begin(m_submit, idx);
|
encoder->begin(m_submit, uint8_t(idx) );
|
||||||
}
|
}
|
||||||
#endif // BGFX_CONFIG_MULTITHREADED
|
#endif // BGFX_CONFIG_MULTITHREADED
|
||||||
|
|
||||||
@ -1710,9 +1712,9 @@ namespace bgfx
|
|||||||
if (BGFX_API_THREAD_MAGIC != s_threadIndex)
|
if (BGFX_API_THREAD_MAGIC != s_threadIndex)
|
||||||
{
|
{
|
||||||
EncoderImpl* encoder = reinterpret_cast<EncoderImpl*>(_encoder);
|
EncoderImpl* encoder = reinterpret_cast<EncoderImpl*>(_encoder);
|
||||||
encoder->end();
|
encoder->end(true);
|
||||||
|
|
||||||
m_encoderApiSem.post();
|
m_encoderEndSem.post();
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
BX_UNUSED(_encoder);
|
BX_UNUSED(_encoder);
|
||||||
@ -1721,7 +1723,7 @@ namespace bgfx
|
|||||||
|
|
||||||
uint32_t Context::frame(bool _capture)
|
uint32_t Context::frame(bool _capture)
|
||||||
{
|
{
|
||||||
m_encoder[0].end();
|
m_encoder[0].end(true);
|
||||||
|
|
||||||
#if BGFX_CONFIG_MULTITHREADED
|
#if BGFX_CONFIG_MULTITHREADED
|
||||||
bx::MutexScope resourceApiScope(m_resourceApiLock);
|
bx::MutexScope resourceApiScope(m_resourceApiLock);
|
||||||
|
39
src/bgfx_p.h
39
src/bgfx_p.h
@ -1999,12 +1999,15 @@ namespace bgfx
|
|||||||
m_numDropped = 0;
|
m_numDropped = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void end()
|
void end(bool _finalize)
|
||||||
{
|
{
|
||||||
UniformBuffer* uniformBuffer = m_frame->m_uniformBuffer[m_uniformIdx];
|
if (_finalize)
|
||||||
uniformBuffer->finish();
|
{
|
||||||
|
UniformBuffer* uniformBuffer = m_frame->m_uniformBuffer[m_uniformIdx];
|
||||||
|
uniformBuffer->finish();
|
||||||
|
|
||||||
m_cpuTimeEnd = bx::getHPCounter();
|
m_cpuTimeEnd = bx::getHPCounter();
|
||||||
|
}
|
||||||
|
|
||||||
if (BX_ENABLED(BGFX_CONFIG_DEBUG_OCCLUSION) )
|
if (BX_ENABLED(BGFX_CONFIG_DEBUG_OCCLUSION) )
|
||||||
{
|
{
|
||||||
@ -2581,8 +2584,7 @@ namespace bgfx
|
|||||||
struct Context
|
struct Context
|
||||||
{
|
{
|
||||||
Context()
|
Context()
|
||||||
: m_numEncoders(1)
|
: m_render(&m_frame[0])
|
||||||
, m_render(&m_frame[0])
|
|
||||||
, m_submit(&m_frame[BGFX_CONFIG_MULTITHREADED ? 1 : 0])
|
, m_submit(&m_frame[BGFX_CONFIG_MULTITHREADED ? 1 : 0])
|
||||||
, m_numFreeDynamicIndexBufferHandles(0)
|
, m_numFreeDynamicIndexBufferHandles(0)
|
||||||
, m_numFreeDynamicVertexBufferHandles(0)
|
, m_numFreeDynamicVertexBufferHandles(0)
|
||||||
@ -4398,27 +4400,33 @@ namespace bgfx
|
|||||||
|
|
||||||
void encoderApiWait()
|
void encoderApiWait()
|
||||||
{
|
{
|
||||||
for (uint32_t ii = 1, num = m_numEncoders; ii < num; ++ii)
|
uint16_t numEncoders = m_encoderHandle.getNumHandles();
|
||||||
|
|
||||||
|
for (uint16_t ii = 1; ii < numEncoders; ++ii)
|
||||||
{
|
{
|
||||||
m_encoderApiSem.wait();
|
m_encoderEndSem.wait();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint32_t ii = 0, num = m_numEncoders; ii < num; ++ii)
|
for (uint16_t ii = 0; ii < numEncoders; ++ii)
|
||||||
{
|
{
|
||||||
m_encoderStats[ii].cpuTimeBegin = m_encoder[ii].m_cpuTimeBegin;
|
uint16_t idx = m_encoderHandle.getHandleAt(ii);
|
||||||
m_encoderStats[ii].cpuTimeEnd = m_encoder[ii].m_cpuTimeEnd;
|
m_encoderStats[ii].cpuTimeBegin = m_encoder[idx].m_cpuTimeBegin;
|
||||||
|
m_encoderStats[ii].cpuTimeEnd = m_encoder[idx].m_cpuTimeEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_submit->m_perfStats.numEncoders = uint8_t(m_numEncoders);
|
m_submit->m_perfStats.numEncoders = uint8_t(numEncoders);
|
||||||
m_numEncoders = 1;
|
|
||||||
|
m_encoderHandle.reset();
|
||||||
|
uint16_t idx = m_encoderHandle.alloc();
|
||||||
|
BX_CHECK(0 == idx, "Internal encoder handle is not 0 (idx %d).", idx); BX_UNUSED(idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
bx::Semaphore m_renderSem;
|
bx::Semaphore m_renderSem;
|
||||||
bx::Semaphore m_apiSem;
|
bx::Semaphore m_apiSem;
|
||||||
bx::Semaphore m_encoderApiSem;
|
bx::Semaphore m_encoderEndSem;
|
||||||
bx::Mutex m_encoderApiLock;
|
bx::Mutex m_encoderApiLock;
|
||||||
bx::Mutex m_resourceApiLock;
|
bx::Mutex m_resourceApiLock;
|
||||||
bx::Thread m_thread;
|
bx::Thread m_thread;
|
||||||
#else
|
#else
|
||||||
void apiSemPost()
|
void apiSemPost()
|
||||||
{
|
{
|
||||||
@ -4450,6 +4458,7 @@ namespace bgfx
|
|||||||
Encoder* m_encoder0;
|
Encoder* m_encoder0;
|
||||||
EncoderImpl m_encoder[BGFX_CONFIG_MAX_ENCODERS];
|
EncoderImpl m_encoder[BGFX_CONFIG_MAX_ENCODERS];
|
||||||
uint32_t m_numEncoders;
|
uint32_t m_numEncoders;
|
||||||
|
bx::HandleAllocT<BGFX_CONFIG_MAX_ENCODERS> m_encoderHandle;
|
||||||
|
|
||||||
Frame m_frame[1+(BGFX_CONFIG_MULTITHREADED ? 1 : 0)];
|
Frame m_frame[1+(BGFX_CONFIG_MULTITHREADED ? 1 : 0)];
|
||||||
Frame* m_render;
|
Frame* m_render;
|
||||||
|
Loading…
Reference in New Issue
Block a user