P4 to Git Change 1102328 by gandryey@gera-dev-w7 on 2014/12/03 18:56:06
EPR #410736 - [CQE OCL][ISV][QR][G] FFMPEG app generating corrupted video output; Faulty CL:1101352 - Add detection for AHP allocation. FFmpeg uses AHP allocations with CL_MAP_READ flag, but actually performs CPU write into the buffer. With indirect map runtime executes useless transfer on map and doesn't write updated memory on unmap, because a wrong flag sent by the app. Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.cpp#113 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.hpp#44 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#341 edit ... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/perf/TestList.cpp#40 edit
This commit is contained in:
@@ -1091,9 +1091,7 @@ VirtualGPU::submitMapMemory(amd::MapMemoryCommand& vcmd)
|
||||
|
||||
// If we have host memory, use it
|
||||
if ((memory->owner()->getHostMem() != NULL) &&
|
||||
(memory->isCacheable() ||
|
||||
!memory->isHostMemDirectAccess() ||
|
||||
!(vcmd.mapFlags() & CL_MAP_READ))) {
|
||||
memory->isDirectMap(vcmd.mapFlags())) {
|
||||
if (!memory->isHostMemDirectAccess()) {
|
||||
// Make sure GPU finished operation before
|
||||
// synchronization with the backing store
|
||||
@@ -1179,9 +1177,7 @@ VirtualGPU::submitUnmapMemory(amd::UnmapMemoryCommand& vcmd)
|
||||
|
||||
// We used host memory
|
||||
if ((owner->getHostMem() != NULL) &&
|
||||
(memory->isCacheable() ||
|
||||
!memory->isHostMemDirectAccess() ||
|
||||
!memory->isUnmapRead())) {
|
||||
memory->isDirectMap(memory->isUnmapRead() ? CL_MAP_READ : 0)) {
|
||||
if (memory->isUnmapWrite()) {
|
||||
// Target is the backing store, so sync
|
||||
owner->signalWrite(NULL);
|
||||
|
||||
Reference in New Issue
Block a user