<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tools/gfx/render-graphics-common.h, 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>2021-03-24T20:57:55+00:00</updated>
<entry>
<title>Reimplement Vulkan shader objects. (#1764)</title>
<updated>2021-03-24T20:57:55+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2021-03-24T20:57:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=98afb421f408aa8651afff3dba1b21fad71131fe'/>
<id>urn:sha1:98afb421f408aa8651afff3dba1b21fad71131fe</id>
<content type='text'>
* Reimplement Vulkan shader objects.

This change reimplements Vulkan shader objects in the `gfx` layer so that it is no longer layered on top of the `DescriptorSet` abstraction. Since this is the last implementation that uses `DescriptorSet`, the change also removes all `DescriptorSet` related API from public `gfx` interface.

The Vulkan implementation now passes all test cases, but it still have two issues:
1. The PushConstant setting is not correct, this is because we don't seem to be able to get correct reflection data about the size of push constants for an entry-point.
2. The `shader-toy` example can't run on Vulkan, because it currently sets nullptr to `Texture` bindings, and this change doesn't properly handle setting resource to null in `ShaderObject`s yet. If we can use the `nullDescriptor` feature on vulkan, this implementation will be simple. However we still want to decide whether we want to use a Vulkan 1.2 feature for this.

* Fix up</content>
</entry>
<entry>
<title>Refactor `gfx` to surface `CommandBuffer` interface. (#1735)</title>
<updated>2021-03-05T00:25:58+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2021-03-05T00:25:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=a5ac4999b4dea546a7ef824669ab1809224b6448'/>
<id>urn:sha1:a5ac4999b4dea546a7ef824669ab1809224b6448</id>
<content type='text'>
* Refactor `gfx` to surface `CommandBuffer` interface.

* Fixes.

* Fix code review issues, and make vulkan runnable on devices without VK_EXT_extended_dynamic_states.

* Update solution files

* Move out-of-date examples to examples/experimental

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
<entry>
<title>Streamline shader object creation (#1717)</title>
<updated>2021-02-18T02:42:23+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2021-02-18T02:42:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=b1e376fa1e7dd0ff59991bdf1d3d859d3b63a74a'/>
<id>urn:sha1:b1e376fa1e7dd0ff59991bdf1d3d859d3b63a74a</id>
<content type='text'>
This change kind of rolls together two different simplifications:

1. The `createShaderObject()` shouldn't really need to take an `IShaderObjectLayout` because it could just take the `slang::TypeLayoutReflection` instead and create the shader-object layout behind the scenes.

2. For that matter, it needn't take a `slang::TypeLayoutReflection` either, becaues it could just take a `slang::TypeReflection` and query the layout of that type behind the scenes.

The combination of these two changes means:

* `IShaderObjectLayout` is gone from the public API, as is `createShaderObjectLayout()`

* `createShaderObject()` directly takes a `slang::TypeReflection` and allocates a shader object of that type

The result is simpler and more streamlined application code.

Note that under the hood the implementation still has shader-object layouts, using the `ShaderObjectLayoutBase` class. A few locations had to change to use `RefPtr`s instead of `ComPtr`s now that the class is no longer a public COM-lite API type.

The hope is that this change makes it easier to allocate/cache layouts for things like specialized types "under the hood," as is needed to implement parameter setting for static specialization.</content>
</entry>
<entry>
<title>[gfx] Shader-object driven shader compilation. (#1688)</title>
<updated>2021-02-04T21:50:51+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2021-02-04T21:50:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=c40f10b704b8bd5a744cc9b3964344585436b1ac'/>
<id>urn:sha1:c40f10b704b8bd5a744cc9b3964344585436b1ac</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make  own a slang session. (#1678)</title>
<updated>2021-01-27T18:02:44+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2021-01-27T18:02:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=615dfba810964bed1caad8ecb87850c8eb1544b4'/>
<id>urn:sha1:615dfba810964bed1caad8ecb87850c8eb1544b4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Integrate reflection more deeply into gfx layer (#1677)</title>
<updated>2021-01-26T21:32:03+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2021-01-26T21:32:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=a90c850735664e2928e4cc961442a126c6859b97'/>
<id>urn:sha1:a90c850735664e2928e4cc961442a126c6859b97</id>
<content type='text'>
</content>
</entry>
<entry>
<title>COM-ify all slang-gfx interfaces. (#1656)</title>
<updated>2021-01-14T23:48:54+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2021-01-14T23:48:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=f834f25794cfb746079e92d58c7410b767c57208'/>
<id>urn:sha1:f834f25794cfb746079e92d58c7410b767c57208</id>
<content type='text'>
* COM-ify all slang-gfx interfaces.</content>
</entry>
<entry>
<title>Make `gfx::Renderer` a COM interface. (#1653)</title>
<updated>2021-01-11T17:11:52+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2021-01-11T17:11:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=5554777188225266e2295db3588f6cb17cae0c4d'/>
<id>urn:sha1:5554777188225266e2295db3588f6cb17cae0c4d</id>
<content type='text'>
* Make `gfx::Renderer` a COM interface.

This is a first step towards making the `gfx` library expose a COM compatible DLL interface. Remaining classes will come as separate PRs.

* Fixup project files

* Fix calling conventions

* Make gfx::create*Renderer() functions increase ref count by 1

* Make renderer createFunc return via out parameter</content>
</entry>
<entry>
<title>Move ShaderObject to be under renderer interface. (#1633)</title>
<updated>2020-12-10T17:43:09+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2020-12-10T17:43:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=e4a8251749cf1fbf005b045e26e25f3ef7cccb8b'/>
<id>urn:sha1:e4a8251749cf1fbf005b045e26e25f3ef7cccb8b</id>
<content type='text'>
* Move ShaderObject to be under renderer interface.

* Make `create*PipelineState` take `const PipelineStateDesc&amp;`.

* Move ShaderCursor implementation to a cpp file</content>
</entry>
</feed>
