Skip to content

Commit

Permalink
Streamline SDK 2.4.10 Release
Browse files Browse the repository at this point in the history
  • Loading branch information
liam-middlebrook committed Jun 4, 2024
1 parent 7b94724 commit c709dd9
Show file tree
Hide file tree
Showing 77 changed files with 856 additions and 341 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Streamline (SL) - Version 2.4.0
# Streamline (SL) - Version 2.4.10

Streamline is an open-sourced cross-IHV solution that simplifies integration of the latest NVIDIA and other independent hardware vendors’ super resolution technologies into applications and games. This framework allows developers to easily implement one single integration and enable multiple super-resolution technologies and other graphics effects supported by the hardware vendor.

Expand Down
4 changes: 2 additions & 2 deletions bin/x64/NRD.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/NvLowLatencyVk.dll
Git LFS file not shown
Binary file modified bin/x64/buildInfo.txt
Binary file not shown.
2 changes: 1 addition & 1 deletion bin/x64/development/NRD.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/NvLowLatencyVk.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/nvngx_deepdvc.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/nvngx_dlss.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/nvngx_dlssg.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/sl.common.dll
Git LFS file not shown
2 changes: 1 addition & 1 deletion bin/x64/development/sl.deepdvc.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/sl.dlss.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/sl.dlss_g.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/sl.imgui.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/sl.interposer.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/development/sl.nis.dll
Git LFS file not shown
2 changes: 1 addition & 1 deletion bin/x64/development/sl.nrd.dll
Git LFS file not shown
2 changes: 1 addition & 1 deletion bin/x64/development/sl.nvperf.dll
Git LFS file not shown
2 changes: 1 addition & 1 deletion bin/x64/development/sl.pcl.dll
Git LFS file not shown
2 changes: 1 addition & 1 deletion bin/x64/development/sl.reflex.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/nvngx_deepdvc.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/nvngx_dlss.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/nvngx_dlssg.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/sl.common.dll
Git LFS file not shown
2 changes: 1 addition & 1 deletion bin/x64/sl.deepdvc.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/sl.dlss.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/sl.dlss_g.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/sl.interposer.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/sl.nis.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/sl.nrd.dll
Git LFS file not shown
2 changes: 1 addition & 1 deletion bin/x64/sl.nvperf.dll
Git LFS file not shown
4 changes: 2 additions & 2 deletions bin/x64/sl.pcl.dll
Git LFS file not shown
2 changes: 1 addition & 1 deletion bin/x64/sl.reflex.dll
Git LFS file not shown
89 changes: 77 additions & 12 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,22 +1,87 @@
======== Release 2.4.10 Entries ========

* Added debug names for Streamline-created Vulkan objects.

* Added `sl::Result::eWarnOutOfVRAM` to `sl::getResultAsStr()` helper
function.
Reported on GitHub by @QDanteQ as issue #38

* Improved support for depth-stencil formats when using Vulkan.

* Deprecated the `sl.nrd` plugin; this plugin will be removed in a future
release.

* Fixed a regression introduced in SL 2.4.0 where options set via calls to
`slDLSSGSetOptions()` would not persist across frames.

* Fixed a bug in `sl.common` which violated the following Vulkan valid usage IDs:
- `VUID-vkCmdCopyBuffer-srcBuffer-00118`
- `VUID-vkDestroyDevice-device-05137`
- `VUID-VkImageMemoryBarrier-newLayout-01198`
- `VUID-VkSubmitInfo-pWaitSemaphores-parameter`

* Fixed a bug in `sl.common` where descriptor sets may have been used before
being properly initialized.
Reported on GitHub by @Bizzarrus as issue #30

* Fixed a bug in `sl.common` where descriptor processing could fail on
Vulkan.
Reported on GitHub by @Bizzarrus as issue #29

* Fixed a bug in `sl.common` where calls to `getSystemCaps()` would leak
D3DKMTAdapter handles.
Reported on GitHub by @Nukem9 as issue #28

* Fixed a bug in `sl.dlssg` where unused memory would be allocated when
`sl::DLSSGFlags::eShowOnlyInterpolatedFrame` was in used.

* Fixed a bug in `sl.dlssg` which violated the following Vulkan valid usage IDs:
- `UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout`
- `UNASSIGNED-vkQueueSubmit-QueueForwardProgress`
- `VUID-vkAcquireNextImageKHR-semaphore-01779`
- `VUID-vkDestroyDevice-device-05137`
- `VUID-vkQueueSubmit-pWaitSemaphores-03238`

