Added ability to bind static index buffer to compute.

This commit is contained in:
Branimir Karadžić 2015-01-10 20:56:38 -08:00
parent ef05e607d6
commit a038b6d426
7 changed files with 17 additions and 13 deletions

View file

@ -615,7 +615,7 @@ namespace bgfx
/// @remarks
/// Only 16-bit index buffer is supported.
///
IndexBufferHandle createIndexBuffer(const Memory* _mem);
IndexBufferHandle createIndexBuffer(const Memory* _mem, uint8_t _flags = BGFX_BUFFER_COMPUTE_NONE);
/// Destroy static index buffer.
void destroyIndexBuffer(IndexBufferHandle _handle);

View file

@ -1477,7 +1477,7 @@ again:
m_renderCtx = NULL;
m_exit = true;
}
// fallthrough
// fall through
case CommandBuffer::End:
end = true;
@ -1491,7 +1491,10 @@ again:
Memory* mem;
_cmdbuf.read(mem);
m_renderCtx->createIndexBuffer(handle, mem);
uint8_t flags;
_cmdbuf.read(flags);
m_renderCtx->createIndexBuffer(handle, mem, flags);
release(mem);
}
@ -2062,11 +2065,11 @@ again:
s_ctx->dbgTextImage(_x, _y, _width, _height, _data, _pitch);
}
IndexBufferHandle createIndexBuffer(const Memory* _mem)
IndexBufferHandle createIndexBuffer(const Memory* _mem, uint8_t _flags)
{
BGFX_CHECK_MAIN_THREAD();
BX_CHECK(NULL != _mem, "_mem can't be NULL");
return s_ctx->createIndexBuffer(_mem);
return s_ctx->createIndexBuffer(_mem, _flags);
}
void destroyIndexBuffer(IndexBufferHandle _handle)

View file

@ -1784,7 +1784,7 @@ namespace bgfx
virtual RendererType::Enum getRendererType() const = 0;
virtual const char* getRendererName() const = 0;
virtual void flip() = 0;
virtual void createIndexBuffer(IndexBufferHandle _handle, Memory* _mem) = 0;
virtual void createIndexBuffer(IndexBufferHandle _handle, Memory* _mem, uint8_t _flags) = 0;
virtual void destroyIndexBuffer(IndexBufferHandle _handle) = 0;
virtual void createVertexDecl(VertexDeclHandle _handle, const VertexDecl& _decl) = 0;
virtual void destroyVertexDecl(VertexDeclHandle _handle) = 0;
@ -1914,7 +1914,7 @@ namespace bgfx
return NULL;
}
BGFX_API_FUNC(IndexBufferHandle createIndexBuffer(const Memory* _mem) )
BGFX_API_FUNC(IndexBufferHandle createIndexBuffer(const Memory* _mem, uint8_t _flags) )
{
IndexBufferHandle handle = { m_indexBufferHandle.alloc() };
@ -1924,6 +1924,7 @@ namespace bgfx
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::CreateIndexBuffer);
cmdbuf.write(handle);
cmdbuf.write(_mem);
cmdbuf.write(_flags);
}
return handle;
@ -2215,7 +2216,7 @@ namespace bgfx
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::CreateDynamicIndexBuffer);
cmdbuf.write(handle);
cmdbuf.write(_size);
cmdbuf.write(BGFX_BUFFER_COMPUTE_NONE);
cmdbuf.write(uint8_t(BGFX_BUFFER_COMPUTE_NONE) );
ib = (TransientIndexBuffer*)BX_ALLOC(g_allocator, sizeof(TransientIndexBuffer)+_size);
ib->data = (uint8_t*)&ib[1];

View file

@ -762,9 +762,9 @@ namespace bgfx
return BGFX_RENDERER_DIRECT3D11_NAME;
}
void createIndexBuffer(IndexBufferHandle _handle, Memory* _mem) BX_OVERRIDE
void createIndexBuffer(IndexBufferHandle _handle, Memory* _mem, uint8_t _flags) BX_OVERRIDE
{
m_indexBuffers[_handle.idx].create(_mem->size, _mem->data, BGFX_BUFFER_COMPUTE_NONE);
m_indexBuffers[_handle.idx].create(_mem->size, _mem->data, _flags);
}
void destroyIndexBuffer(IndexBufferHandle _handle) BX_OVERRIDE

View file

@ -640,7 +640,7 @@ namespace bgfx
return BGFX_RENDERER_DIRECT3D9_NAME;
}
void createIndexBuffer(IndexBufferHandle _handle, Memory* _mem) BX_OVERRIDE
void createIndexBuffer(IndexBufferHandle _handle, Memory* _mem, uint8_t /*_flags*/) BX_OVERRIDE
{
m_indexBuffers[_handle.idx].create(_mem->size, _mem->data);
}

View file

@ -1438,7 +1438,7 @@ namespace bgfx
}
}
void createIndexBuffer(IndexBufferHandle _handle, Memory* _mem) BX_OVERRIDE
void createIndexBuffer(IndexBufferHandle _handle, Memory* _mem, uint8_t /*_flags*/) BX_OVERRIDE
{
m_indexBuffers[_handle.idx].create(_mem->size, _mem->data);
}

View file

@ -33,7 +33,7 @@ namespace bgfx
{
}
void createIndexBuffer(IndexBufferHandle /*_handle*/, Memory* /*_mem*/) BX_OVERRIDE
void createIndexBuffer(IndexBufferHandle /*_handle*/, Memory* /*_mem*/, uint8_t /*_flags*/) BX_OVERRIDE
{
}