<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/render/render0.hlsl, 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-03-12T11:44:57+00:00</updated>
<entry>
<title>Migrate render-test away from deprecated compile request API (#6514)</title>
<updated>2025-03-12T11:44:57+00:00</updated>
<author>
<name>Anders Leino</name>
<email>aleino@nvidia.com</email>
</author>
<published>2025-03-12T11:44:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=f4d5372d3354e62770b076b47892b5172223e98a'/>
<id>urn:sha1:f4d5372d3354e62770b076b47892b5172223e98a</id>
<content type='text'>
* Add a simple interface parameter test

Since there's no documentation, it's nice to have a simple test case in order to
experiment with this feature of the testing framework.

* Add shader entry point attributes to tests

* Fix specialization arguments for tests

- Add some missing arguments
- Rremove one extraneous argument.

* Stop using deprecated compile request in render-test

Use a session object instead of the deprecated compile request object.
This closes issue #4760.</content>
</entry>
<entry>
<title>Enable some rendering tests (#5623)</title>
<updated>2024-11-21T19:42:29+00:00</updated>
<author>
<name>Anders Leino</name>
<email>aleino@nvidia.com</email>
</author>
<published>2024-11-21T19:42:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=dcc7c6f009afc0f55e79ced050b772ea9d3b25ae'/>
<id>urn:sha1:dcc7c6f009afc0f55e79ced050b772ea9d3b25ae</id>
<content type='text'>
* render-test: Add copy-source usage for render targets

I found that Slang-RHI/WGPU was not able to copy from render targets to staging buffers.

This helps to address issue #4943.

* Add entries to render API util infos

Entries for glsl-cross and glsl-rewrite are added.

Without glsl-cross, slang-test fails to select a back-end, and winds up crashing when
tests/render/cross-compile-entry-point.slang is enabled

tests/render/cross-compile0.hlsl fails similarly without glsl-rewrite.

* Enable some rendering tests

* Add expected test outputs</content>
</entry>
<entry>
<title>Remove old code paths from render-test (#1760)</title>
<updated>2021-03-17T19:55:30+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2021-03-17T19:55:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=6e5d85efb9fa5f647f7f0c7ef784a9fd09b29023'/>
<id>urn:sha1:6e5d85efb9fa5f647f7f0c7ef784a9fd09b29023</id>
<content type='text'>
* Remove old code paths from render-test

Historically, the `render-test` tool was using three different code paths:

* One based on `gfx` and manual (non-reflection-based) parameter setting, used for OpenGL, D3D11, D3D12, and Vulkan
* One for CPU that used reflection-based parameter setting but shared no code with the first
* One for CUDA that used reflection-based parameter setting and shared some, but not all, code with the CPU path

Recently we've updated `render-test` to include a fourth option:

* Using `gfx` and the "shader object" system it exposes for a unified reflection-based parameter-setting system taht works across OpenGL, D3D11, D3D12, Vulkan, CUDA, and CPU

This change removes the first three options and leaves only the single unified path. A sa result, a bunch of code in `render-test` is no longer needed, and the codebase no longer relies on things like the `IDescriptorSet`-related APIs in `gfx`.

Several existing tests had to be disabled to make this change possible. Those tests will need to be audited and either re-enabled once we fix issues in the shader object system, or permanently removed if they don't test stuff we intend to support in the long run (e.g., global-scope type parameters, which aren't a clear necessity).

* fixup: CUDA detection logic</content>
</entry>
<entry>
<title>Feature/dx12 compute (#483)</title>
<updated>2018-04-11T19:55:44+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2018-04-11T19:55:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=6322983fa4dc84ef1e9dd8fad54d4c1580436e67'/>
<id>urn:sha1:6322983fa4dc84ef1e9dd8fad54d4c1580436e67</id>
<content type='text'>
* Dx12 rendering works in test framework.

* Turn on dx12 render tests.

* Getting simpler dx12 compute tests to work.

* With expected data in test - check for specialized and then for the default, so that multiple test can share the same expected data, but specialized cases can still be set.

* Fixed construction and binding on dx12 textures.

* Control which render apis used in test from command line.

* Small aesthetic fixes in render-test/main.cpp.

* Fix binding problem for uavs/srvs dx12. Previously tried to create srv/uav for StorageBuffers (like dx11 does), but the binding breaks as you can end up with two srvs using the same register.
First pass at fixing problems with Texture creation for dx12 - assertions were hit with 3d or array textures.

* Fixes to improve Dx12 setup shader resource views for cubemaps/arrays.

* Fixed d3d12 textureSamplingTest - problem was that cubemap/array textures were not being uploaded correctly.

* Changed the order of how binding of constant buffers (as just set on the Renderer) indexes. Previously they were given the lowest indices, but they clashed with the indices from the 'Binding'. Changing this means all tests run on d3d12.

* Add code to allow use of warp (although not command line switchable yet).
Fix problem setting up raw UAV - as identified by warp.

* Added RenderApiUtil - which can detect if a render api is potentially available.

* Moved render flag testing/parsing into RenderApiUtil.

* Fix signed/unsigned warning.

* Fixes around enums prefixed with k on the review of feature/dx12 compute branch.

* Remove explicit -dx12 line in tests, as all can currently be generated from dx11 tests.
</content>
</entry>
<entry>
<title>Dx12 rendering works in test framework. (#476)</title>
<updated>2018-04-04T17:39:42+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2018-04-04T17:39:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=357bce2b3368a40bd436d10ba276b1e448f60984'/>
<id>urn:sha1:357bce2b3368a40bd436d10ba276b1e448f60984</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove non-IR codegen paths (#398)</title>
<updated>2018-02-03T15:30:54+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2018-02-03T15:30:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=662f43fff6721c6cd013a8f1b2639c2e29fe6be3'/>
<id>urn:sha1:662f43fff6721c6cd013a8f1b2639c2e29fe6be3</id>
<content type='text'>
The basic change is simple: remove support for all code generation paths other than the IR.
There is a lot of vestigial code left, but the main logic in `ast-legalize.*` is gone.

Doing this breaks a *lot* of tests, for various reasons:

- We can no longer guarantee exactly matching DXBC or SPIR-V output after things pass through out IR

- Many builtins don't have matching versions defined for GLSL output via IR (even when they had versions defined via the earlier approach that worked with the AST)

- A lot of code creates intermediate values of opaque types in the IR, which turn into opaque-type temporaries that aren't allowed (this breaks many GLSL tests, but also some HLSL)

I implemented some small fixes for issues that I could get working in the time I had, but most of the above are larger than made sense to fix in this commit.

For now I'm disabling the tests that cause problems, but we will need to make a concerted effort to get things working on this new substrate if we are going to make good on our goals.</content>
</entry>
<entry>
<title>Perform some transformations on IR to legalize for GLSL (#200)</title>
<updated>2017-10-06T21:31:42+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2017-10-06T21:31:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=faf26afdcfd343c79517f56f215bf8dcd5e0b992'/>
<id>urn:sha1:faf26afdcfd343c79517f56f215bf8dcd5e0b992</id>
<content type='text'>
When outputting GLSL from a Slang or HLSL entry point, we need to translate any parameters or results of an entry-point function into global declarations of `in` or `out` parameters, as needed by GLSL.
This change adds these transformations at the IR level, so that they don't need to complicate the emit logic.

More detailed changes:

- Make `render0` test use IR. It passes out of the box.

- Fix test runner to not always dump diffs on failures

  I accidentally initialized an option to `true` instead of `false` when working on debugging the Travis CI failures.

- Special-case output for component-wise multiplication to handle GLSL `matrixCompMul()`

- Handle GLSL vs. HLSL output for calls to `mul()`

- Output proper `layout(std140)` on GLSL constant buffer declarations

- Require appropriate GLSL extension when emitting explicit `layout(offset = ...)` on constant buffer members
  - TODO: Need to avoid requiring this extension in cases where the offsets are what would be computed anyway.
    Realistically, should probably be emitting code with explicit padding, etc. to guarantee layouts.

- Add an IR-based pass to translate entry point functions by eliminating their input/output parameters and replacing them with global variables.

- Demangle names when calling target intrinsics

  The lowering to the IR will turn a call like `sin(foo)` into a call to a function declaration with a   mangled name like `_S3sin...`. This works fine when the user is calling their own functions, since the   name mangling will apply to both the definition and use sites, but for builtin functions it obviously   isn't what we want.

  This change makes it so that we demangle the name of an instrinsic function just enough so that we can   extract the original simple name, and make a call using that.

These changes do nor provide 100% of what we need when translating to GLSL, so the `cross-compile-entry-point` test *still* hasn't been flipped over to use the IR (even though that is the test case I've been using to develop these changes).</content>
</entry>
<entry>
<title>Use WARP for D3D rendering tests.</title>
<updated>2017-09-21T17:53:56+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoley@nvidia.com</email>
</author>
<published>2017-09-21T17:53:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=289a71e7c3109a8f85fda5599d77230e5a4c90ee'/>
<id>urn:sha1:289a71e7c3109a8f85fda5599d77230e5a4c90ee</id>
<content type='text'>
This should in principle allow for the D3D-only tests to run on AppVeyor so that we can validate running things for CI purposes (and is probably a whole lot easier than trying to plug the VM up to the rendering tests).

I've switched up one of the tests so that it should run even on AppVeyor, so fingers crossed that it will actually run.
</content>
</entry>
<entry>
<title>AppVeyor: Run tests as part of AppVeyor builds</title>
<updated>2017-06-14T21:40:48+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoley@nvidia.com</email>
</author>
<published>2017-06-14T16:10:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=90d6a401ee0d6327b068e58a64a10f620300a38e'/>
<id>urn:sha1:90d6a401ee0d6327b068e58a64a10f620300a38e</id>
<content type='text'>
This includes a bunch of related changes:

- `slang-test`
  - Add a notion of an "output mode" that specifies whether we output to console (the default), or invoke the apprpriate AppVeyor command to update test status
  - Add a notion of test categories, so that tests can be tagged with categories, and then we can invoke only those tets in a given category, or choose to *exclude* tests with specific categories
  - Allow the `OSProcessSpawner` to look up an executable by "path" (meaning a full path is expected) or by "name" (meaning it should be allowed to look in the current directory, `PATH` environment variable, etc.). This was important to make sure that I can run `appveyor` without having to know its absolute path.

- AppVeyor configuration
  - Change badge to reflect new build account for organization (rather than a single-user account)
  - Remove attempt to set AppVeyor build version in a clever way, since it breaks links from GitHub to AppVeyor
  - Change order or configurations in the build matrix to front-load the Release build (which has the main tests)
  - Turn on `fast_finish` flag so we don't have to wait as long for failed builds
  - Turn on `parallel` builds
  - Set `verbosity: minimal` to avoid getting build spew about Xamarin stuff I'm not using
  - Add custom `test_script` to invoke `test.bat`
    - Sets the test category based on teh build configuration, so we don't run the full test suite on every input.

- `test.bat`
  - Allow for `-platform` and `-configuration` arguments
  - Rewrute a platform of `Win32` over to `x86` to match how the output directories are named
  - Futz around with how the directories are being passed along to work around annoying `.bat` file quoting behavior (I still don't get how batch files work)

- Tests
  - Mark a bunch of tests as `smoke` tests
  - Mark the relevant tests as `render` tests
    (these get filtered out for AppVeyor builds)
</content>
</entry>
<entry>
<title>Initial import of code.</title>
<updated>2017-06-09T20:44:59+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoley@nvidia.com</email>
</author>
<published>2017-06-09T18:34:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=fcf83dbf9effab3bd98bad2b83b2468b7eb05cfd'/>
<id>urn:sha1:fcf83dbf9effab3bd98bad2b83b2468b7eb05cfd</id>
<content type='text'>
</content>
</entry>
</feed>
