Skip to content

Releases: Sergio0694/ComputeSharp

3.0.1

18 Jun 04:33
98961f8
Compare
Choose a tag to compare

What's Changed

  • Remove unnecessary '/p:NativeLib=Shared' (default) by @Sergio0694 in #814
  • Make 'AllowsUnsafeBlocks' analyzer only trigger on attribute uses by @Sergio0694 in #816

Full Changelog: v3.0.0...v3.0.1

3.0.0

10 Jun 17:12
ce70b9d
Compare
Choose a tag to compare

ComputeSharp 3.0 is now live! 🚀

This new major release includes completely revamped source generators for both DX12 and D2D1, featuring major performance improvements, and lots of new analyers. It also brings full .NET 8 support (with AOT!), much improved and more extensible APIs for shader dispatching, new helpers, more configuration options for shaders (eg. the ability to disable double precision support), and more!
 

What's Changed

  • Add [D2DEffectId] and [D2DEffectDisplayName] by @Sergio0694 in #560
  • Add [D2DEffectAuthor], [D2DEffectCategory] and [D2DEffectDescription] by @Sergio0694 in #566
  • Simplify HasAccessibleTypeWithMetadataName by @Sergio0694 in #563
  • Don't fail the CI on STATUS_CONTROL_C_EXIT errors by @Sergio0694 in #567
  • Require for D2D1 source generator by @Sergio0694 in #568
  • Remove language checks for C# 11 by @Sergio0694 in #569
  • Generate D2D1 input types as file local ReadOnlyMemory by @Sergio0694 in #570
  • Generate D2D1 input descriptions as file local ReadOnlyMemory by @Sergio0694 in #571
  • Generate D2D1 resource texture descriptions as file local ReadOnlyMemory by @Sergio0694 in #572
  • Switch all D2D1 interface methods (except bytecode) to properties by @Sergio0694 in #573
  • Generate constant buffer layout type for marshalling by @Sergio0694 in #574
  • Don't fail the CI if pushing to Azure fails by @Sergio0694 in #576
  • Always assume [SkipLocalsInit] can be used in generator by @Sergio0694 in #575
  • Switch HLSL bytecode, shader profile and compile options to properties by @Sergio0694 in #577
  • Unify D2D1 source generator logic and emit a single file by @Sergio0694 in #578
  • Add DynamicCache<,> type to cache HLSL bytecode results by @Sergio0694 in #579
  • Switch D2D1 generator to use indented text writer by @Sergio0694 in #580
  • Add new numeric properties to ID2D1Shader by @Sergio0694 in #581
  • Refactor interface and introduce new ID2D1PixelShaderDescriptor by @Sergio0694 in #582
  • Remove matrix types row accessors for generated code by @Sergio0694 in #583
  • Add D2D1PixelShader.CreateFromConstantBuffer() APIs by @Sergio0694 in #584
  • Unify effect XML building logic, optimize on .NET 6 by @Sergio0694 in #585
  • Only declare valid resource texture manager properties in effect XML by @Sergio0694 in #586
  • Add [D2DGeneratedPixelShaderDescriptor] attribute and use FAWMN by @Sergio0694 in #587
  • Fix handling partial record struct types, add test by @Sergio0694 in #589
  • Rewrite D2DPixelShaderSourceGenerator to be simpler and faster by @Sergio0694 in #590
  • Minor refactoring, remove unnecessary code by @Sergio0694 in #591
  • Refactor global state for built-in pixel shader effects by @Sergio0694 in #592
  • Reduce rooted metadata due to reflection by @Sergio0694 in #594
  • Fix possible deadlock in ResourceTextureManager.Update by @Sergio0694 in #595
  • Tweak ComPtr extensions, fix IsSameInstance bug by @Sergio0694 in #596
  • Obsolete APIs to remove, bump package version by @Sergio0694 in #597
  • Use ImmutableArrayBuilder to create HLSL source by @Sergio0694 in #599
  • Optimize InputTypes memory manager for downlevel TFMs by @Sergio0694 in #600
  • Remove UWP support by @Sergio0694 in #602
  • Always assume [SkipLocalsInit] is available in DX12 generator by @Sergio0694 in #601
  • Remove UWP sample app by @Sergio0694 in #603
  • Remove .NET Standard 2.0 support by @Sergio0694 in #604
  • Remove multi-targeting, only use one .NET TFM per project by @Sergio0694 in #605
  • Use string literal in global using directives generator by @Sergio0694 in #606
  • Centralize defines for SOURCE_GENERATOR by @Sergio0694 in #607
  • Switch to TerraFX.Interop.Windows in unit tests by @Sergio0694 in #608
  • Remove TerraFX.Interop.Windows.Dynamic project by @Sergio0694 in #609
  • Remove redundant ComPtr extensions by @Sergio0694 in #610
  • Refactor Win32 bindings by @Sergio0694 in #611
  • Remove shader metaprogramming and dynamic compilation (DX12) by @Sergio0694 in #613
  • Rewrite D3D12 generator to use indented writer, dynamic cache, unified pipeline by @Sergio0694 in #614
  • Tweak IShader, add HlslBytecode and [NumThreads] properties by @Sergio0694 in #615
  • Improve D3D12 generator and IShader public API by @Sergio0694 in #617
  • Rework IShader APIs to load constant buffer and resources by @Sergio0694 in #618
  • Add IComputeShaderDescriptor interface by @Sergio0694 in #619
  • Add [GeneratedComputeShaderDescriptor] for D3D12 shaders by @Sergio0694 in #620
  • Shader FieldInfo model across D2D1/D3D12 generators by @Sergio0694 in #621
  • Remove shader compilation from reflection services, rename Dynamic library by @Sergio0694 in #622
  • Switch to CsWin32 for DXC APIs in D3D12 generator by @Sergio0694 in #623
  • Switch to CsWin32 for DXC APIs in D2D1 generator by @Sergio0694 in #624
  • Remove ComputeSharp.NetStandard polyfill project by @Sergio0694 in #625
  • Centralize native libs to cleanup solution explorer by @Sergio0694 in #626
  • Update ImageSharp from 2.1.4 to 3.0.2 by @Sergio0694 in #627
  • Use local D3D12 bindings for ComputeSharp by @Sergio0694 in #612
  • Remove conditional .NET Standard 2.0 paths by @Sergio0694 in #628
  • Update all TFMs to .NET 7 by @Sergio0694 in #629
  • Leverage static abstracts in interfaces in all descriptor interfaces by @Sergio0694 in #630
  • Add analyzers for shader types being less accessible than internal by @Sergio0694 in #631
  • Generate [DisableRuntimeMarshalling] in all projects by @Sergio0694 in #632
  • Add analyzers for shader fields of types being less accessible than internal by @Sergio0694 in #633
  • Update NuGet packages and release version by @Sergio0694 in #634
  • Apply some code tweaks to make analysis happy by @Sergio0694 in #635
  • Skip CI workflow for draft PRs and PRs from this repository by @Sergio0694 in #636
  • Fix duplicate diagnostic titles, use target-typed new() by @Sergio0694 in #637
  • Improve throw path in ReferenceTracker by @Sergio0694 in #644
  • Remove some leftover Win32 bindings by @Sergio0694 in #645
  • Switch all TFMs to .NET 8 and enable C# 12 by @Sergio0694 in #649
  • Support primary constructor parameters for D2D shaders by @Sergio0694 in #650
  • Support primary constructor parameters for DX12 shaders by @Sergio0694 in #651
  • Support primary constructor parameters for DX12 shader resources by @Sergio0694 in #652
  • Use primary constructors and collection ex...
