void MemoryDebugger::clean(void)
{
 if (_CleanAllowed && (_size() < _capacity() / 2))
 {
  _reserve(_size() + 16);
 }
}
bool HostReflectionHost::HostQueue::pull(void* data, size_t size)
{
    if(size > _used()) return false;

    report("   pulling " << size << " bytes from gpu->cpu queue (" << _used()
           << " used, " << _capacity() << " remaining, " << this->size()
           << " size)");

    _metadata->tail = _read(data, size);

    report("    after pull (" << _used()
           << " used, " << _capacity() << " remaining, " << this->size()
           << " size)");

    return true;
}
bool HostReflectionHost::HostQueue::push(const void* data, size_t size)
{
    assert(size < this->size());

    if(size > _capacity()) return false;

    size_t end  = _metadata->size;
    size_t head = _metadata->head;

    size_t remainder = end - head;
    size_t firstCopy = std::min(remainder, size);

    std::memcpy(_metadata->hostBegin + head, data, firstCopy);

    bool secondCopyNecessary = firstCopy != size;

    size_t secondCopy = secondCopyNecessary ? size - firstCopy : 0;

    std::memcpy(_metadata->hostBegin, (char*)data + firstCopy, secondCopy);
    _metadata->head = secondCopyNecessary ? secondCopy : head + firstCopy;

    return true;
}
unsigned int MemoryDebugger::getOverhead(void)
{
 return _capacity() * sizeof(MemoryAllocation);
}
void MemoryDebugger::_reserve(unsigned int new_size)
{
 if (_capacity() >= new_size)
  return;
 _resize(new_size);
}
Example #6
0
	void set_capacity(size_t c) {
		_capacity(c);
	}