<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/reflection/image-types.glsl, 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>2018-02-16T17:04:44+00:00</updated>
<entry>
<title>IR/Vulkan fixes (#412)</title>
<updated>2018-02-16T17:04:44+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2018-02-16T17:04:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=1b93da040ef00836438437e998c1c9584e3fd4ac'/>
<id>urn:sha1:1b93da040ef00836438437e998c1c9584e3fd4ac</id>
<content type='text'>
* Fix bugs around IR legalization of GLSL input/output

- Add case to handle assignment of one `ScalarizedVal::Flavor::address` to another (still need to make sure we are handling all the possible cases there)

- Revamp logic for creating global variable declarations for varying inputs/outputs.
  - Actually handle creating array declarations (not sure if binding locations will be correct)
  - Properly deal with offsetting of locations for nested fields
  - Only create varying input/output layout information as needed for the separate `in` and `out` variables we create to represent a single HLSL `inout` varying

* During SSA generation, recursively remove trivial phis

This is actually written up in the original paper I used as a reference, but I hadn't implemented the case yet.
When you eliminate one phi as trivial (because its only operands were itself and at most one other value), you might find that another phi becomes trivial (because it had this phi as an operand, but now it will have the other value...).

The one thing that made any of this tricky is that our "phi" nodes are really block parameters, and thus they don't technically have operands (`IRUse`s). The `IRUse`s for each phi were being tracked in a separate array, and had their `user` field set to null.

With this change, I set their `user` to be the corresponding `IRParam` for the phi (and that means I changed `IRParam` to inherit from `IRUser` even though it shouldn't really be required).

* Re-build SSA form after specialization/legalization

The main reason to do this is that legalization might scalarize types, and thus might allow us to clean up resource-type local variables that we were not able to clean up when they were part of an aggregate.

Note: we shouldn't really need to do this, because the front-end should actually be guaranteeing that types that include resources are used in "safe" ways, but we currently don't have the analyses required to support that.

* Give an error message if we get GLSL input

The API and command-line interface still recognize and nominally support GLSL input files, because they need to be supported in the "pass-through" mode.
This change just adds an error message if we encounter a GLSL input file in anything other than "pass-through" mode.
</content>
</entry>
<entry>
<title>Move reflection JSON generation into separate text fixture (#211)</title>
<updated>2017-10-14T01:14:42+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2017-10-14T01:14:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=64ddefb90cf440df7879d1f2f9cc61de71e0f181'/>
<id>urn:sha1:64ddefb90cf440df7879d1f2f9cc61de71e0f181</id>
<content type='text'>
Move reflection JSON generation into separate test fixture</content>
</entry>
<entry>
<title>Get tests running/passing under Linux (#194)</title>
<updated>2017-09-29T20:43:08+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2017-09-29T20:43:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=8a0ebb9fa25fd44def17b03b3f8aa1a33ad77940'/>
<id>urn:sha1:8a0ebb9fa25fd44def17b03b3f8aa1a33ad77940</id>
<content type='text'>
* Get tests running/passing under Linux

- Fix up `dlopen` abstraction

- Fix up some test cases to request hlsl (rather than default to dxbc) so they can run on non-Windows targets

- Fix up test runner ignore tests that can't run on current platform (and not count those as failure)

- Fix file handle leeak in process spawner absttraction

- Get additional test-related applications building

- More tweaks to Travis script; in theory deployment is set up now (yeah, right)

* fixup

* fixup: Travis environment variable syntax

* fixup: Buffer-&gt;begin

* fixup: actually run full tests on one config

* fixup: add build status badge for Travis
</content>
</entry>
<entry>
<title>Add basic reflection query for checking if entry point is "sample-rate"</title>
<updated>2017-07-12T18:07:45+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoley@nvidia.com</email>
</author>
<published>2017-07-12T18:07:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=74963469a169b49d61196e3a3b33a903ea8bfede'/>
<id>urn:sha1:74963469a169b49d61196e3a3b33a903ea8bfede</id>
<content type='text'>
- This really just checks two basic things:
  1. Was there any global variable declared with `in` and `sample`?
  2. Did any code encountered during lowering referenece `gl_SampleIndex`?

- This doesn't cover what HLSL could need, nor what we would need for cross-compilation. Consider it GLSL-specific for now.

- In order to generate the information with even a reasonable chance of being accurate (not giving a ton of false positives) I tried to integrate the checks into the lowering process (so they only see code that is referenced, one hopes).
  - For this to work with my testing setup, I needed to make sure that lowering is always performed, prior to emitting reflection info
  - This change broke several reflection tests, because they had been using code that wouldn't actually pass the downstream compiler. I checked in fixes for those.
</content>
</entry>
<entry>
<title>Improve reporting of GLSL `image*` types</title>
<updated>2017-07-11T19:18:13+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoley@nvidia.com</email>
</author>
<published>2017-07-11T19:18:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=0cd5602383d1ae85276eacec69d51a15a9e975f4'/>
<id>urn:sha1:0cd5602383d1ae85276eacec69d51a15a9e975f4</id>
<content type='text'>
- Update stdlib so taht `image*` types have read-write access encoded in their type
  - TODO:  this isn't 100% right, since there are GLSL qualifiers that might override this

- Add a test case to verify  that the reflection API reports `image*` parameters
</content>
</entry>
</feed>
