In GPUSkinCache, based on the conditional expression:
if (CacheCurrentFloatOffset + NumRWFloats > (uint32)GGPUSkinCacheBufferSize) { // Can't fit this INC_DWORD_STAT(STAT_GPUSkinCache_SkippedForMemory); return -1; }
the licensee is stating that it is possible for skinning to execute even though there is no space the result.
They suggest replacing the code with:
if ((CacheCurrentFloatOffset + NumRWFloats) * sizeof(float) > SkinCacheBuffer[UAVIndex].NumBytes)
if (CacheCurrentFloatOffset + NumRWFloats > (uint32)GGPUSkinCacheBufferSize) { // Can't fit this INC_DWORD_STAT(STAT_GPUSkinCache_SkippedForMemory); return -1; }
if ((CacheCurrentFloatOffset + NumRWFloats) * sizeof(float) > SkinCacheBuffer[UAVIndex].NumBytes)
Result: The licensee suggests this code would prevent the buffer overrun.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-38321 in the post.
1 |
Component | UE - Graphics Features |
---|---|
Affects Versions | 4.12, 4.13, 4.14 |
Target Fix | 4.22 |
Created | Nov 7, 2016 |
---|---|
Resolved | Dec 10, 2018 |
Updated | Jan 31, 2019 |