Read more

2.1.0

27 Sep 13:37
36155e1
Compare
Choose a tag to compare

ComputeSharp 2.1 is now live! 🚀

Major changes in a nutshell ✨

  • New ComputeSharp.D2D1.Uwp (and .WinUI) packages with Win2D support
  • New D2D1 transform mapper support D2D effects
  • Moved D3D12MA support into ComputeSharp.D3D12MemoryAllocator
  • Just tons of bug fixes, performance improvements, general tweaks

Full changelog

Read more

2.0.0

29 Nov 13:38
Compare
Choose a tag to compare

ComputeSharp 2.0 is finally available! 🚀

Read the blog post on Medium here.

The changelog here is mostly the same as for 2.0.0-preview1, just with additional bug fixes and performance improvements. This release includes a completely overhauled library compared to the previous 1.4.1 release, along with tons of new changes. It's impossible to list all of them here, so here's just some of the biggest changes. But there's much, much more that's included across all available libraries!

ComputeSharp

  • New ComputeContext APIs to build fully custom computational graphs
  • New IPixelShader<T> interface to easily write pixel-shader-like shaders
  • New texture resources, including normalized ones
  • New transfer buffers (upload and readback)
  • New support for directly loading and saving images
  • New APIs to execute work asynchronously
  • New APIs to track and recover from device loss
  • All APIs are now fully thread safe and resilient against memory leaks and corruption
  • Replaced method decompiler with Roslyn incremental source generator
  • Add .NET Standard 2.0 target (including in all other libraries as well)
  • Much better performance than before