* Fixed a bug in `sl.imgui` which violated the following Vulkan valid usage IDs:
- `VUID-VkMappedMemoryRange-size-01389`

* Fixed a bug in `sl.interposer` which violated the following Vulkan valid
usage IDs:
- `VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383`

* Fixed a bug in `sl.nis` where it did not properly request `shaderFloat16`
feature support.
Reported on GitHub by @dzhdanNV as issue #32

* Fixed the documentation for `sl.nis` to indicate that `slNISSetOptions`
should be used to set `sl::NISOptions`.
Reported on GitHub by @Bizzarrus as issue #34

======== Release 2.4.1 Entries ========

* Fixed a bug in `sl.dlssg` where tagged
`sl::kBufferTypeBidirectionalDistortionField` extents were incorrectly
applied to `sl::kBufferTypeDepth` inputs, causing visual corruption.

======== Release 2.4.0 Entries ========
* Added support for upscaling Alpha in `sl.dlss`.
* Added support for multiple viewports in `sl.dlss_g`.

* Added support for upscaling Alpha in `sl.dlss`.

* Added support for multiple viewports in `sl.dlss_g`.
See section 5.0 "MULTIPLE VIEWPORTS" in `ProgrammingGuideDLSS_G.md` for more information.

* Added support for `VK_FORMAT_D32_SFLOAT_S8_UINT`.
* Added fullscreen menu detection in `sl.dlss_g`.

* Added fullscreen menu detection in `sl.dlss_g`.
See section 6.3 "AUTOMATICALLY DISABLING DLSS-G IN MENUS" in `ProgrammingGuideDLSS_G.md` for more information.

* Added support for a new preset `sl::DLSSPreset::ePresetE`. This is now the default preset for DLSS SR.

* Deprecated the ambiguous flag `sl::ReflexOptions::useMarkersToOptimize`.

======== Release 2.3.0 Entries ========

* Added support for DeepDVC with a new plugin: `sl.deepdvc`.
* Added support for DeepDVC with a new plugin: `sl.deepdvc`.
See `ProgrammingGuideDeepDVC.md` for more information see.

* Added a new plugin `sl.pcl` for handling the IHV-agnostic functionality
Expand All @@ -27,12 +92,12 @@
the backbuffer size for `sl.dlssg`. See `ProgrammingGuideDLSS_G.md` for
more information.

* Added support for the Nsight Perf SDK with a new plugin: `sl.nvperf`.
* Added support for the Nsight Perf SDK with a new plugin: `sl.nvperf`.
See `Debugging - Nsight-Perf-SDK GUI.md` for more information

* Added a new `sl::DLSSGFlags` enumeration value `eRetainResourcesWhenOff`
for controlling resource retention behavior on changes to `sl::DLSSGOptions::mode`.
See section 6.2 "RETAINING RESOURCES WHEN DLSS-G IS OFF" in `ProgrammingGuideDLSS_G.md`
for controlling resource retention behavior on changes to `sl::DLSSGOptions::mode`.
See section 6.2 "RETAINING RESOURCES WHEN DLSS-G IS OFF" in `ProgrammingGuideDLSS_G.md`
for more information.

* Added a CMakeLists file for easier integration into projects using the
Expand Down
3 changes: 3 additions & 0 deletions docs/Debugging - NRD.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# Debugging NRD

> The NRD SL feature has been deprecated and will soon be removed. Please migrate to integrating the NRD SDK.
Currently NRD plugin supports debbugging through the validation layer.

# VALIDATION LAYER
Expand Down
18 changes: 13 additions & 5 deletions docs/ProgrammingGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Streamline - SL
=======================

Version 2.4.0
Version 2.4.10
=======

