diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-08-21 16:04:42 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-21 13:04:42 -0700 |
| commit | fcac02e405661de311b5ceebbd6d3e2c78bf8aea (patch) | |
| tree | 6e79865b39f0739d2ac9c3f91cc4129c244b6977 /tools/gfx/nvapi | |
| parent | 49067fd2e97b40649df3fa2ce096f78c2e45da5a (diff) | |
Vulkan update/NVAPI support (#1511)
* First pass at incorporating nvapi into test harness.
* D3d12 Atomic Float Add via NVAPI working
* Dx12 atomic float appears to work.
* Atomic float add on Dx12.
* Added atomic64 feature addition to vk.
Fix correct output for atomic-float-byte-address.slang
* Disable atomic float failing tests.
* Upgraded VK headers.
* Detect atomic float availability on VK.
* Try to get test working for in64 atomic.
* Made HLSL prelude controlled via the render-test requirements.
* Added -enable-nvapi to premake.
* Fix D3D12Renderer when NVAPI is not available.
* Small improvements to VKRenderer.
* Improve atomic documentation in target-compatibility.md.
Diffstat (limited to 'tools/gfx/nvapi')
| -rw-r--r-- | tools/gfx/nvapi/nvapi-include.h | 19 | ||||
| -rw-r--r-- | tools/gfx/nvapi/nvapi-util.cpp | 30 | ||||
| -rw-r--r-- | tools/gfx/nvapi/nvapi-util.h | 19 |
3 files changed, 68 insertions, 0 deletions
diff --git a/tools/gfx/nvapi/nvapi-include.h b/tools/gfx/nvapi/nvapi-include.h new file mode 100644 index 000000000..e3674af95 --- /dev/null +++ b/tools/gfx/nvapi/nvapi-include.h @@ -0,0 +1,19 @@ +// nvapi-include.h +#pragma once + +// A helper that makes the NVAPI available across targets + +#ifdef GFX_NVAPI +// On windows if we include NVAPI, we must include windows.h first + +# ifdef _WIN32 +# define WIN32_LEAN_AND_MEAN +# define NOMINMAX +# include <Windows.h> +# undef WIN32_LEAN_AND_MEAN +# undef NOMINMAX +# endif + +# include <nvapi.h> +#endif + diff --git a/tools/gfx/nvapi/nvapi-util.cpp b/tools/gfx/nvapi/nvapi-util.cpp new file mode 100644 index 000000000..63bcc65fc --- /dev/null +++ b/tools/gfx/nvapi/nvapi-util.cpp @@ -0,0 +1,30 @@ +#include "nvapi-util.h" + +#include "nvapi-include.h" + +namespace gfx { + +static SlangResult g_initStatus = SLANG_E_UNINITIALIZED; + +/* static */SlangResult NVAPIUtil::initialize() +{ +#ifdef GFX_NVAPI + if (g_initStatus == SLANG_E_UNINITIALIZED) + { + NvAPI_Status ret = NVAPI_OK; + ret = NvAPI_Initialize(); + g_initStatus = (ret == NVAPI_OK) ? SLANG_OK : SLANG_E_NOT_AVAILABLE; + } +#else + g_initStatus = SLANG_E_NOT_AVAILABLE; +#endif + + return g_initStatus; +} + +/* static */bool NVAPIUtil::isAvailable() +{ + return SLANG_SUCCEEDED(g_initStatus); +} + +} // gfx diff --git a/tools/gfx/nvapi/nvapi-util.h b/tools/gfx/nvapi/nvapi-util.h new file mode 100644 index 000000000..704f4ede4 --- /dev/null +++ b/tools/gfx/nvapi/nvapi-util.h @@ -0,0 +1,19 @@ +// nvapi-util.h +#pragma once + +#include "../../slang-com-helper.h" +#include "../../slang-com-ptr.h" + +namespace gfx { + +struct NVAPIUtil +{ + /// Set up NVAPI for use. Must be called before any other function is used. + static SlangResult initialize(); + /// True if the NVAPI is available, can be called even if initialize fails. + /// If initialize has not been called will return false + static bool isAvailable(); +}; + + +} // gfx |
