コード例 #1
0
ファイル: StreamBuffer.cpp プロジェクト: Catnips/dolphin
	PinnedMemory(u32 type, u32 size) : StreamBuffer(type, size) {
		CreateFences();
		m_pointer = (u8*)AllocateAlignedMemory(ROUND_UP(m_size,ALIGN_PINNED_MEMORY), ALIGN_PINNED_MEMORY );
		glBindBuffer(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, m_buffer);
		glBufferData(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, ROUND_UP(m_size,ALIGN_PINNED_MEMORY), m_pointer, GL_STREAM_COPY);
		glBindBuffer(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, 0);
		glBindBuffer(m_buffertype, m_buffer);
	}
コード例 #2
0
ファイル: StreamBuffer.cpp プロジェクト: Tinob/Ishiiruka
 PinnedMemory(u32 type, u32 size) : StreamBuffer(type, size, ALIGN_PINNED_MEMORY)
 {
   CreateFences();
   m_pointer = static_cast<u8*>(Common::AllocateAlignedMemory(m_size, ALIGN_PINNED_MEMORY));
   glBindBuffer(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, m_buffer);
   glBufferData(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, m_size, m_pointer, GL_STREAM_COPY);
   glBindBuffer(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, 0);
   glBindBuffer(m_buffertype, m_buffer);
 }
コード例 #3
0
ファイル: StreamBuffer.cpp プロジェクト: Catnips/dolphin
	BufferStorage(u32 type, u32 size) : StreamBuffer(type, size) {
		CreateFences();
		glBindBuffer(m_buffertype, m_buffer);

		// PERSISTANT_BIT to make sure that the buffer can be used while mapped
		// COHERENT_BIT is set so we don't have to use a MemoryBarrier on write
		// CLIENT_STORAGE_BIT is set since we access the buffer more frequently on the client side then server side
		glBufferStorage(m_buffertype, m_size, nullptr,
			GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT);
		m_pointer = (u8*)glMapBufferRange(m_buffertype, 0, m_size,
			GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_FLUSH_EXPLICIT_BIT);
	}
コード例 #4
0
ファイル: StreamBuffer.cpp プロジェクト: delroth/dolphin
 MapAndSync(u32 type, u32 size) : StreamBuffer(type, size)
 {
   CreateFences();
   glBindBuffer(m_buffertype, m_buffer);
   glBufferData(m_buffertype, m_size, nullptr, GL_STREAM_DRAW);
 }