<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/language-feature/higher-order-functions, 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-08-07T15:10:02+00:00</updated>
<entry>
<title>Support `expand` on concrete tuple values. (#8106)</title>
<updated>2025-08-07T15:10:02+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2025-08-07T15:10:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=7cd8130e1a3dbcca8746e0577fb8df3bf2975bf8'/>
<id>urn:sha1:7cd8130e1a3dbcca8746e0577fb8df3bf2975bf8</id>
<content type='text'>
Closes #8061.

Along with the fix, also enhanced coercion/overload resolution to filter
candidates based on the target type, allowing
`tests\language-feature\higher-order-functions\overloaded.slang` to
pass.</content>
</entry>
<entry>
<title>Enable a bunch of WGPU tests (#5513)</title>
<updated>2024-11-07T10:49:23+00:00</updated>
<author>
<name>Anders Leino</name>
<email>aleino@nvidia.com</email>
</author>
<published>2024-11-07T10:49:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=43df1da01463beb53d1483d152f55c6c48feb9c4'/>
<id>urn:sha1:43df1da01463beb53d1483d152f55c6c48feb9c4</id>
<content type='text'>
This closes issue #5505.</content>
</entry>
<entry>
<title>Enable WebGPU tests in CI (#5239)</title>
<updated>2024-10-15T16:11:53+00:00</updated>
<author>
<name>Anders Leino</name>
<email>aleino@nvidia.com</email>
</author>
<published>2024-10-15T16:11:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=9e3b0367cfd63f21a0519b61b6fd13e94dac1c51'/>
<id>urn:sha1:9e3b0367cfd63f21a0519b61b6fd13e94dac1c51</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement for metal `SV_GroupIndex` (#4385)</title>
<updated>2024-06-14T05:29:35+00:00</updated>
<author>
<name>ArielG-NV</name>
<email>159081215+ArielG-NV@users.noreply.github.com</email>
</author>
<published>2024-06-14T05:29:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=2cc96907e4152291e0b6bca78a0bfbc69ddb8839'/>
<id>urn:sha1:2cc96907e4152291e0b6bca78a0bfbc69ddb8839</id>
<content type='text'>
* Implement for metal `SV_GroupIndex`

 1. If we don't have `sv_GroupThreadId` available we create one using `SV_GroupIndex`s location data.
 2. We emit code emulating `sv_GroupThreadId` from the same logic that CUDA/CPP uses.

* address most review comments

Addressed all but two: [1](https://github.com/shader-slang/slang/pull/4385#discussion_r1639058473) and [2](https://github.com/shader-slang/slang/pull/4385#issuecomment-2166934855)

I want to enable tests and be sure there is no bugs using CI before I redesign the code so I have a working fallback.

* address comment, enable tests

enable now functioning tests due to `SV_GroupIndex` working with metal

* syntax error with groupThreadID search

did `= param` instead of `= i.param`

* add `sv_groupid` for test + test fixes

* disable test that won't work regardless</content>
</entry>
<entry>
<title>Metal compute tests (#4292)</title>
<updated>2024-06-07T07:28:16+00:00</updated>
<author>
<name>skallweitNV</name>
<email>64953474+skallweitNV@users.noreply.github.com</email>
</author>
<published>2024-06-07T07:28:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=004fe27a52b7952111ad7e749397aeff499de7ed'/>
<id>urn:sha1:004fe27a52b7952111ad7e749397aeff499de7ed</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Init expressions for struct fields support, #3738 (#3907)</title>
<updated>2024-04-16T17:06:23+00:00</updated>
<author>
<name>ArielG-NV</name>
<email>159081215+ArielG-NV@users.noreply.github.com</email>
</author>
<published>2024-04-16T17:06:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=d5d39dda2ec02c1dd21ba34a89f74b27092efcdd'/>
<id>urn:sha1:d5d39dda2ec02c1dd21ba34a89f74b27092efcdd</id>
<content type='text'>
* Init expressions for struct members

Following commit handles init expressions of struct's.

The general implementation follows C++ init expression rules for classes &amp; inherited classes.

The logic was implemented after type resolution (`SemanticsDeclAttributesVisitor`):
1. Create a default constructor if missing.
2. Check all member variables (`this` and `super`) for if a member has an init expression, continue to *3* if found.
3. For each constructor, insert a member variable's init expression at the beginning of a constructor. This is to follow how C++ does construction of objects.

Some important notes about implementation:
* We must handle the scenario that there is inheritance. To handle the inheritance information processing `findLevelsOfInheritance` was created.
* If a user manually sets overload rank's of constructor expression's we have no way to assume new default constructor overload ranks.

* address feedback

- moved all scope bound variables into if statment initializers
- added indent
- changed logic for overloadRank to be centered around positive numbers rather than negative

* Inheritance fixes universally &amp; for struct field init

1. reimplemented struct field logic
2. implemented inheritance through calling a "super-&gt;init()" inisde a constructor for each "this".
3. implemented support for multi level inheritance (4+) and accessing members without a crash.

* add a way to ignore Forward declared constructors.

* a test and fix for a falcor failiure

the following case was not handled: creating an default Ctor due to a non L-Value struct field. Having an empty Ctor causes a warning.

* remove texture/sampler from test since it will break glsl

* get inheritance info using existing lookup logic

modified Facet lookups to store relative depth rather than arbitrary ::Self or' ::Direct for inheritance (which was 'wong' since depth 2 is not Direct, but was considered a Direct inheritance)

* cleanup unused

* cleanup unused functions and whitespace

* fix compile warning

* clean up, reorder, addressed language server fail

changed logic to safeguard bad code --&gt; no longer breaks language server if code is incomplete.

remove the "semi-ordering" logic because caused a crash (and this code does nothing functionally, just thought it would be nice to add if '0 cost').

Remove rank setting for constructors, in place use an addition to the overload system: "this" expressions have calling priority over "super" expressions.
* undo all inheritance depth checks &amp; code added to the inheritance checking algorithm

Reorder default ctor creation and auto-generation of constructor body.

* Handle same struct types during overload resolution

Changed overload resolution logic to properly handle same struct types; added test to check for multi-param same type function overload.

* remove unused ast object

Used unused object in an incorrect way. This caused the compiler to not flag a warning.

* extension support for default constructors

specialization is not supported with default constructors yet.

* fix bugs

Fix bug in override/overload logic with type comparisons.

used wrong type for ctor list construction

Specialization has not been added yet

* disallow default ctor inside extension

* adjust comment, add new tests

* add explicit types to invoke, use faster default ctor lookup.

* adjust syntax &amp; naming as recomended</content>
</entry>
<entry>
<title>Fusion pass for saturated_cooperation (#2874)</title>
<updated>2023-05-12T22:33:26+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-05-12T22:33:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=65103bc9a0c72117d3c9410e361947cdd568ae55'/>
<id>urn:sha1:65103bc9a0c72117d3c9410e361947cdd568ae55</id>
<content type='text'>
* Fusion pass for saturated_cooperation

* simplify assert

* regenerate vs projects

* missing test output files

* rename shadowing variable to appease msvc

* Fuse calls to sat_coop with differing inputs

* formatting

* add cpu test for hof simple

* Make higher-order functions into compute comparison tests

* comment tests

* remove redundant test

* Add test to confirm inlining in sat_coop fuse

* Add clarifying comment for sat coop fusing

* Add KnownBuiltin decoration

* s/CanUseFuncSignature/TypesFullyResolved for higher order function checking

* Add TODO

* spelling

* Correct detection of sat_coop calls

* Disable tests which are unsupported on testing infra</content>
</entry>
<entry>
<title>MVP for higher order functions (#2849)</title>
<updated>2023-05-11T20:33:21+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2023-05-11T20:33:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=332f60c19336252d907b83882aa70665ca93a9d2'/>
<id>urn:sha1:332f60c19336252d907b83882aa70665ca93a9d2</id>
<content type='text'>
* MVP for higher order functions

* Add shader subgroup partitioned glsl intrinsics

* Implement parsing and checking for tuple types

Currently there is no way to do anything useful with them from the source language however

* neaten

* Correct precedence of function type parsing

* neaten

* higher order function tests

* function types of any arity

* Inference for higher order functions

* Add second test for unsynchronized params

* regenerate vs projects

* dx11 -&gt; dx12 for saturated cooperations tests

* Disable saturated cooperation tests on vulkan

They fail on release builds in CI, not essential for the higher order function work however

* remove saturated-cooperation tests

* Remove unnecessary assert and clarify control flow in AddDeclRefOverloadCandidates

* Add Tuple type name mangling

* Use functype keyword to introduce function types

* Add more inference tests for hof

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
</feed>
