blob: fac03d7363b4e82a16b71a518b7218c4094c44d3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#pragma once
#include <cstdint>
#include "dxso_common.h"
#include "dxso_decoder.h"
namespace dxvk {
enum class DxsoBindingType : uint32_t {
ConstantBuffer,
Image,
};
enum DxsoConstantBuffers : uint32_t {
VSConstantBuffer = 0,
VSClipPlanes = 1,
VSFixedFunction = 2,
VSVertexBlendData = 3,
VSCount,
PSConstantBuffer = 0,
PSFixedFunction = 1,
PSShared = 2,
PSCount
};
constexpr uint32_t computeResourceSlotId(
DxsoProgramType shaderStage,
DxsoBindingType bindingType,
uint32_t bindingIndex) {
const uint32_t stageOffset = 8 * uint32_t(shaderStage);
if (bindingType == DxsoBindingType::ConstantBuffer)
return bindingIndex + stageOffset;
else // if (bindingType == DxsoBindingType::Image)
return bindingIndex + stageOffset + (shaderStage == DxsoProgramType::PixelShader ? PSCount : VSCount);
}
// TODO: Intergrate into compute resource slot ID/refactor all of this?
constexpr uint32_t getSWVPBufferSlot() {
return 27; // From last pixel shader slot, above.
}
uint32_t RegisterLinkerSlot(DxsoSemantic semantic);
}
|