1 SETTING UP
Expand Down Expand Up @@ -133,7 +133,7 @@ Here is the typical lifecycle for SL features:
* After device creation, any calls to SL will succeed only if the feature is FULLY functional on that device
* This means that the set of features that return true from `slIsFeatureSupported` AFTER device creation can be smaller (but not larger) than the set that returned true from `slIsFeatureSupported` after slInit, but before device creation
* And thus, at this point, any SL method can be used safely since all required and supported features are initialized
* In addition, at this point it is possible to [explicitly allocate/free resources used by feature(s)](#2224-resource-allocation-and-de-allocation)
* In addition, at this point it is possible to [explicitly allocate/free resources used by feature(s)](#27-explicit-resource-allocation-and-de-allocation)

> **IMPORTANT:**
> `slInit` must NOT be called within DLLMain entry point in your application because that can cause a deadlock.
Expand Down Expand Up @@ -397,7 +397,7 @@ SL_API sl::Result slInit(const sl::Preferences &pref, uint64_t sdkVersion = sl::
All SL functions return `sl::Result` which is defined in `sl_result.h`. However, since SL can be used as an interposer **it is not always possible to immediately report all errors or warnings after a specific SL API is invoked**. This is because some functionality can be triggered with some delay or asynchronously when DXGI/D3D/Vulkan APIs are called by the host application. Therefore, the SL SDK provides `Preferences::logMessagesCallback` so that any **asynchronous errors or warnings** can be tracked by placing breakpoints when `eLogTypeError` and/or `eLogTypeWarn` messages are received. Another useful feature is the debug console window, which should be enabled in development by setting `Preferences::showConsole` to true. In the debug console window, each error will be highlighted in red while warnings are highlighted in yellow to make it easier to notice them.

> **NOTE:**
> See [section 2.4](#24-checking-features-configuration) for more details on how to get detailed information if specific feature is not supported or fails to initialize.
> See [section 2.4](#24-checking-if-a-feature-is-supported) for more details on how to get detailed information if specific feature is not supported or fails to initialize.
#### 2.2.5 OVER THE AIR (OTA) UPDATES

Expand Down Expand Up @@ -1245,7 +1245,7 @@ By design, SL SDK enables `host assisted replacement or injection of specific re
SL_API sl::Result slEvaluateFeature(sl::Feature feature, const sl::FrameToken& frame, const sl::BaseStructure** inputs, uint32_t numInputs, sl::CommandBuffer* cmdBuffer);
```

Plase note that **host is responsible for restoring the command buffer(list) state** after calling `slEvaluate`. For more details on which states are affected please see [restore pipeline section](./ProgrammingGuideManualHooking.md#80-restoring-command-listbuffer-state)
Plase note that **host is responsible for restoring the command buffer(list) state** after calling `slEvaluate`. For more details on which states are affected please see [restore pipeline section](./ProgrammingGuideManualHooking.md#70-restoring-command-listbuffer-state)

> **NOTE:**
> DLSS-G is a unique case since it already has the marker provided by the existing API (SwapChain::Present) hence there is no need to call `slEvaluateFeature` to enable DLSS-G
Expand Down Expand Up @@ -1346,6 +1346,14 @@ SL_API sl::Result slShutdown();
> If shutdown is called too early, any SL features which are enabled and running will stop functioning and the host application will fallback to the
default implementation. For example, if DLSS is enabled and running and shutdown is called, the `sl.dlss` plugin will be unloaded, hence any `evaluate` or `slIsFeatureSupported` calls will return an error and the host application should fallback to the default implementation (for example TAAU)

### 2.15 MULTIPLE SWAP CHAINS

The current tagging API in Streamline is designed with a single swap chain in mind. When a resource is tagged with a life-cycle of `eValidUntilPresent` there is no way to specify on which swap chain the Present() is.

So, if Streamline sees multiple swap chains- it will hook the first one, and it will log a warning for all other swap chains.

If an application needs to create multiple swap chains, it can use [manual hooking](ProgrammingGuideManualHooking.md)- and use `slUpgradeInterface()` to inform Streamline which swap chain it needs to attach to. That way the warning about multiple swap chains may be avoided.

3 VALIDATING SL INTEGRATION WHEN REPLACING PLATFORM LIBRARIES
-----------------------------

Expand Down Expand Up @@ -1378,7 +1386,7 @@ The remaining modules are optional depending on which features are enabled in yo

* If Steam overlay is not showing up please ensure that SteamAPI_Init() is called **before** any D3D or DXGI calls (device create, factory create etc.)
* If D3D debug layer is complaining about incorrect resource states please provide correct state when tagging SL resources (see sl::Resource structure)
* If you get a crash in Swapchain::Present or some similar unexpected behavior please double check that you are NOT linking dxgi.lib/d3d12.lib together with the sl.interposer.dll. See [section 3](#3-validating-sl-integration) in this guide.
* If you get a crash in Swapchain::Present or some similar unexpected behavior please double check that you are NOT linking dxgi.lib/d3d12.lib together with the sl.interposer.dll. See [section 3](#3-validating-sl-integration-when-replacing-platform-libraries) in this guide.
* If SL does not work correctly make sure that some other library which includes `dxgi` or `d3d11/12` is not linked in your application (like for example `WindowsApp.lib`)
* Third party overlays can disable SL interposer, always make sure to call `slSetD3DDevice` or `slSetVulkanInfo`
* Make sure that all matrices are multiplied in the correct order and provided in row-major order **without any jitter**
Expand Down
Loading

0 comments on commit c709dd9

Please sign in to comment.