summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/src/bgfx_p.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/src/bgfx_p.h')
-rw-r--r--3rdparty/bgfx/src/bgfx_p.h362
1 files changed, 190 insertions, 172 deletions
diff --git a/3rdparty/bgfx/src/bgfx_p.h b/3rdparty/bgfx/src/bgfx_p.h
index ea6e4331ca6..2da498f243a 100644
--- a/3rdparty/bgfx/src/bgfx_p.h
+++ b/3rdparty/bgfx/src/bgfx_p.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2016 Branimir Karadzic. All rights reserved.
+ * Copyright 2011-2017 Branimir Karadzic. All rights reserved.
* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
*/
@@ -139,7 +139,7 @@ namespace bgfx
#include <bx/os.h>
#include <bx/maputil.h>
-#include <bgfx/bgfxplatform.h>
+#include <bgfx/platform.h>
#include "image.h"
#include "shader.h"
@@ -178,11 +178,7 @@ namespace stl = tinystl;
# include <unordered_map>
# include <unordered_set>
# include <vector>
-namespace stl
-{
- using namespace std;
- using namespace std::tr1;
-}
+namespace stl = std;
#endif // BGFX_CONFIG_USE_TINYSTL
#if BX_PLATFORM_ANDROID
@@ -437,23 +433,7 @@ namespace bgfx
}
}
- void printfVargs(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, va_list _argList)
- {
- if (_x < m_width && _y < m_height)
- {
- char* temp = (char*)alloca(m_width);
-
- uint32_t num = bx::vsnprintf(temp, m_width, _format, _argList);
-
- uint8_t* mem = &m_mem[(_y*m_width+_x)*2];
- for (uint32_t ii = 0, xx = _x; ii < num && xx < m_width; ++ii, ++xx)
- {
- mem[0] = temp[ii];
- mem[1] = _attr;
- mem += 2;
- }
- }
- }
+ void printfVargs(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, va_list _argList);
void printf(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, ...)
{
@@ -819,11 +799,11 @@ namespace bgfx
return key;
}
- /// Returns true if item is command.
- bool decode(uint64_t _key)
+ /// Returns true if item is compute command.
+ bool decode(uint64_t _key, uint8_t _viewRemap[BGFX_CONFIG_MAX_VIEWS])
{
m_seq = uint32_t( (_key & SORT_KEY_SEQ_MASK ) >> SORT_KEY_SEQ_SHIFT);
- m_view = uint8_t( (_key & SORT_KEY_VIEW_MASK) >> SORT_KEY_VIEW_SHIFT);
+ m_view = _viewRemap[(_key & SORT_KEY_VIEW_MASK) >> SORT_KEY_VIEW_SHIFT];
if (_key & SORT_KEY_DRAW_BIT)
{
m_depth = uint32_t( (_key & SORT_KEY_DRAW_DEPTH_MASK ) >> SORT_KEY_DRAW_DEPTH_SHIFT);
@@ -836,11 +816,9 @@ namespace bgfx
return true; // compute
}
- bool decode(uint64_t _key, uint8_t _viewRemap[BGFX_CONFIG_MAX_VIEWS])
+ static uint8_t decodeView(uint64_t _key)
{
- bool compute = decode(_key);
- m_view = _viewRemap[m_view];
- return compute;
+ return uint8_t( (_key & SORT_KEY_VIEW_MASK) >> SORT_KEY_VIEW_SHIFT);
}
static uint64_t remapView(uint64_t _key, uint8_t _viewRemap[BGFX_CONFIG_MAX_VIEWS])
@@ -929,7 +907,10 @@ namespace bgfx
uint32_t num = *_num;
BX_WARN(m_num+num < BGFX_CONFIG_MAX_MATRIX_CACHE, "Matrix cache overflow. %d (max: %d)", m_num+num, BGFX_CONFIG_MAX_MATRIX_CACHE);
num = bx::uint32_min(num, BGFX_CONFIG_MAX_MATRIX_CACHE-m_num);
- uint32_t first = m_num;
+ uint32_t first = m_num < BGFX_CONFIG_MAX_MATRIX_CACHE
+ ? m_num
+ : BGFX_CONFIG_MAX_MATRIX_CACHE - 1
+ ;
m_num += num;
*_num = (uint16_t)num;
return first;
@@ -1132,7 +1113,7 @@ namespace bgfx
char m_buffer[8];
};
- struct UniformInfo
+ struct UniformRegInfo
{
const void* m_data;
UniformHandle m_handle;
@@ -1149,7 +1130,7 @@ namespace bgfx
{
}
- const UniformInfo* find(const char* _name) const
+ const UniformRegInfo* find(const char* _name) const
{
uint16_t handle = m_uniforms.find(bx::hashMurmur2A(_name) );
if (UniformHashMap::invalid != handle)
@@ -1160,14 +1141,14 @@ namespace bgfx
return NULL;
}
- const UniformInfo& add(UniformHandle _handle, const char* _name, const void* _data)
+ const UniformRegInfo& add(UniformHandle _handle, const char* _name, const void* _data)
{
BX_CHECK(isValid(_handle), "Uniform handle is invalid (name: %s)!", _name);
const uint32_t key = bx::hashMurmur2A(_name);
m_uniforms.removeByKey(key);
m_uniforms.insert(key, _handle.idx);
- UniformInfo& info = m_info[_handle.idx];
+ UniformRegInfo& info = m_info[_handle.idx];
info.m_data = _data;
info.m_handle = _handle;
@@ -1182,7 +1163,7 @@ namespace bgfx
private:
typedef bx::HandleHashMapT<BGFX_CONFIG_MAX_UNIFORMS*2> UniformHashMap;
UniformHashMap m_uniforms;
- UniformInfo m_info[BGFX_CONFIG_MAX_UNIFORMS];
+ UniformRegInfo m_info[BGFX_CONFIG_MAX_UNIFORMS];
};
struct Binding
@@ -1720,39 +1701,41 @@ namespace bgfx
void sort();
- bool checkAvailTransientIndexBuffer(uint32_t _num)
+ uint32_t getAvailTransientIndexBuffer(uint32_t _num)
{
- uint32_t offset = m_iboffset;
+ uint32_t offset = bx::strideAlign(m_iboffset, sizeof(uint16_t) );
uint32_t iboffset = offset + _num*sizeof(uint16_t);
iboffset = bx::uint32_min(iboffset, BGFX_CONFIG_TRANSIENT_INDEX_BUFFER_SIZE);
uint32_t num = (iboffset-offset)/sizeof(uint16_t);
- return num == _num;
+ return num;
}
uint32_t allocTransientIndexBuffer(uint32_t& _num)
{
uint32_t offset = bx::strideAlign(m_iboffset, sizeof(uint16_t) );
- m_iboffset = offset + _num*sizeof(uint16_t);
- m_iboffset = bx::uint32_min(m_iboffset, BGFX_CONFIG_TRANSIENT_INDEX_BUFFER_SIZE);
- _num = (m_iboffset-offset)/sizeof(uint16_t);
+ uint32_t num = getAvailTransientIndexBuffer(_num);
+ m_iboffset = offset + num*sizeof(uint16_t);
+ _num = num;
+
return offset;
}
- bool checkAvailTransientVertexBuffer(uint32_t _num, uint16_t _stride)
+ uint32_t getAvailTransientVertexBuffer(uint32_t _num, uint16_t _stride)
{
- uint32_t offset = bx::strideAlign(m_vboffset, _stride);
+ uint32_t offset = bx::strideAlign(m_vboffset, _stride);
uint32_t vboffset = offset + _num * _stride;
vboffset = bx::uint32_min(vboffset, BGFX_CONFIG_TRANSIENT_VERTEX_BUFFER_SIZE);
uint32_t num = (vboffset-offset)/_stride;
- return num == _num;
+ return num;
}
uint32_t allocTransientVertexBuffer(uint32_t& _num, uint16_t _stride)
{
uint32_t offset = bx::strideAlign(m_vboffset, _stride);
- m_vboffset = offset + _num * _stride;
- m_vboffset = bx::uint32_min(m_vboffset, BGFX_CONFIG_TRANSIENT_VERTEX_BUFFER_SIZE);
- _num = (m_vboffset-offset)/_stride;
+ uint32_t num = getAvailTransientVertexBuffer(_num, _stride);
+ m_vboffset = offset + num * _stride;
+ _num = num;
+
return offset;
}
@@ -1762,64 +1745,56 @@ namespace bgfx
m_uniformBuffer->writeUniform(_type, _handle.idx, _value, _num);
}
- void free(IndexBufferHandle _handle)
+ bool free(IndexBufferHandle _handle)
{
- m_freeIndexBufferHandle[m_numFreeIndexBufferHandles] = _handle;
- ++m_numFreeIndexBufferHandles;
+ return m_freeIndexBuffer.queue(_handle);
}
- void free(VertexDeclHandle _handle)
+ bool free(VertexDeclHandle _handle)
{
- m_freeVertexDeclHandle[m_numFreeVertexDeclHandles] = _handle;
- ++m_numFreeVertexDeclHandles;
+ return m_freeVertexDecl.queue(_handle);
}
- void free(VertexBufferHandle _handle)
+ bool free(VertexBufferHandle _handle)
{
- m_freeVertexBufferHandle[m_numFreeVertexBufferHandles] = _handle;
- ++m_numFreeVertexBufferHandles;
+ return m_freeVertexBuffer.queue(_handle);
}
- void free(ShaderHandle _handle)
+ bool free(ShaderHandle _handle)
{
- m_freeShaderHandle[m_numFreeShaderHandles] = _handle;
- ++m_numFreeShaderHandles;
+ return m_freeShader.queue(_handle);
}
- void free(ProgramHandle _handle)
+ bool free(ProgramHandle _handle)
{
- m_freeProgramHandle[m_numFreeProgramHandles] = _handle;
- ++m_numFreeProgramHandles;
+ return m_freeProgram.queue(_handle);
}
- void free(TextureHandle _handle)
+ bool free(TextureHandle _handle)
{
- m_freeTextureHandle[m_numFreeTextureHandles] = _handle;
- ++m_numFreeTextureHandles;
+ return m_freeTexture.queue(_handle);
}
- void free(FrameBufferHandle _handle)
+ bool free(FrameBufferHandle _handle)
{
- m_freeFrameBufferHandle[m_numFreeFrameBufferHandles] = _handle;
- ++m_numFreeFrameBufferHandles;
+ return m_freeFrameBuffer.queue(_handle);
}
- void free(UniformHandle _handle)
+ bool free(UniformHandle _handle)
{
- m_freeUniformHandle[m_numFreeUniformHandles] = _handle;
- ++m_numFreeUniformHandles;
+ return m_freeUniform.queue(_handle);
}
void resetFreeHandles()
{
- m_numFreeIndexBufferHandles = 0;
- m_numFreeVertexDeclHandles = 0;
- m_numFreeVertexBufferHandles = 0;
- m_numFreeShaderHandles = 0;
- m_numFreeProgramHandles = 0;
- m_numFreeTextureHandles = 0;
- m_numFreeFrameBufferHandles = 0;
- m_numFreeUniformHandles = 0;
+ m_freeIndexBuffer.reset();
+ m_freeVertexDecl.reset();
+ m_freeVertexBuffer.reset();
+ m_freeShader.reset();
+ m_freeProgram.reset();
+ m_freeTexture.reset();
+ m_freeFrameBuffer.reset();
+ m_freeUniform.reset();
}
SortKey m_key;
@@ -1869,24 +1844,71 @@ namespace bgfx
CommandBuffer m_cmdPre;
CommandBuffer m_cmdPost;
- uint16_t m_numFreeIndexBufferHandles;
- uint16_t m_numFreeVertexDeclHandles;
- uint16_t m_numFreeVertexBufferHandles;
- uint16_t m_numFreeShaderHandles;
- uint16_t m_numFreeProgramHandles;
- uint16_t m_numFreeTextureHandles;
- uint16_t m_numFreeFrameBufferHandles;
- uint16_t m_numFreeUniformHandles;
- uint16_t m_numFreeWindowHandles;
-
- IndexBufferHandle m_freeIndexBufferHandle[BGFX_CONFIG_MAX_INDEX_BUFFERS];
- VertexDeclHandle m_freeVertexDeclHandle[BGFX_CONFIG_MAX_VERTEX_DECLS];
- VertexBufferHandle m_freeVertexBufferHandle[BGFX_CONFIG_MAX_VERTEX_BUFFERS];
- ShaderHandle m_freeShaderHandle[BGFX_CONFIG_MAX_SHADERS];
- ProgramHandle m_freeProgramHandle[BGFX_CONFIG_MAX_PROGRAMS];
- TextureHandle m_freeTextureHandle[BGFX_CONFIG_MAX_TEXTURES];
- FrameBufferHandle m_freeFrameBufferHandle[BGFX_CONFIG_MAX_FRAME_BUFFERS];
- UniformHandle m_freeUniformHandle[BGFX_CONFIG_MAX_UNIFORMS];
+ template<typename Ty, uint32_t Max>
+ struct FreeHandle
+ {
+ FreeHandle()
+ : m_num(0)
+ {
+ }
+
+ bool isQueued(Ty _handle)
+ {
+ for (uint32_t ii = 0, num = m_num; ii < num; ++ii)
+ {
+ if (m_queue[ii].idx == _handle.idx)
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ bool queue(Ty _handle)
+ {
+ if (BX_ENABLED(BGFX_CONFIG_DEBUG) )
+ {
+ if (isQueued(_handle) )
+ {
+ return false;
+ }
+ }
+
+ m_queue[m_num] = _handle;
+ ++m_num;
+
+ return true;
+ }
+
+ void reset()
+ {
+ m_num = 0;
+ }
+
+ Ty get(uint16_t _idx) const
+ {
+ return m_queue[_idx];
+ }
+
+ uint16_t getNumQueued() const
+ {
+ return m_num;
+ }
+
+ Ty m_queue[Max];
+ uint16_t m_num;
+ };
+
+ FreeHandle<IndexBufferHandle, BGFX_CONFIG_MAX_INDEX_BUFFERS> m_freeIndexBuffer;
+ FreeHandle<VertexDeclHandle, BGFX_CONFIG_MAX_VERTEX_DECLS> m_freeVertexDecl;
+ FreeHandle<VertexBufferHandle, BGFX_CONFIG_MAX_VERTEX_BUFFERS> m_freeVertexBuffer;
+ FreeHandle<ShaderHandle, BGFX_CONFIG_MAX_SHADERS> m_freeShader;
+ FreeHandle<ProgramHandle, BGFX_CONFIG_MAX_PROGRAMS> m_freeProgram;
+ FreeHandle<TextureHandle, BGFX_CONFIG_MAX_TEXTURES> m_freeTexture;
+ FreeHandle<FrameBufferHandle, BGFX_CONFIG_MAX_FRAME_BUFFERS> m_freeFrameBuffer;
+ FreeHandle<UniformHandle, BGFX_CONFIG_MAX_UNIFORMS> m_freeUniform;
+
TextVideoMem* m_textVideoMem;
HMD m_hmd;
Stats m_perfStats;
@@ -2187,14 +2209,15 @@ namespace bgfx
BGFX_API_FUNC(void reset(uint32_t _width, uint32_t _height, uint32_t _flags) )
{
- BX_WARN(1 <= int32_t(_width)
- && 1 <= int32_t(_height)
- , "Frame buffer resolution width or height cannot be 0 (width %d, height %d)."
+ BX_WARN(g_caps.limits.maxTextureSize >= _width
+ && g_caps.limits.maxTextureSize >= _height
+ , "Frame buffer resolution width or height can't be larger than limits.maxTextureSize %d (width %d, height %d)."
+ , g_caps.limits.maxTextureSize
, _width
, _height
);
- m_resolution.m_width = bx::uint32_imax(1, _width);
- m_resolution.m_height = bx::uint32_imax(1, _height);
+ m_resolution.m_width = bx::uint32_min(g_caps.limits.maxTextureSize, _width);
+ m_resolution.m_height = bx::uint32_min(g_caps.limits.maxTextureSize, _height);
m_resolution.m_flags = 0
| _flags
| (g_platformDataChangedSinceReset ? BGFX_RESET_INTERNAL_FORCE : 0)
@@ -2255,7 +2278,14 @@ namespace bgfx
BGFX_API_FUNC(const Stats* getPerfStats() )
{
- return &m_submit->m_perfStats;
+ Stats& stats = m_submit->m_perfStats;
+ const Resolution& resolution = m_submit->m_resolution;
+ stats.width = uint16_t(resolution.m_width);
+ stats.height = uint16_t(resolution.m_height);
+ const TextVideoMem* tvm = m_submit->m_textVideoMem;
+ stats.textWidth = tvm->m_width;
+ stats.textHeight = tvm->m_height;
+ return &stats;
}
BGFX_API_FUNC(IndexBufferHandle createIndexBuffer(const Memory* _mem, uint16_t _flags) )
@@ -2277,10 +2307,11 @@ namespace bgfx
BGFX_API_FUNC(void destroyIndexBuffer(IndexBufferHandle _handle) )
{
BGFX_CHECK_HANDLE("destroyIndexBuffer", m_indexBufferHandle, _handle);
+ bool ok = m_submit->free(_handle); BX_UNUSED(ok);
+ BX_CHECK(ok, "Index buffer handle %d is already destroyed!", _handle.idx);
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyIndexBuffer);
cmdbuf.write(_handle);
- m_submit->free(_handle);
}
VertexDeclHandle findVertexDecl(const VertexDecl& _decl)
@@ -2324,10 +2355,11 @@ namespace bgfx
BGFX_API_FUNC(void destroyVertexBuffer(VertexBufferHandle _handle) )
{
BGFX_CHECK_HANDLE("destroyVertexBuffer", m_vertexBufferHandle, _handle);
+ bool ok = m_submit->free(_handle); BX_UNUSED(ok);
+ BX_CHECK(ok, "Vertex buffer handle %d is already destroyed!", _handle.idx);
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyVertexBuffer);
cmdbuf.write(_handle);
- m_submit->free(_handle);
}
void destroyVertexBufferInternal(VertexBufferHandle _handle)
@@ -2659,14 +2691,14 @@ namespace bgfx
m_dynamicVertexBufferHandle.free(_handle.idx);
}
- BGFX_API_FUNC(bool checkAvailTransientIndexBuffer(uint32_t _num) const)
+ BGFX_API_FUNC(uint32_t getAvailTransientIndexBuffer(uint32_t _num) const)
{
- return m_submit->checkAvailTransientIndexBuffer(_num);
+ return m_submit->getAvailTransientIndexBuffer(_num);
}
- BGFX_API_FUNC(bool checkAvailTransientVertexBuffer(uint32_t _num, uint16_t _stride) const)
+ BGFX_API_FUNC(uint32_t getAvailTransientVertexBuffer(uint32_t _num, uint16_t _stride) const)
{
- return m_submit->checkAvailTransientVertexBuffer(_num, _stride);
+ return m_submit->getAvailTransientVertexBuffer(_num, _stride);
}
TransientIndexBuffer* createTransientIndexBuffer(uint32_t _size)
@@ -2983,9 +3015,11 @@ namespace bgfx
int32_t refs = --sr.m_refCount;
if (0 == refs)
{
+ bool ok = m_submit->free(_handle); BX_UNUSED(ok);
+ BX_CHECK(ok, "Shader handle %d is already destroyed!", _handle.idx);
+
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyShader);
cmdbuf.write(_handle);
- m_submit->free(_handle);
if (0 != sr.m_num)
{
@@ -3065,7 +3099,7 @@ namespace bgfx
{
if (!isValid(_vsh) )
{
- BX_WARN(false, "Vertex/fragment shader is invalid (vsh %d).", _vsh.idx);
+ BX_WARN(false, "Compute shader is invalid (vsh %d).", _vsh.idx);
ProgramHandle invalid = BGFX_INVALID_HANDLE;
return invalid;
}
@@ -3118,9 +3152,11 @@ namespace bgfx
int32_t refs = --pr.m_refCount;
if (0 == refs)
{
+ bool ok = m_submit->free(_handle); BX_UNUSED(ok);
+ BX_CHECK(ok, "Program handle %d is already destroyed!", _handle.idx);
+
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyProgram);
cmdbuf.write(_handle);
- m_submit->free(_handle);
shaderDecRef(pr.m_vsh);
uint32_t hash = pr.m_vsh.idx;
@@ -3216,17 +3252,6 @@ namespace bgfx
return m_frames + 2;
}
- BGFX_API_FUNC(uint32_t readTexture(FrameBufferHandle _handle, uint8_t _attachment, void* _data) )
- {
- const FrameBufferRef& ref = m_frameBufferRef[_handle.idx];
- BX_CHECK(!ref.m_window, "Can't sample window frame buffer.");
-
- TextureHandle textureHandle = ref.un.m_th[_attachment];
- BGFX_CHECK_HANDLE("readTexture", m_textureHandle, textureHandle);
-
- return readTexture(textureHandle, _data,0);
- }
-
void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips)
{
const TextureRef& textureRef = m_textureRef[_handle.idx];
@@ -3271,9 +3296,11 @@ namespace bgfx
int32_t refs = --ref.m_refCount;
if (0 == refs)
{
+ bool ok = m_submit->free(_handle); BX_UNUSED(ok);
+ BX_CHECK(ok, "Texture handle %d is already destroyed!", _handle.idx);
+
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyTexture);
cmdbuf.write(_handle);
- m_submit->free(_handle);
}
}
@@ -3400,13 +3427,29 @@ namespace bgfx
return handle;
}
+ BGFX_API_FUNC(TextureHandle getTexture(FrameBufferHandle _handle, uint8_t _attachment) )
+ {
+ BGFX_CHECK_HANDLE("getTexture", m_frameBufferHandle, _handle);
+
+ const FrameBufferRef& ref = m_frameBufferRef[_handle.idx];
+ if (!ref.m_window)
+ {
+ uint32_t attachment = bx::uint32_min(_attachment, BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS);
+ return ref.un.m_th[attachment];
+ }
+
+ TextureHandle invalid = BGFX_INVALID_HANDLE;
+ return invalid;
+ }
+
BGFX_API_FUNC(void destroyFrameBuffer(FrameBufferHandle _handle) )
{
BGFX_CHECK_HANDLE("destroyFrameBuffer", m_frameBufferHandle, _handle);
+ bool ok = m_submit->free(_handle); BX_UNUSED(ok);
+ BX_CHECK(ok, "Frame buffer handle %d is already destroyed!", _handle.idx);
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyFrameBuffer);
cmdbuf.write(_handle);
- m_submit->free(_handle);
FrameBufferRef& ref = m_frameBufferRef[_handle.idx];
if (!ref.m_window)
@@ -3495,6 +3538,16 @@ namespace bgfx
return handle;
}
+ BGFX_API_FUNC(void getUniformInfo(UniformHandle _handle, UniformInfo& _info) )
+ {
+ BGFX_CHECK_HANDLE("getUniformInfo", m_uniformHandle, _handle);
+
+ UniformRef& uniform = m_uniformRef[_handle.idx];
+ bx::strlcpy(_info.name, uniform.m_name.getPtr(), sizeof(_info.name) );
+ _info.type = uniform.m_type;
+ _info.num = uniform.m_num;
+ }
+
BGFX_API_FUNC(void destroyUniform(UniformHandle _handle) )
{
BGFX_CHECK_HANDLE("destroyUniform", m_uniformHandle, _handle);
@@ -3505,12 +3558,14 @@ namespace bgfx
if (0 == refs)
{
+ bool ok = m_submit->free(_handle); BX_UNUSED(ok);
+ BX_CHECK(ok, "Uniform handle %d is already destroyed!", _handle.idx);
+
uniform.m_name.clear();
m_uniformHashMap.removeByHandle(_handle.idx);
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyUniform);
cmdbuf.write(_handle);
- m_submit->free(_handle);
}
}
@@ -3668,15 +3723,15 @@ namespace bgfx
setViewScissor(_id, 0, 0, 0, 0);
setViewClear(_id, BGFX_CLEAR_NONE, 0, 0.0f, 0);
setViewSeq(_id, false);
- bgfx::FrameBufferHandle invalid = BGFX_INVALID_HANDLE;
+ FrameBufferHandle invalid = BGFX_INVALID_HANDLE;
setViewFrameBuffer(_id, invalid);
setViewTransform(_id, NULL, NULL, BGFX_VIEW_NONE, NULL);
}
- BGFX_API_FUNC(void setViewRemap(uint8_t _id, uint8_t _num, const void* _remap) )
+ BGFX_API_FUNC(void setViewOrder(uint8_t _id, uint8_t _num, const void* _order) )
{
const uint32_t num = bx::uint32_min(_id + _num, BGFX_CONFIG_MAX_VIEWS) - _id;
- if (NULL == _remap)
+ if (NULL == _order)
{
for (uint32_t ii = 0; ii < num; ++ii)
{
@@ -3686,7 +3741,7 @@ namespace bgfx
}
else
{
- memcpy(&m_viewRemap[_id], _remap, num);
+ memcpy(&m_viewRemap[_id], _order, num);
}
}
@@ -3823,21 +3878,6 @@ namespace bgfx
m_submit->setTexture(_stage, _sampler, _handle, _flags);
}
- BGFX_API_FUNC(void setTexture(uint8_t _stage, UniformHandle _sampler, FrameBufferHandle _handle, uint8_t _attachment, uint32_t _flags) )
- {
- BGFX_CHECK_HANDLE_INVALID_OK("setTexture/FrameBufferHandle", m_frameBufferHandle, _handle);
- TextureHandle textureHandle = BGFX_INVALID_HANDLE;
- if (isValid(_handle) )
- {
- const FrameBufferRef& ref = m_frameBufferRef[_handle.idx];
- BX_CHECK(!ref.m_window, "Can't sample window frame buffer.");
- textureHandle = ref.un.m_th[_attachment];
- BX_CHECK(isValid(textureHandle), "Frame buffer texture %d is invalid.", _attachment);
- }
-
- m_submit->setTexture(_stage, _sampler, textureHandle, _flags);
- }
-
BGFX_API_FUNC(uint32_t submit(uint8_t _id, ProgramHandle _program, OcclusionQueryHandle _occlusionQuery, int32_t _depth, bool _preserveState) )
{
BGFX_CHECK_HANDLE_INVALID_OK("submit", m_programHandle, _program);
@@ -3915,20 +3955,6 @@ namespace bgfx
m_submit->setImage(_stage, _sampler, _handle, _mip, _access, _format);
}
- BGFX_API_FUNC(void setImage(uint8_t _stage, UniformHandle _sampler, FrameBufferHandle _handle, uint8_t _attachment, Access::Enum _access, TextureFormat::Enum _format) )
- {
- TextureHandle textureHandle = BGFX_INVALID_HANDLE;
- if (isValid(_handle) )
- {
- const FrameBufferRef& ref = m_frameBufferRef[_handle.idx];
- BX_CHECK(!ref.m_window, "Can't sample window frame buffer.");
- textureHandle = ref.un.m_th[_attachment];
- BX_CHECK(isValid(textureHandle), "Frame buffer texture %d is invalid.", _attachment);
- }
-
- setImage(_stage, _sampler, textureHandle, 0, _access, _format);
- }
-
BGFX_API_FUNC(uint32_t dispatch(uint8_t _id, ProgramHandle _handle, uint16_t _numX, uint16_t _numY, uint16_t _numZ, uint8_t _flags) )
{
if (BX_ENABLED(BGFX_CONFIG_DEBUG_UNIFORM) )
@@ -3969,15 +3995,6 @@ namespace bgfx
m_submit->blit(_id, _dst, _dstMip, _dstX, _dstY, _dstZ, _src, _srcMip, _srcX, _srcY, _srcZ, _width, _height, _depth);
}
- BGFX_API_FUNC(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) )
- {
- const FrameBufferRef& ref = m_frameBufferRef[_src.idx];
- BX_CHECK(!ref.m_window, "Can't sample window frame buffer.");
- TextureHandle textureHandle = ref.un.m_th[_attachment];
- BX_CHECK(isValid(textureHandle), "Frame buffer texture %d is invalid.", _attachment);
- blit(_id, _dst, _dstMip, _dstX, _dstY, _dstZ, textureHandle, _srcMip, _srcX, _srcY, _srcZ, _width, _height, _depth);
- }
-
BGFX_API_FUNC(uint32_t frame(bool _capture = false) );
void dumpViewStats();
@@ -3993,7 +4010,7 @@ namespace bgfx
void rendererExecCommands(CommandBuffer& _cmdbuf);
#if BGFX_CONFIG_MULTITHREADED
- void gameSemPost()
+ void apiSemPost()
{
if (!m_singleThreaded)
{
@@ -4046,7 +4063,7 @@ namespace bgfx
bx::Semaphore m_apiSem;
bx::Thread m_thread;
#else
- void gameSemPost()
+ void apiSemPost()
{
}
@@ -4188,6 +4205,7 @@ namespace bgfx
bool m_exit;
bool m_flipAfterRender;
bool m_singleThreaded;
+ bool m_flipped;
typedef UpdateBatchT<256> TextureUpdateBatch;
BX_ALIGN_DECL_CACHE_LINE(TextureUpdateBatch m_textureUpdateBatch);