Skip to content

Conversation

@KStocky
Copy link
Owner

@KStocky KStocky commented Jan 17, 2026

The main feature of this PR is that we now have no restrictions on what goes into a constant buffer, as we now don't just rely on pushing root signature constants.

However, to support this, a huge refactor was done, which should make it easy to support arbitrary resources being bound (in a bindless fashion) later.

KStocky added 30 commits January 4, 2025 23:29
…that we get better error messages when MakeShared calls are incorrect. Also adding tests
…hing derived from Object can now only be created using Object::New. Thiis forces all objects derived from Object to be publicly derived and to be owned by a SharedPtr to ensure that shared_from_this never causes issues
…f getting a shared_from_this pointer of the same type as the derived type.
…y moving the creation of the GPUDevice to a persistance fixture. One consequence to this is that we no longer have to wait on the GPU for the GPU fence to be hit. I don't know why caching the GPUDevice results in this behaviour. But the change in behaviour is the same for both hardware and WARP devices.
…r CommandQueue that has a timeout. This is because it is clear that the time between a wait ending and the next action on a queue occuring is indeterminate so we need to wait.
More issues with tuples implemented as an aggregate. Very annoying
Make a type alias for Expected<T, Error>
KStocky added 27 commits January 6, 2026 08:52
… to using ExpectedError over ErrorTypeAndDescription.
Also making CommandEngine expected friendly so that if errors are returned during commandlist creation, we can respond correctly
…gher abstraction than Shader. Shader should never have depended on it
… is full hooked up. This should fix the previous failure
…RingBuffer was broken (pushing back on to a default constructed ring buffer could never be resized through push_back)
@github-actions
Copy link

github-actions bot commented Jan 17, 2026

Test Results

   130 files  + 11     130 suites  +11   38s ⏱️ -1s
 7 074 tests +217   7 074 ✅ +217  0 💤 ±0  0 ❌ ±0 
22 942 runs  +455  22 942 ✅ +455  0 💤 ±0  0 ❌ ±0 

Results for commit 99f6cc3. ± Comparison against base commit 447807e.

This pull request removes 19 and adds 236 tests. Note that renamed tests count towards both.
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: A full descriptor manager/Then: All uavs are unique
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: A full descriptor manager/Then: State is as expected
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: A full descriptor manager/When: Resized/Then: State is as expected
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: A full descriptor manager/When: Second uav released
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: A full descriptor manager/When: Second uav released/And when: Another allocation made
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: A full descriptor manager/When: Second uav released/And when: Another allocation made/Then: Allocation succeeds
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: A full descriptor manager/When: Second uav released/Then: release succeeds
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: An initial size of 1/Then: State is as expected
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: An initial size of 1/When: Allocation made/And when: Manager is resized to 4/Then: Resize succeeds
ShaderTestFrameworkTests.exe.DescriptorManagerTestPrivate.Fixture ‑ Descriptor Manager Tests/Given: An initial size of 1/When: Allocation made/Then: Succeeds
…
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created/Then: queues are valid
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created/When: Fence signalled with no work
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created/When: Fence signalled with no work/Then: Fence point will have been reached immediately
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created/When: Next signalled fence point queried
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created/When: Next signalled fence point queried/And when: Future fence point is waited on by another queue
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created/When: Next signalled fence point queried/And when: Future fence point is waited on by another queue/And when: The queue that is waiting is signalled
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created/When: Next signalled fence point queried/And when: Future fence point is waited on by another queue/And when: The queue that is waiting is signalled/And when: The future fence point is eventually signalled
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created/When: Next signalled fence point queried/And when: Future fence point is waited on by another queue/And when: The queue that is waiting is signalled/And when: The future fence point is eventually signalled/Then: Future fence point has been reached
ShaderTestFrameworkTests.exe.CommandQueueTestFixture ‑ Scenario: CommandQueueTests/Given: DeviceType: Hardware/And given: Two command queues created/When: Next signalled fence point queried/And when: Future fence point is waited on by another queue/And when: The queue that is waiting is signalled/And when: The future fence point is eventually signalled/Then: Waiting queue is no longer waiting
…

♻️ This comment has been updated with latest results.

…dbolt.org/z/Pc9PsGnsq, does not compile until 14.41. I think it is due to using deducing this in a lambda...
@KStocky KStocky merged commit dcbe56c into main Jan 17, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants