2017-03-27 2 views
0

vulkan API에서 계산 쉐이더로 계산 된 일부 데이터처럼 gpu 메모리에서 데이터를 읽을 수있는 방법은 무엇입니까?memcpy를 사용하지 않고 gpu 메모리에서 데이터를 읽는 방법?

+0

일반적으로 하나는'vkCmdCopy *'와'vkMapMemory'를 사용합니다. 지금까지 뭐 해봤 어? – krOoze

+0

나는'vkMapMemory'를 사용하여 devicememory에서 데이터를 읽은 다음'memcpy' 복사 데이터를 사용합니다. 그러나 매우 느립니다. – hlh077l

+1

아, 그러면 안됩니다. 당신은 이미 당신이 직접 사용할 수있는'vkMapMemory'를 가진 raw 포인터를 받았습니다. – krOoze

답변

2

먼저 계산 호출과 관련된 펜스를 대기합니다. 그런 다음 결과를 쓴 메모리를 매핑하고 메모리가 일관성이 없으면 범위를 무효화해야합니다.

매핑 작업에서 가져온 포인터에서 데이터를 읽습니다.

+0

예, 이전에 사용했던 단어는 사용했지만 맵핑 작업에서 가져온 포인터에서 'memcpy' 복사 데이터를 사용합니다. 매우 느립니다. 'memcpy (kernel_Data.out_data, kernelBuff.outBuf.mapped, outSize * sizeof (float)); ' – hlh077l

+1

@ hlh077l 더 나은 호스트 액세스로 다른 메모리 풀에 버퍼 복사를 시도 할 수 있습니다. 로컬 장치가 아니며 호스트 캐시가되는 것이 좋습니다. –

관련 문제