Skip to content

Commit

Permalink
tests: Add coverage for NvAPI_D3D12_CreateCubinComputeShaderEx
Browse files Browse the repository at this point in the history
  • Loading branch information
liam-middlebrook committed Aug 15, 2023
1 parent a7a9d7b commit 2542588
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions tests/nvapi_d3d12.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,15 @@ TEST_CASE("D3D12 methods succeed", "[.d3d12]") {
ALLOW_CALL(commandList, QueryInterface(ID3D12GraphicsCommandListExt::guid, _))
.RETURN(E_NOINTERFACE);

FORBID_CALL(device, CreateCubinComputeShaderEx(_, _, _, _, _, _, _, _));
FORBID_CALL(device, CreateCubinComputeShaderWithName(_, _, _, _, _, _, _));
FORBID_CALL(device, DestroyCubinComputeShader(_));
FORBID_CALL(device, GetCudaTextureObject(_, _, _));
FORBID_CALL(device, GetCudaSurfaceObject(_, _));
FORBID_CALL(device, CaptureUAVInfo(_));
FORBID_CALL(commandList, LaunchCubinShader(_, _, _, _, _, _));

REQUIRE(NvAPI_D3D12_CreateCubinComputeShaderEx(static_cast<ID3D12Device*>(&device), nullptr, 0, 0, 0, 0, 0, "shader_name", nullptr) == NVAPI_ERROR);
REQUIRE(NvAPI_D3D12_CreateCubinComputeShaderWithName(static_cast<ID3D12Device*>(&device), nullptr, 0, 0, 0, 0, "shader_name", nullptr) == NVAPI_ERROR);
REQUIRE(NvAPI_D3D12_CreateCubinComputeShader(static_cast<ID3D12Device*>(&device), nullptr, 0, 0, 0, 0, nullptr) == NVAPI_ERROR);
REQUIRE(NvAPI_D3D12_DestroyCubinComputeShader(static_cast<ID3D12Device*>(&device), nullptr) == NVAPI_ERROR);
Expand All @@ -88,12 +90,14 @@ TEST_CASE("D3D12 methods succeed", "[.d3d12]") {
ALLOW_CALL(device, GetExtensionSupport(D3D12_VK_NVX_BINARY_IMPORT))
.RETURN(false);

FORBID_CALL(device, CreateCubinComputeShaderEx(_, _, _, _, _, _, _, _));
FORBID_CALL(device, CreateCubinComputeShaderWithName(_, _, _, _, _, _, _));
FORBID_CALL(device, DestroyCubinComputeShader(_));
FORBID_CALL(device, GetCudaTextureObject(_, _, _));
FORBID_CALL(device, GetCudaSurfaceObject(_, _));
FORBID_CALL(device, CaptureUAVInfo(_));

REQUIRE(NvAPI_D3D12_CreateCubinComputeShaderEx(static_cast<ID3D12Device*>(&device), nullptr, 0, 0, 0, 0, 0, "shader_name", nullptr) == NVAPI_ERROR);
REQUIRE(NvAPI_D3D12_CreateCubinComputeShaderWithName(static_cast<ID3D12Device*>(&device), nullptr, 0, 0, 0, 0, "shader_name", nullptr) == NVAPI_ERROR);
REQUIRE(NvAPI_D3D12_CreateCubinComputeShader(static_cast<ID3D12Device*>(&device), nullptr, 0, 0, 0, 0, nullptr) == NVAPI_ERROR);
REQUIRE(NvAPI_D3D12_DestroyCubinComputeShader(static_cast<ID3D12Device*>(&device), nullptr) == NVAPI_ERROR);
Expand Down Expand Up @@ -319,6 +323,25 @@ TEST_CASE("D3D12 methods succeed", "[.d3d12]") {
REQUIRE(commandListRefCount == 0);
}

SECTION("CreateCubinComputeShaderEx returns OK") {
const void* cubinData = nullptr;
auto cubinSize = 2U;
auto blockX = 3U;
auto blockY = 4U;
auto blockZ = 5U;
auto smemSize = 0U;
auto shaderName = "shader";
auto shaderHandle = reinterpret_cast<D3D12_CUBIN_DATA_HANDLE*>(0x912122);
auto handle = &shaderHandle;
REQUIRE_CALL(device, CreateCubinComputeShaderEx(cubinData, cubinSize, blockX, blockY, blockZ, smemSize, shaderName, handle))
.RETURN(S_OK)
.TIMES(1);

REQUIRE(NvAPI_D3D12_CreateCubinComputeShaderEx(static_cast<ID3D12Device*>(&device), cubinData, cubinSize, blockX, blockY, blockZ, smemSize, shaderName, reinterpret_cast<NVDX_ObjectHandle*>(handle)) == NVAPI_OK);
REQUIRE(deviceRefCount == 0);
REQUIRE(commandListRefCount == 0);
}

SECTION("DestroyCubinComputeShader returns OK") {
auto shaderHandle = reinterpret_cast<D3D12_CUBIN_DATA_HANDLE*>(0x912122);
REQUIRE_CALL(device, DestroyCubinComputeShader(shaderHandle))
Expand Down

0 comments on commit 2542588

Please sign in to comment.