Part of the Khronos Group

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 1 of 1

Thread: why are there only single channel atomics?

  1. #1
    Junior Member Newbie
    Join Date
    Feb 2012

    why are there only single channel atomics?

    Hi all,

    As you may have already guessed, what my question is:
    Why are imageAtomic operations only defined for single channel data (int, uint, float)? I'm not an hardware expert, but from my naive view, I don't see a reason for this.
    To make my point a bit more clear:
    I'm particularly interested in something like: imageAtomicAdd(img, iCoord, ivec4(data));
    However, I do not necessarily expect, that ALL components are read/written in one atomic. I would be totally satisfied, if each of the components are changed within an atomic.
    Maybe calling those functions like the others imageAtomicAdd(img, iCoord, ivec4(data)); would be confusing. But also an additional "component" index like: imageAtomicAdd(img, iCoord, component, data); would be enough.
    As I don't know, how the atomic is realized in hardware, from my point of view, it would even be ok, if the entire texel is locked, although I'm only accessing a single component.
    -> Everybody, who uses atomics shouldn't expect best performance anyway, but maybe the API should give the user the ability to sacrifice some performance for more correctness.

    Is there a way to use an additional img as guard/mutex? Something like:
    while(0 != imageAtomicCompSwap(mutexImg, texel, 0, 1)); // busy wait
    // in mutex
    data = imageLoad(img, texel, ...);
    imageStore(img, texel, ...);
    memoryBarrierImage(); // eehm, possible at all?
    imageStore(mutexImg, texel, 0);

    I think the problem is, how to make sure that shader invocations see the store of img AFTER the store of mutexImg.
    Any other suggestions?

    Last edited by Ambator; 09-26-2012 at 06:48 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts