[Mesa-dev] [PATCH 08/17] tgsi/ureg: add shared variables support for compute shaders

Marek Olšák maraeo at gmail.com
Tue Jan 26 12:23:51 PST 2016


On Tue, Jan 26, 2016 at 3:12 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Tue, Jan 26, 2016 at 8:57 AM, Marek Olšák <maraeo at gmail.com> wrote:
>> On Tue, Jan 26, 2016 at 2:25 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>> I'd be fine with a new TGSI_FILE_MEMORY which provided options for
>>> shared, global, and local(/private?) memory. I believe the old
>>> TGSI_FILE_RESOURCE had support for these in a hacky way, this would be
>>> the clean way of doing it.
>>
>> I think they mean:
>> global = global shared memory
>> local = shared within a thread group (GL "shared memory")
>> private = ???
>
> memory that is local to a thread.
>
>>
>> ureg_DECL_local_temporary seems like a good match. I'd prefer to have
>> a separate file though.
>>
>> Shared memory is the same as TEMPs, except that they are TEMPs shared
>> within a thread group.
>
> It's much more of a memory area than a TEMP area though. TEMP's imply
> 16-byte wide stride for indirect indexing, etc -- not easy to work
> with.

Yeah, TGSI implies that. If you want just loads, stores, and atomics
without declarations, you can add TGSI_FILE_SHARED. If drivers get
instructions with TGSI_FILE_SHARED in the resource operand, they can
just assume it's a load/store/atomic on the shared memory. For
example:

LOAD TEMP[0], SHARED, address

Note that I deliberately didn't type "SHARED[0]" to show that the
index should be ignored.

In order to prevent confusion, please try to avoid using the word
"memory" without the word "shared", because shared memory is not a
typical memory resource. It's actually closer to registers in my
opinion.

Marek


More information about the mesa-dev mailing list