Skip to content

Commit

Permalink
1.149:
Browse files Browse the repository at this point in the history
HIGHLIGHTS:
- Core: simplified understanding of how to work with descriptor ranges and sets (no functional changes)
- minor improvements

BREAKING CHANGES:
- "offsetInRange" => "baseDescriptor" (for "DescriptorRangeUpdateDesc")
- "offsetInRange" => "descriptorIndex" (for clear storage descs)
- "setIndexInPipelineLayout" => "setIndex"
- rotated "src/dst" and "base" prefixes in "DescriptorSetCopyDesc"

DETAILS:
- Core: "[ Pipeline Layout ]" section has been reorganized into "[ Pipeline layout and descriptors management ]" (by regrouping some structs)
- Core: highlighted and explained in comments "PipelineLayout => DescriptorSet => DescriptorRange => Descriptor" idiom
- Core: explained "setIndex" => "rangeIndex" => "descriptorIndex"
- Core: a few name changes
- D3D12: relaxed global UAV barrier conditions
  • Loading branch information
dzhdanNV committed Sep 11, 2024
1 parent 87597b3 commit 3a8cdc0
Show file tree
Hide file tree
Showing 40 changed files with 186 additions and 180 deletions.
10 changes: 5 additions & 5 deletions Include/NRI.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ Non-goals:
#pragma once

#define NRI_VERSION_MAJOR 1
#define NRI_VERSION_MINOR 148
#define NRI_VERSION_DATE "10 September 2024"
#define NRI_VERSION_MINOR 149
#define NRI_VERSION_DATE "11 September 2024"

#include "NRIDescs.h"

