Я использую вычислительный шейдер OpenGL для обработки изображения, шейдер копирует только исходную текстуру в целевую текстуру.
В первом тесте исходная и целевая текстуры оба BGR8 , во втором тесте они оба R8 .
Объем памяти текстур в оттенках серого примерно в 4 раза меньше цветовой текстуры, поэтому я ожидаю получить 4x скорость во втором тесте. тем не менее, я получаю только 1.5x прирост скорости .
Кто-нибудь может сказать мне, если что-то не так?
прикрепить код, в первый раз обе текстуры используют .bgra8Unorm, во второй раз использовать .r8Unorm,
kernel void
copyKernel(texture2d<half, access::read> inTexture [[texture(0)]],
texture2d<half, access::write> outTexture [[texture(1)]],
uint2 gid [[thread_position_in_grid]]) {
half4 inColor = inTexture.read(gid);
outTexture.write(inColor, gid);
}