Ver código fonte

Merge branch 'master' of github.com:bkaradzic/bgfx

Branimir Karadžić 7 anos atrás
pai
commit
d5bb855304
2 arquivos alterados com 29 adições e 10 exclusões
  1. 22 10
      src/bgfx_compute.sh
  2. 7 0
      src/bgfx_p.h

+ 22 - 10
src/bgfx_compute.sh

@@ -51,6 +51,14 @@
 
 
 #define NUM_THREADS(_x, _y, _z) layout (local_size_x = _x, local_size_y = _y, local_size_z = _z) in;
 #define NUM_THREADS(_x, _y, _z) layout (local_size_x = _x, local_size_y = _y, local_size_z = _z) in;
 
 
+#define atomicFetchAndAdd(_mem, _data, _original)      _original = atomicAdd(_mem, _data)
+#define atomicFetchAndAnd(_mem, _data, _original)      _original = atomicAnd(_mem, _data)
+#define atomicFetchAndMax(_mem, _data, _original)      _original = atomicMax(_mem, _data)
+#define atomicFetchAndMin(_mem, _data, _original)      _original = atomicMin(_mem, _data)
+#define atomicFetchAndOr(_mem, _data, _original)       _original = atomicOrnterlockedOr(_mem, _data)
+#define atomicFetchAndXor(_mem, _data, _original)      _original = atomicXor(_mem, _data)
+#define atomicFetchAndExchange(_mem, _data, _original) _original = atomicExchange(_mem, _data)
+
 #else
 #else
 
 
 #define SHARED groupshared
 #define SHARED groupshared
@@ -251,16 +259,20 @@ __IMAGE_IMPL_A(r32ui,       x,    uvec4, xxxx)
 __IMAGE_IMPL_A(rg32ui,      xy,   uvec4, xyyy)
 __IMAGE_IMPL_A(rg32ui,      xy,   uvec4, xyyy)
 __IMAGE_IMPL_A(rgba32ui,    xyzw, uvec4, xyzw)
 __IMAGE_IMPL_A(rgba32ui,    xyzw, uvec4, xyzw)
 
 
-#define atomicAdd(_mem, _data)      InterlockedAdd(_mem, _data)
-#define atomicAnd(_mem, _data)      InterlockedAnd(_mem, _data)
-#define atomicExchange(_mem, _data) InterlockedExchange(_mem, _data)
-#define atomicMax(_mem, _data)      InterlockedMax(_mem, _data)
-#define atomicMin(_mem, _data)      InterlockedMin(_mem, _data)
-#define atomicOr(_mem, _data)       InterlockedOr(_mem, _data)
-#define atomicXor(_mem, _data)      InterlockedXor(_mem, _data)
-
-#define atomicCompSwap(_mem, _compare, _data) \
-	InterlockedCompareExchange(_mem,_compare, _data)
+#define atomicAdd(_mem, _data)                         InterlockedAdd(_mem, _data)
+#define atomicAnd(_mem, _data)                         InterlockedAnd(_mem, _data)
+#define atomicMax(_mem, _data)                         InterlockedMax(_mem, _data)
+#define atomicMin(_mem, _data)                         InterlockedMin(_mem, _data)
+#define atomicOr(_mem,  _data)                         InterlockedOr(_mem, _data)
+#define atomicXor(_mem, _data)                         InterlockedXor(_mem, _data)
+#define atomicFetchAndAdd(_mem, _data, _original)      InterlockedAdd(_mem, _data, _original)
+#define atomicFetchAndAnd(_mem, _data, _original)      InterlockedAnd(_mem, _data, _original)
+#define atomicFetchAndMax(_mem, _data, _original)      InterlockedMax(_mem, _data, _original)
+#define atomicFetchAndMin(_mem, _data, _original)      InterlockedMin(_mem, _data, _original)
+#define atomicFetchAndOr(_mem, _data, _original)       InterlockedOr(_mem, _data, _original)
+#define atomicFetchAndXor(_mem, _data, _original)      InterlockedXor(_mem, _data, _original)
+#define atomicFetchAndExchange(_mem, _data, _original) InterlockedExchange(_mem, _data, _original)
+#define atomicCompSwap(_mem, _compare, _data)          InterlockedCompareExchange(_mem,_compare, _data)
 
 
 // InterlockedCompareStore
 // InterlockedCompareStore
 
 

+ 7 - 0
src/bgfx_p.h

@@ -2998,6 +2998,9 @@ namespace bgfx
 					return handle;
 					return handle;
 				}
 				}
 
 
+				IndexBuffer& ib = m_indexBuffers[indexBufferHandle.idx];
+				ib.m_size = size;
+
 				CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::CreateDynamicIndexBuffer);
 				CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::CreateDynamicIndexBuffer);
 				cmdbuf.write(indexBufferHandle);
 				cmdbuf.write(indexBufferHandle);
 				cmdbuf.write(size);
 				cmdbuf.write(size);
@@ -3170,6 +3173,10 @@ namespace bgfx
 					return handle;
 					return handle;
 				}
 				}
 
 
+				VertexBuffer& vb = m_vertexBuffers[vertexBufferHandle.idx];
+				vb.m_size   = size;
+				vb.m_stride = 0;
+
 				CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::CreateDynamicVertexBuffer);
 				CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::CreateDynamicVertexBuffer);
 				cmdbuf.write(vertexBufferHandle);
 				cmdbuf.write(vertexBufferHandle);
 				cmdbuf.write(size);
 				cmdbuf.write(size);