I want use Metal kernel function to calculate histogram of a video frame(texture)
some code in kernel function like this
it works, but there was some mistake, I sum up every item value in array histogram, the sum result is not equals to my texture pixel count. it's always less than total pixel count. so I think there must be a multi-thread sync problem.
so how could I sync the kernel function?
I know MPS provided a MPSImageHistogram to do this, It works well, I just want to calculate histogram on my pipeline.
Thanks
some code in kernel function like this
Code Block float gray = grayScale(rgbValue); int histogramIndex = int(clamp(gray, 0.0, 1.0) * 255); histogram[histogramIndex] += 1;
it works, but there was some mistake, I sum up every item value in array histogram, the sum result is not equals to my texture pixel count. it's always less than total pixel count. so I think there must be a multi-thread sync problem.
so how could I sync the kernel function?
I know MPS provided a MPSImageHistogram to do this, It works well, I just want to calculate histogram on my pipeline.
Thanks