Expand Down Expand Up @@ -98,7 +98,7 @@ NriStruct(CoreInterface) {
// {
// Setup
void (NRI_CALL *CmdSetDescriptorPool)(NriRef(CommandBuffer) commandBuffer, const NriRef(DescriptorPool) descriptorPool);
void (NRI_CALL *CmdSetDescriptorSet)(NriRef(CommandBuffer) commandBuffer, uint32_t setIndexInPipelineLayout, const NriRef(DescriptorSet) descriptorSet, const uint32_t* dynamicConstantBufferOffsets);
void (NRI_CALL *CmdSetDescriptorSet)(NriRef(CommandBuffer) commandBuffer, uint32_t setIndex, const NriRef(DescriptorSet) descriptorSet, const uint32_t* dynamicConstantBufferOffsets);
void (NRI_CALL *CmdSetPipelineLayout)(NriRef(CommandBuffer) commandBuffer, const NriRef(PipelineLayout) pipelineLayout);
void (NRI_CALL *CmdSetPipeline)(NriRef(CommandBuffer) commandBuffer, const NriRef(Pipeline) pipeline);
void (NRI_CALL *CmdSetConstants)(NriRef(CommandBuffer) commandBuffer, uint32_t pushConstantIndex, const void* data, uint32_t size);
Expand Down Expand Up @@ -180,8 +180,8 @@ NriStruct(CoreInterface) {
void (NRI_CALL *UpdateDynamicConstantBuffers)(NriRef(DescriptorSet) descriptorSet, uint32_t baseBuffer, uint32_t bufferNum, const NriPtr(Descriptor) const* descriptors);
void (NRI_CALL *CopyDescriptorSet)(NriRef(DescriptorSet) descriptorSet, const NriRef(DescriptorSetCopyDesc) descriptorSetCopyDesc);

// Descriptor pool
Nri(Result) (NRI_CALL *AllocateDescriptorSets)(NriRef(DescriptorPool) descriptorPool, const NriRef(PipelineLayout) pipelineLayout, uint32_t setIndexInPipelineLayout, NriPtr(DescriptorSet)* descriptorSets, uint32_t instanceNum, uint32_t variableDescriptorNum);
// Descriptor pool ("DescriptorSet" entities don't require destroying)
Nri(Result) (NRI_CALL *AllocateDescriptorSets)(NriRef(DescriptorPool) descriptorPool, const NriRef(PipelineLayout) pipelineLayout, uint32_t setIndex, NriPtr(DescriptorSet)* descriptorSets, uint32_t instanceNum, uint32_t variableDescriptorNum);
void (NRI_CALL *ResetDescriptorPool)(NriRef(DescriptorPool) descriptorPool);

// Command allocator
Expand Down
98 changes: 53 additions & 45 deletions Include/NRIDescs.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

#include <stdint.h>

#if defined(__clang__) || defined(__GNUC__)
#if defined(__clang__) || defined(__GNUC__)
#define NRI_CALL
#else
#define NRI_CALL __stdcall
Expand Down Expand Up @@ -321,6 +321,11 @@ NriUnion(Color) {
Nri(Color32i) i;
};

NriUnion(ClearValue) {
Nri(DepthStencil) depthStencil;
Nri(Color) color;
};

NriStruct(SampleLocation) {
int8_t x, y; // [-8; 7]
};
Expand Down Expand Up @@ -499,22 +504,21 @@ NriStruct(DescriptorPoolDesc) {
#pragma endregion

//===============================================================================================================================
#pragma region [ Pipeline layout ]
#pragma region [ Pipeline layout and descriptors management ]
//===============================================================================================================================

// "setIndex" means "descriptor set index in the pipeline layout, provided as an argument or bound to the pipeline"
// "rangeIndex" and "baseRange" mean "descriptor range (base) index in the descriptor set"
// "descriptorIndex" and "baseDescriptor" mean "descriptor (base) index in the descriptor range"

// "DescriptorRange" consists of "Descriptor" entities
NriBits(DescriptorRangeBits, uint8_t,
NONE = 0,
PARTIALLY_BOUND = NriBit(0), // descriptors in range may not contain valid descriptors at the time the descriptors are consumed (but referenced descriptors must be valid)
ARRAY = NriBit(1), // descriptors in range are organized into an array
VARIABLE_SIZED_ARRAY = NriBit(2) // descriptors in range are organized into a variable-sized array, whose size is specified via "variableDescriptorNum" argument of "AllocateDescriptorSets" function
);

NriStruct(PushConstantDesc) {
uint32_t registerIndex;
uint32_t size;
Nri(StageBits) shaderStages;
};

NriStruct(DescriptorRangeDesc) {
uint32_t baseRegisterIndex;
uint32_t descriptorNum; // treated as max size if "VARIABLE_SIZED_ARRAY" flag is set
Expand All @@ -523,6 +527,7 @@ NriStruct(DescriptorRangeDesc) {
Nri(DescriptorRangeBits) flags;
};

// "DescriptorSet" consists of "DescriptorRange" entities
NriStruct(DynamicConstantBufferDesc) {
uint32_t registerIndex;
Nri(StageBits) shaderStages;
Expand All @@ -536,6 +541,13 @@ NriStruct(DescriptorSetDesc) {
uint32_t dynamicConstantBufferNum;
};

// "PipelineLayout" consists of "DescriptorSet" descriptions
NriStruct(PushConstantDesc) {
uint32_t registerIndex;
uint32_t size;
Nri(StageBits) shaderStages;
};

NriStruct(PipelineLayoutDesc) {
const NriPtr(DescriptorSetDesc) descriptorSets;
const NriPtr(PushConstantDesc) pushConstants;
Expand All @@ -546,6 +558,23 @@ NriStruct(PipelineLayoutDesc) {
bool enableD3D12DrawParametersEmulation; // implicitly expects "enableD3D12DrawParametersEmulation" passed during device creation
};

// Updating descriptors
NriStruct(DescriptorRangeUpdateDesc) {
const NriPtr(Descriptor) const* descriptors;
uint32_t descriptorNum;
uint32_t baseDescriptor;
};

NriStruct(DescriptorSetCopyDesc) {
const NriPtr(DescriptorSet) srcDescriptorSet;
uint32_t srcBaseRange;
uint32_t dstBaseRange;
uint32_t rangeNum;
uint32_t srcBaseDynamicConstantBuffer;
uint32_t dstBaseDynamicConstantBuffer;
uint32_t dynamicConstantBufferNum;
};

#pragma endregion

//===============================================================================================================================
Expand Down Expand Up @@ -790,24 +819,20 @@ NriEnum(BlendFunc, uint8_t,
);

NriBits(ColorWriteBits, uint8_t,
R = NriBit(0),
G = NriBit(1),
B = NriBit(2),
A = NriBit(3),

RGB = NriMember(ColorWriteBits, R) | // "wingdi.h" must not be included after
NriMember(ColorWriteBits, G) |
NriMember(ColorWriteBits, B),

RGBA = NriMember(ColorWriteBits, RGB) |
NriMember(ColorWriteBits, A)
NONE = 0,
R = NriBit(0),
G = NriBit(1),
B = NriBit(2),
A = NriBit(3),

RGB = NriMember(ColorWriteBits, R) | // "wingdi.h" must not be included after
NriMember(ColorWriteBits, G) |
NriMember(ColorWriteBits, B),

RGBA = NriMember(ColorWriteBits, RGB) |
NriMember(ColorWriteBits, A)
);

NriUnion(ClearValue) {
Nri(DepthStencil) depthStencil;
Nri(Color) color;
};

NriStruct(ClearDesc) {
Nri(ClearValue) value;
Nri(PlaneBits) planes;
Expand Down Expand Up @@ -1088,34 +1113,17 @@ NriStruct(TextureMemoryBindingDesc) {
NriStruct(ClearStorageBufferDesc) {
const NriPtr(Descriptor) storageBuffer;
uint32_t value;
uint32_t setIndexInPipelineLayout;
uint32_t setIndex;
uint32_t rangeIndex;
uint32_t offsetInRange;
uint32_t descriptorIndex;
};

NriStruct(ClearStorageTextureDesc) {
const NriPtr(Descriptor) storageTexture;
Nri(ClearValue) value;
uint32_t setIndexInPipelineLayout;
uint32_t setIndex;
uint32_t rangeIndex;
uint32_t offsetInRange;
};

// Descriptor set
NriStruct(DescriptorRangeUpdateDesc) {
const NriPtr(Descriptor) const* descriptors;
uint32_t descriptorNum;
uint32_t offsetInRange;
};

NriStruct(DescriptorSetCopyDesc) {
const NriPtr(DescriptorSet) srcDescriptorSet;
uint32_t baseSrcRange;
uint32_t baseDstRange;
uint32_t rangeNum;
uint32_t baseSrcDynamicConstantBuffer;
uint32_t baseDstDynamicConstantBuffer;
uint32_t dynamicConstantBufferNum;
uint32_t descriptorIndex;
};

// Command signatures (default)
Expand Down
2 changes: 1 addition & 1 deletion Resources/Version.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#define STR(x) STR_HELPER(x)

#define VERSION_MAJOR 1
#define VERSION_MINOR 148
#define VERSION_MINOR 149
#define VERSION_BUILD 0
#define VERSION_REVISION 0

Expand Down
12 changes: 5 additions & 7 deletions Source/D3D11/CommandBufferD3D11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -352,9 +352,9 @@ void CommandBufferD3D11::SetDescriptorPool(const DescriptorPool& descriptorPool)
MaybeUnused(descriptorPool);
}

void CommandBufferD3D11::SetDescriptorSet(uint32_t setIndexInPipelineLayout, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets) {
void CommandBufferD3D11::SetDescriptorSet(uint32_t setIndex, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets) {
const DescriptorSetD3D11& descriptorSetImpl = (DescriptorSetD3D11&)descriptorSet;
m_PipelineLayout->BindDescriptorSet(m_BindingState, m_DeferredContext, setIndexInPipelineLayout, descriptorSetImpl, dynamicConstantBufferOffsets);
m_PipelineLayout->BindDescriptorSet(m_BindingState, m_DeferredContext, setIndex, descriptorSetImpl, dynamicConstantBufferOffsets);
}

void CommandBufferD3D11::SetConstants(uint32_t pushConstantIndex, const void* data, uint32_t size) {
Expand Down Expand Up @@ -489,16 +489,14 @@ void CommandBufferD3D11::DispatchIndirect(const Buffer& buffer, uint64_t offset)
void CommandBufferD3D11::Barrier(const BarrierGroupDesc& barrierGroupDesc) {
MaybeUnused(barrierGroupDesc);
#if NRI_USE_EXT_LIBS
constexpr AccessBits STORAGE_MASK = AccessBits::SHADER_RESOURCE_STORAGE;

if (barrierGroupDesc.textureNum == 0 && barrierGroupDesc.bufferNum == 0)
return;

uint32_t flags = 0;

for (uint32_t i = 0; i < barrierGroupDesc.globalNum; i++) {
const GlobalBarrierDesc& barrier = barrierGroupDesc.globals[i];
if ((barrier.before.access & STORAGE_MASK) && (barrier.after.access & STORAGE_MASK)) {
if ((barrier.before.access & AccessBits::SHADER_RESOURCE_STORAGE) && (barrier.after.access & AccessBits::SHADER_RESOURCE_STORAGE)) {
bool isGraphics = barrier.before.stages == StageBits::ALL || (barrier.before.stages & (StageBits::DRAW));
if (isGraphics)
flags |= NVAPI_D3D_BEGIN_UAV_OVERLAP_GFX_WFI;
Expand All @@ -511,7 +509,7 @@ void CommandBufferD3D11::Barrier(const BarrierGroupDesc& barrierGroupDesc) {

for (uint32_t i = 0; i < barrierGroupDesc.bufferNum; i++) {
const BufferBarrierDesc& barrier = barrierGroupDesc.buffers[i];
if ((barrier.before.access & STORAGE_MASK) && (barrier.after.access & STORAGE_MASK)) {
if ((barrier.before.access & AccessBits::SHADER_RESOURCE_STORAGE) && (barrier.after.access & AccessBits::SHADER_RESOURCE_STORAGE)) {
bool isGraphics = barrier.before.stages == StageBits::ALL || (barrier.before.stages & (StageBits::DRAW));
if (isGraphics)
flags |= NVAPI_D3D_BEGIN_UAV_OVERLAP_GFX_WFI;
Expand All @@ -524,7 +522,7 @@ void CommandBufferD3D11::Barrier(const BarrierGroupDesc& barrierGroupDesc) {

for (uint32_t i = 0; i < barrierGroupDesc.textureNum; i++) {
const TextureBarrierDesc& barrier = barrierGroupDesc.textures[i];
if ((barrier.before.access & STORAGE_MASK) && (barrier.after.access & STORAGE_MASK)) {
if ((barrier.before.access & AccessBits::SHADER_RESOURCE_STORAGE) && (barrier.after.access & AccessBits::SHADER_RESOURCE_STORAGE)) {
bool isGraphics = barrier.before.stages == StageBits::ALL || (barrier.before.stages & (StageBits::DRAW));
if (isGraphics)
flags |= NVAPI_D3D_BEGIN_UAV_OVERLAP_GFX_WFI;
Expand Down
2 changes: 1 addition & 1 deletion Source/D3D11/CommandBufferD3D11.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ struct CommandBufferD3D11 final : public CommandBufferHelper {
void SetPipelineLayout(const PipelineLayout& pipelineLayout);
void SetPipeline(const Pipeline& pipeline);
void SetDescriptorPool(const DescriptorPool& descriptorPool);
void SetDescriptorSet(uint32_t setIndexInPipelineLayout, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets);
void SetDescriptorSet(uint32_t setIndex, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets);
void SetConstants(uint32_t pushConstantIndex, const void* data, uint32_t size);
void Draw(const DrawDesc& drawDesc);
void DrawIndexed(const DrawIndexedDesc& drawIndexedDesc);
Expand Down
4 changes: 2 additions & 2 deletions Source/D3D11/CommandBufferD3D11.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ static void NRI_CALL CmdSetDescriptorPool(CommandBuffer& commandBuffer, const De
((CommandBufferD3D11&)commandBuffer).SetDescriptorPool(descriptorPool);
}

static void NRI_CALL CmdSetDescriptorSet(CommandBuffer& commandBuffer, uint32_t setIndexInPipelineLayout, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets) {
((CommandBufferD3D11&)commandBuffer).SetDescriptorSet(setIndexInPipelineLayout, descriptorSet, dynamicConstantBufferOffsets);
static void NRI_CALL CmdSetDescriptorSet(CommandBuffer& commandBuffer, uint32_t setIndex, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets) {
((CommandBufferD3D11&)commandBuffer).SetDescriptorSet(setIndex, descriptorSet, dynamicConstantBufferOffsets);
}

static void NRI_CALL CmdSetConstants(CommandBuffer& commandBuffer, uint32_t pushConstantIndex, const void* data, uint32_t size) {
Expand Down
10 changes: 5 additions & 5 deletions Source/D3D11/CommandBufferEmuD3D11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,8 @@ void CommandBufferEmuD3D11::Submit() {
commandBuffer.SetPipeline(*pipeline);
} break;
case BIND_DESCRIPTOR_SET: {
uint32_t setIndexInPipelineLayout;
Read(m_PushBuffer, i, setIndexInPipelineLayout);
uint32_t setIndex;
Read(m_PushBuffer, i, setIndex);

DescriptorSet* descriptorSet;
Read(m_PushBuffer, i, descriptorSet);
Expand All @@ -259,7 +259,7 @@ void CommandBufferEmuD3D11::Submit() {
uint32_t dynamicConstantBufferNum;
Read(m_PushBuffer, i, dynamicConstantBufferOffsets, dynamicConstantBufferNum);

commandBuffer.SetDescriptorSet(setIndexInPipelineLayout, *descriptorSet, dynamicConstantBufferOffsets);
commandBuffer.SetDescriptorSet(setIndex, *descriptorSet, dynamicConstantBufferOffsets);
} break;
case SET_CONSTANTS: {
uint32_t pushConstantRangeIndex;
Expand Down Expand Up @@ -570,11 +570,11 @@ inline void CommandBufferEmuD3D11::SetPipeline(const Pipeline& pipeline) {
Push(m_PushBuffer, &pipeline);
}

inline void CommandBufferEmuD3D11::SetDescriptorSet(uint32_t setIndexInPipelineLayout, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets) {
inline void CommandBufferEmuD3D11::SetDescriptorSet(uint32_t setIndex, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets) {
uint32_t dynamicConstantBufferNum = ((DescriptorSetD3D11&)descriptorSet).GetDynamicConstantBufferNum();

Push(m_PushBuffer, BIND_DESCRIPTOR_SET);
Push(m_PushBuffer, setIndexInPipelineLayout);
Push(m_PushBuffer, setIndex);
Push(m_PushBuffer, &descriptorSet);
Push(m_PushBuffer, dynamicConstantBufferOffsets, dynamicConstantBufferNum);
}
Expand Down
2 changes: 1 addition & 1 deletion Source/D3D11/CommandBufferEmuD3D11.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ struct CommandBufferEmuD3D11 final : public CommandBufferHelper {
void SetIndexBuffer(const Buffer& buffer, uint64_t offset, IndexType indexType);
void SetPipelineLayout(const PipelineLayout& pipelineLayout);
void SetPipeline(const Pipeline& pipeline);
void SetDescriptorSet(uint32_t setIndexInPipelineLayout, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets);
void SetDescriptorSet(uint32_t setIndex, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets);
void SetConstants(uint32_t pushConstantIndex, const void* data, uint32_t size);
void Draw(const DrawDesc& drawDesc);
void DrawIndexed(const DrawIndexedDesc& drawIndexedDesc);
Expand Down
4 changes: 2 additions & 2 deletions Source/D3D11/CommandBufferEmuD3D11.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ static void NRI_CALL CmdSetDescriptorPool(CommandBuffer& commandBuffer, const De
MaybeUnused(commandBuffer, descriptorPool);
}

static void NRI_CALL CmdSetDescriptorSet(CommandBuffer& commandBuffer, uint32_t setIndexInPipelineLayout, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets) {
((CommandBufferEmuD3D11&)commandBuffer).SetDescriptorSet(setIndexInPipelineLayout, descriptorSet, dynamicConstantBufferOffsets);
static void NRI_CALL CmdSetDescriptorSet(CommandBuffer& commandBuffer, uint32_t setIndex, const DescriptorSet& descriptorSet, const uint32_t* dynamicConstantBufferOffsets) {
((CommandBufferEmuD3D11&)commandBuffer).SetDescriptorSet(setIndex, descriptorSet, dynamicConstantBufferOffsets);
}

static void NRI_CALL CmdSetConstants(CommandBuffer& commandBuffer, uint32_t pushConstantIndex, const void* data, uint32_t size) {
Expand Down
4 changes: 2 additions & 2 deletions Source/D3D11/DescriptorPoolD3D11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Result DescriptorPoolD3D11::Create(const DescriptorPoolDesc& descriptorPoolDesc)
//================================================================================================================

inline Result DescriptorPoolD3D11::AllocateDescriptorSets(
const PipelineLayout& pipelineLayout, uint32_t setIndexInPipelineLayout, DescriptorSet** descriptorSets, uint32_t instanceNum, uint32_t variableDescriptorNum) {
const PipelineLayout& pipelineLayout, uint32_t setIndex, DescriptorSet** descriptorSets, uint32_t instanceNum, uint32_t variableDescriptorNum) {
if (variableDescriptorNum)
return Result::UNSUPPORTED;

Expand All @@ -38,7 +38,7 @@ inline Result DescriptorPoolD3D11::AllocateDescriptorSets(
for (uint32_t i = 0; i < instanceNum; i++) {
const DescriptorD3D11** descriptors = m_DescriptorPool.data() + m_DescriptorPoolOffset;
DescriptorSetD3D11* descriptorSet = &m_DescriptorSets[m_DescriptorSetIndex++];
uint32_t descriptorNum = descriptorSet->Initialize(pipelineLayoutD3D11, setIndexInPipelineLayout, descriptors);
uint32_t descriptorNum = descriptorSet->Initialize(pipelineLayoutD3D11, setIndex, descriptors);
descriptorSets[i] = (DescriptorSet*)descriptorSet;

m_DescriptorPoolOffset += descriptorNum;
Expand Down
2 changes: 1 addition & 1 deletion Source/D3D11/DescriptorPoolD3D11.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ struct DescriptorPoolD3D11 {
}

Result AllocateDescriptorSets(
const PipelineLayout& pipelineLayout, uint32_t setIndexInPipelineLayout, DescriptorSet** descriptorSets, uint32_t instanceNum, uint32_t variableDescriptorNum);
const PipelineLayout& pipelineLayout, uint32_t setIndex, DescriptorSet** descriptorSets, uint32_t instanceNum, uint32_t variableDescriptorNum);

private:
DeviceD3D11& m_Device;
Expand Down
4 changes: 2 additions & 2 deletions Source/D3D11/DescriptorPoolD3D11.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ static void NRI_CALL SetDescriptorPoolDebugName(DescriptorPool& descriptorPool,
((DescriptorPoolD3D11&)descriptorPool).SetDebugName(name);
}

static Result NRI_CALL AllocateDescriptorSets(DescriptorPool& descriptorPool, const PipelineLayout& pipelineLayout, uint32_t setIndexInPipelineLayout,
static Result NRI_CALL AllocateDescriptorSets(DescriptorPool& descriptorPool, const PipelineLayout& pipelineLayout, uint32_t setIndex,
DescriptorSet** descriptorSets, uint32_t instanceNum, uint32_t variableDescriptorNum) {
return ((DescriptorPoolD3D11&)descriptorPool).AllocateDescriptorSets(pipelineLayout, setIndexInPipelineLayout, descriptorSets, instanceNum, variableDescriptorNum);
return ((DescriptorPoolD3D11&)descriptorPool).AllocateDescriptorSets(pipelineLayout, setIndex, descriptorSets, instanceNum, variableDescriptorNum);
}

static void NRI_CALL ResetDescriptorPool(DescriptorPool& descriptorPool) {
Expand Down
Loading

0 comments on commit 3a8cdc0

Please sign in to comment.