mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
[dxvk] Reconfigure bindings
In order to map ICBs to uniform buffers, we need one spare constant buffer slot per shader stage.
This commit is contained in:
parent
af5de8a8ef
commit
a8eb7d343a
@ -7,37 +7,36 @@ namespace dxvk {
|
|||||||
DxbcBindingType bindingType,
|
DxbcBindingType bindingType,
|
||||||
uint32_t bindingIndex) {
|
uint32_t bindingIndex) {
|
||||||
// First resource slot index for per-stage resources
|
// First resource slot index for per-stage resources
|
||||||
const uint32_t stageOffset = 132 + 158 * uint32_t(shaderStage);
|
const uint32_t stageOffset = 128 + 160 * uint32_t(shaderStage);
|
||||||
|
|
||||||
if (shaderStage == DxbcProgramType::ComputeShader) {
|
if (shaderStage == DxbcProgramType::ComputeShader) {
|
||||||
// 0 - 13: Constant buffers
|
// 0 - 15: Constant buffers
|
||||||
// 14 - 29: Samplers
|
// 16 - 31: Samplers
|
||||||
// 30 - 157: Shader resources
|
// 32 - 159: Shader resources
|
||||||
// 158 - 221: Unordered access views
|
// 160 - 223: Unordered access views
|
||||||
|
// 224 - 287: UAV counter buffers
|
||||||
switch (bindingType) {
|
switch (bindingType) {
|
||||||
case DxbcBindingType::ConstantBuffer: return bindingIndex + stageOffset + 0;
|
case DxbcBindingType::ConstantBuffer: return bindingIndex + stageOffset + 0;
|
||||||
case DxbcBindingType::ImageSampler: return bindingIndex + stageOffset + 14;
|
case DxbcBindingType::ImageSampler: return bindingIndex + stageOffset + 16;
|
||||||
case DxbcBindingType::ShaderResource: return bindingIndex + stageOffset + 30;
|
case DxbcBindingType::ShaderResource: return bindingIndex + stageOffset + 32;
|
||||||
case DxbcBindingType::UnorderedAccessView:return bindingIndex + stageOffset + 158;
|
case DxbcBindingType::UnorderedAccessView:return bindingIndex + stageOffset + 160;
|
||||||
case DxbcBindingType::UavCounter: return bindingIndex + stageOffset + 222;
|
case DxbcBindingType::UavCounter: return bindingIndex + stageOffset + 224;
|
||||||
default: Logger::err("computeResourceSlotId: Invalid resource type");
|
default: Logger::err("computeResourceSlotId: Invalid resource type");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Global resource slots
|
// Global resource slots
|
||||||
// 0 - 3: Stream output buffers
|
// 0 - 63: Unordered access views
|
||||||
// 4 - 67: Unordered access views
|
// 64 - 128: UAV counter buffers
|
||||||
// 68 - 131: UAV counter buffers
|
|
||||||
// Per-stage resource slots:
|
// Per-stage resource slots:
|
||||||
// 0 - 13: Constant buffers
|
// 0 - 15: Constant buffers
|
||||||
// 14 - 29: Samplers
|
// 16 - 31: Samplers
|
||||||
// 30 - 157: Shader resources
|
// 32 - 159: Shader resources
|
||||||
switch (bindingType) {
|
switch (bindingType) {
|
||||||
case DxbcBindingType::StreamOutputBuffer: return bindingIndex + 0;
|
case DxbcBindingType::UnorderedAccessView:return bindingIndex + 0;
|
||||||
case DxbcBindingType::UnorderedAccessView:return bindingIndex + 4;
|
case DxbcBindingType::UavCounter: return bindingIndex + 64;
|
||||||
case DxbcBindingType::UavCounter: return bindingIndex + 68;
|
|
||||||
case DxbcBindingType::ConstantBuffer: return bindingIndex + stageOffset + 0;
|
case DxbcBindingType::ConstantBuffer: return bindingIndex + stageOffset + 0;
|
||||||
case DxbcBindingType::ImageSampler: return bindingIndex + stageOffset + 14;
|
case DxbcBindingType::ImageSampler: return bindingIndex + stageOffset + 16;
|
||||||
case DxbcBindingType::ShaderResource: return bindingIndex + stageOffset + 30;
|
case DxbcBindingType::ShaderResource: return bindingIndex + stageOffset + 32;
|
||||||
default: Logger::err("computeResourceSlotId: Invalid resource type");
|
default: Logger::err("computeResourceSlotId: Invalid resource type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ namespace dxvk {
|
|||||||
MaxNumVertexBindings = 32,
|
MaxNumVertexBindings = 32,
|
||||||
MaxNumOutputStreams = 4,
|
MaxNumOutputStreams = 4,
|
||||||
MaxNumViewports = 16,
|
MaxNumViewports = 16,
|
||||||
MaxNumResourceSlots = 1208,
|
MaxNumResourceSlots = 1216,
|
||||||
MaxNumActiveBindings = 128,
|
MaxNumActiveBindings = 128,
|
||||||
MaxNumQueuedCommandBuffers = 8,
|
MaxNumQueuedCommandBuffers = 8,
|
||||||
MaxNumQueryCountPerPool = 128,
|
MaxNumQueryCountPerPool = 128,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user