Releases: Sergio0694/ComputeSharp
3.0.1
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
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...
2.1.0
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
- Implement new D2D1 transform mapper infrastructure by @Sergio0694 in #432
- Fix visibility of interpolated string handler polyfills by @Sergio0694 in #448
- Update all NuGet packages to latest stable by @Sergio0694 in #454
- Add ComputeSharp.D2D1.Uwp and new PixelShaderEffect type by @Sergio0694 in #451
- Add CanvasEffect base type for Win2D effects by @Sergio0694 in #455
- Remove reflection from UWP sample startup path by @Sergio0694 in #456
- Disable resolution scale options when dynamic resolution is enabled by @Sergio0694 in #457
- Default to 60fps for dynamic resolution when using WARP by @Sergio0694 in #459
- Add .NET 7 TFM to all unit tests by @Sergio0694 in #460
- Enable embedded PDBs for UWP libraries by @Sergio0694 in #461
- Fix PixelShaderEffect.ConstantBuffer accessors crashing for empty types by @Sergio0694 in #466
- Skip unnecessary ToString() call to check file extension by @Sergio0694 in #468
- Switch to Vortice.Win32 for all unit tests by @Sergio0694 in #470
- Switch to PolySharp, remove local polyfills, add type forwards by @Sergio0694 in #471
- Improve DI architecture in UWP sample, remove reflection by @Sergio0694 in #472
- Update all NuGet packages to latest stable by @Sergio0694 in #473
- Reduce string pinning duration in ResourceManager.GetOrCreate by @Sergio0694 in #474
- Add Win2D renderer to UWP sample app by @Sergio0694 in #475
- Update NuGet dependencies by @Sergio0694 in #476
- Add HLSL Mad intrinsic by @Sergio0694 in #478
- Update WinUI 3 and improve sample app by @Sergio0694 in #482
- Update NuGet packages to latest stable by @Sergio0694 in #483
- Add new WIN2D_GET_DEVICE_ASSOCIATION_TYPE support for ICanvasImageInterop by @Sergio0694 in #467
- Add support for ID2D1DeviceContextPool Win2D APIs by @Sergio0694 in #464
- Add support for ICanvasEffect for PixelShaderEffect by @Sergio0694 in #465
- Move MethodInfoExtensions to ComputeSharp.Dynamic by @Sergio0694 in #487
- Switch all packages to internal and shared throw helpers by @Sergio0694 in #489
- Use Unsafe.As to reinterpret ImmutableArray values by @Sergio0694 in #491
- Add showcase to the readme by @Sergio0694 in #493
- Add InvalidExecutionContextException.MemberName by @Sergio0694 in #495
- Bump target UWP SDK to 22621 by @Sergio0694 in #496
- Update NuGet packages to latest stable by @Sergio0694 in #497
- Add missing TFM to ComputeSharp.Tests.GlobalStatements by @Sergio0694 in #499
- Enable assembly strong name signing by @Sergio0694 in #498
- Add "official" Disposable pattern to CanvasEffect by @Sergio0694 in #500
- Rename CanvasEffect setup and update methods by @Sergio0694 in #501
- Add .NET 7 SDK to global.json by @Sergio0694 in #505
- Add D2D1TransformMapper GC collect unit test by @Sergio0694 in #506
- Add ComputeSharp.D2D1.WinUI package (for Win2D/WASDK support) by @Sergio0694 in #486
- Add support for Win2D resource cache manager wrapper registration by @Sergio0694 in #507
- Fix WinRT projections marshalling on WASDK by @Sergio0694 in #510
- Add unpackaged Win2D WASDK Win32 CLI sample by @Sergio0694 in #509
- Drop NuGetizer from packaging projects by @Sergio0694 in #508
- Update PIX libraries to version 1.0.230302001 by @Sergio0694 in #511
- Fix constructor finalization issues with ReferenceTracker by @Sergio0694 in #504
- Add support for ICanvasFactoryNative.RegisterEffectFactory in PixelShaderEffect by @Sergio0694 in #512
- Fix effect factory cache registration and validation logic by @Sergio0694 in #513
- Split NativeAOT samples in CI script by @Sergio0694 in #514
- Add ComputeSharp.D2D1.Uwp unit tests by @Sergio0694 in #515
- Add ComputeSharp.D2D1.WinUI unit tests by @Sergio0694 in #516
- Add new CanvasEffect.EffectGraph APIs by @Sergio0694 in #517
- Enable AOT and single file analyzers by @Sergio0694 in #518
- Update NuGet packages to latest stable by @Sergio0694 in #519
- Remove .NET Core 3.1 TFMs by @Sergio0694 in #520
- Remove double uses in MengerJourney/TwoTiledTruchet by @Sergio0694 in #521
- Update sample link in README to launch pop-up Store by @Sergio0694 in #522
- Add missing readonly modifiers, ignore them in HLSL by @Sergio0694 in #524
- Update NuGet packages to latest stable by @Sergio0694 in #526
- Update NuGet packages to latest stable by @Sergio0694 in #527
- Remove some null suppressions, add [NotNullWhen] by @Sergio0694 in #528
- Update Microsoft.WindowsAppSDK to 1.3.230602002 by @Sergio0694 in #529
- Remove uses of Func<T, TResult> from CLI samples by @Sergio0694 in #531
- Add ILLink file for ComputeSharp configuration by @Sergio0694 in #532
- Generate documentation files for all source and samples by @Sergio0694 in #533
- Remove workaround for lower D3D12MA SDK by @Sergio0694 in #535
- Remove Console.WriteLine call for -h output by @Sergio0694 in #536
- Invert GPU timeout feature switch, true by default by @Sergio0694 in #534
- Remove reified generic instantiations in CLI sample by @Sergio0694 in #537
- Add reference count checks to interop tests by @Sergio0694 in #538
- Split D3D12MA support into ComputeSharp.D3D12MemoryAllocator by @Sergio0694 in #539
- Update NuGet packages to latest stable by @Sergio0694 in #530
- Build ComputeSharp.D3D12MemoryAllocator package by @Sergio0694 in #541
- Add more MSBuild options to DX12 CLI sample by @Sergio0694 in #542
- Fix trimming support for ComputeSharp.D2D1.WinUI and CI test by @Sergio0694 in #544
- Fix NativeAOT publishing for Win2D CLI sample, update CI script by @Sergio0694 in #545
- Update NuGet packages to latest stable by @Sergio0694 in #543
- Fix some incorrect signatures in Win2D ABI type bindings by @Sergio0694 in #546
- Enable GenerateDocumentationFile everywhere by @Sergio0694 in #554
- Remove Regex.Replace call in D3DCompiler by @Sergio0694 in #553
- Remove string allocation in ID3DIncludeForD2DHelpers.Open by @Sergio0694 in https://github.com/S...
2.0.0
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
andAnimatedComputeShaderPanel
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
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
andAnimatedComputeShaderPanel
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
🆕 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
🆕 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
🆕 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
🆕 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
✅ Reduced overhead when dispatching shaders
✅ Fixed threading issue with the shader generation