ComputeSharp.Dynamic

  • Split dynamic compilation support to separate package to reduce binary use
  • New APIs to do shader reflection

ComputeSharp.Pix

  • New standalone package adding PIX support to ComputeSharp

ComputeSharp.Uwp, ComputeSharp.WinUI

  • New UWP and WinUI 3 packages with ComputeShaderPanel and AnimatedComputeShaderPanel controls
  • New APIs to fully customize the render loop and the frame request queue

ComputeSharp.D2D1

  • New package with support for authoring D2D1 pixel shader
  • New built-in ID2D1Effect implementation to easily plug shaders into a D2D1 pipeline
  • New APIs to easily define D2D1 transform mappings
  • New APIs to do shader reflection
  • New attribute to precompile inline HLSL, for manual shader compilation
  • New APIs to manually compile raw HLSL sources

2.0.0 Preview 1

08 Oct 16:10
37ebca1
Compare
Choose a tag to compare
2.0.0 Preview 1 Pre-release
Pre-release

This is the first official preview of ComputeSharp 2.0! 🚀

This release includes a completely overhauled library compared to the previous 1.4.1 release, along with tons of new changes. It's impossible to list all of them here, so here's just some of the biggest changes. But there's much, much more that's included across all available libraries!

ComputeSharp

  • New ComputeContext APIs to build fully custom computational graphs
  • New IPixelShader<T> interface to easily write pixel-shader-like shaders
  • New texture resources, including normalized ones
  • New transfer buffers (upload and readback)
  • New support for directly loading and saving images
  • New APIs to execute work asynchronously
  • New APIs to track and recover from device loss
  • All APIs are now fully thread safe and resilient against memory leaks and corruption
  • Replaced method decompiler with Roslyn incremental source generator
  • Add .NET Standard 2.0 target (including in all other libraries as well)
  • Much better performance than before

ComputeSharp.Dynamic

  • Split dynamic compilation support to separate package to reduce binary use
  • New APIs to do shader reflection

ComputeSharp.Pix

  • New standalone package adding PIX support to ComputeSharp

ComputeSharp.Uwp, ComputeSharp.WinUI

  • New UWP and WinUI 3 packages with ComputeShaderPanel and AnimatedComputeShaderPanel controls
  • New APIs to fully customize the render loop and the frame request queue

ComputeSharp.D2D1

  • New package with support for authoring D2D1 pixel shader
  • New built-in ID2D1Effect implementation to easily plug shaders into a D2D1 pipeline
  • New APIs to easily define D2D1 transform mappings
  • New APIs to do shader reflection
  • New attribute to precompile inline HLSL, for manual shader compilation
  • New APIs to manually compile raw HLSL sources

New interlocked intrinsics APIs, performance optimizations

07 Sep 10:27
Compare
Choose a tag to compare

🆕 New interlocked HLSL intrinsics
🚀 Major speed improvement when dispatching shaders
🚀 Major memory usage optimization when dispatching shaders
✅ Fix a possible issue with references staying alive when not needed

New shader syntax, bug fixes and improvements

27 Aug 14:25
Compare
Choose a tag to compare

🆕 New shader syntax (struct type + IComputeShader interface)
Gpu.Default is now thread safe
✅ Bug fix when concurrently dispatching shaders
✅ Bug fixes when parsing some C# code to HLSL
✅ Bug fixes to constant buffer copies (thanks @john-h-k)
✅ Improved error reporting for internal failures
✅ Updated all NuGet references
🚀 Speed improvements when loading/dispatching shaders

Minor speed improvements, NuGet updates

11 Oct 10:59
Compare
Choose a tag to compare

🆕 Lowered minimum DX feature level requirement for GPUs to DX12.0
✅ Fixed a bug when capturing readonly bool fields/properties
✅ Minor performance improvements with the shader dispatching
✅ Updated NuGet dependencies

New Bool type, speed improvements

22 Sep 19:49
Compare
Choose a tag to compare

🆕 New Bool type to be used in GPU buffers
✅ Speed improvements and reduced memory usage
✅ Fixed error that could happen when dispatching multiple shaders sequentially
✅ Fixed typos in some Bool2 members
✅ Updated dependencies

Performance improvements

15 Sep 17:32
Compare
Choose a tag to compare

✅ Reduced overhead when dispatching shaders
✅ Fixed threading issue with the shader generation