<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/spirv/coherent-2.slang, branch master</title>
<subtitle>Making it easier to work with shaders</subtitle>
<id>https://git.yummers.dev/slang.git/atom?h=master</id>
<link rel='self' href='https://git.yummers.dev/slang.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/'/>
<updated>2025-05-17T02:26:44+00:00</updated>
<entry>
<title>Support Vulkan memory model (#7057)</title>
<updated>2025-05-17T02:26:44+00:00</updated>
<author>
<name>Jay Kwak</name>
<email>82421531+jkwak-work@users.noreply.github.com</email>
</author>
<published>2025-05-17T02:26:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=d58243d9041947c99f18b82385e62c082507decb'/>
<id>urn:sha1:d58243d9041947c99f18b82385e62c082507decb</id>
<content type='text'>
The user can explicitly use Vulkan memory model, or it will be
automatically used when cooperative-matrix is used.

When vulkan memory model is used, two keywords, "Coherent" and
"Volatile", are not allowed.

There are many differences regarding atomic and texture but
this PR has changes limited to support `globallycoherent`
keyword. When variables with `globallycoherent` is used with `OpLoad`, it
will use additional options, `MakePointerAvailable|NonPrivatePointer`,
that will provide the same effect. For `OpStore`, it will use
`MakePointerVisible|NonPrivatePointer`.
</content>
</entry>
<entry>
<title>Enable NonUniformResourceIndex support for glsl, hlsl and spirv (#3899)</title>
<updated>2024-04-19T16:12:56+00:00</updated>
<author>
<name>sriramm-nv</name>
<email>85252063+sriramm-nv@users.noreply.github.com</email>
</author>
<published>2024-04-19T16:12:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=7c162eba5329eae7755e55298a455a144fcb0dce'/>
<id>urn:sha1:7c162eba5329eae7755e55298a455a144fcb0dce</id>
<content type='text'>
Fixes #387676* ForceInline SampleLevel to allow decorations to apply

* explictly add all the SPIRVAsmOperand Insts in non-differentiable list, which might get inadvertently processed when these functions are inlined into the main shader

* Support NonUniformResourceIndex for SPIR-V target

Fixes #3876

* add a new IR instruction for NonUniformResourceIndex

* slang ir emitter for nonuniform resource index

* update the hlsl meta slang

* Add test cases for NonUniformResourceIndex access for buffers and textures, with/without cast, nested access etc.

* add default c-like emitter for nonuniformresourceinfo

* added hlsl emitter

* added glsl emitter

* requisites for spirv enabling

- new decorator for nonuniformresourceindex
- emitter for nonuniformresourceindex signature change

* add hasResourceType checker

* add rwStructBuffType in resourcetype checker

* add a case for nonuniformres in emitDecorations

* DO NOT COMMIT: This change adds special handling for RWStructBuf within the isResourceType function, if it is a pointer to this resource, return true to make it work with nonuniformres test

* spirv emitter for decorations - update the emitLocalInst to perform decorations at the end

* added main spirv emitter code

* slang emit spirv bugfix

* hacky way of supporting Call Inst

* move code to cleanup nonuniform inst into helper function

* remove stale codefrom test

* add spirv decoration for nonuniform

* update test to remove global variables

* update coherent-2 test

* update comment for special handling

* update the spirv legalize to handle nested nonuniforms

improved logic that handles call ops, rwstructbuf, nested nonuniforms
etc.

* update nonuniform-array-of-tex test

* missed removing nonuniform inst causing duplicate decorations

* add glsl and hlsl variants of nonuniform tests

* repurpose the hasResource function into something specific for nonuniform inst decoration helper

* clean up comments and code around spirv-legalization to emit nonuniform inst by recursively looking into the inst

* use the helper canDecorateNonUniformInst to convert `nonUniformResourceInfo` inst to decoration

* converted compute/unbounded-array-of-array cross compile test into a simple check test

* update contains Resource helper function to be more generic

* clean up the case for opcall handling with nonuniform resource inst

* update ptr to struct buffer check to be more explicit and rename the function to check for ptr to resource type

* update comments and fix the test for coherent

* fix typos

* update logic on spirv legalize to delete dead instructions - for some reason this doesn't automatically happen

* add comments to declarations

* add NonuniformResourceIndex to the non-differential inst list</content>
</entry>
<entry>
<title>[SPIRV] Support `globallycoherent` and `[vk::index()]`. (#3488)</title>
<updated>2024-01-24T23:36:49+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2024-01-24T23:36:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=e7b6de334f320429462a0257e2191ccf3cbc9a0d'/>
<id>urn:sha1:e7b6de334f320429462a0257e2191ccf3cbc9a0d</id>
<content type='text'>
* [SPIRV] Support `globallycoherent` modifier.

* Fix.

* Disable executable cooperative vector tests.

* Update expected failure.

* [SPIRV] Emit varying output index decoration.

* Add test.

* Update tests.

* Fix test.

* Emit `SpvExecutionModeEarlyFragmentTests`.

* Lower `StructuredBuffer&lt;bool&gt;`.

* Support globallycoherent on ByteAddressBuffer.

---------

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
</feed>
