Browse Source

Added ability to bind static index buffer to compute.

Branimir Karadžić 11 years ago
parent
commit
a038b6d426
7 changed files with 17 additions and 13 deletions
  1. 1 1
      include/bgfx.h
  2. 7 4
      src/bgfx.cpp
  3. 4 3
      src/bgfx_p.h
  4. 2 2
      src/renderer_d3d11.cpp
  5. 1 1
      src/renderer_d3d9.cpp
  6. 1 1
      src/renderer_gl.cpp
  7. 1 1
      src/renderer_null.cpp

+ 1 - 1
include/bgfx.h

@@ -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);

+ 7 - 4
src/bgfx.cpp

@@ -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)

+ 4 - 3
src/bgfx_p.h

@@ -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];

+ 2 - 2
src/renderer_d3d11.cpp

@@ -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

+ 1 - 1
src/renderer_d3d9.cpp

@@ -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);
 		}

+ 1 - 1
src/renderer_gl.cpp

@@ -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);
 		}

+ 1 - 1
src/renderer_null.cpp

@@ -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
 		{
 		}