2019-12-16 04:28:01 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "dxso_decoder.h"
|
|
|
|
|
|
|
|
namespace dxvk {
|
|
|
|
|
|
|
|
struct DxsoIsgnEntry {
|
|
|
|
uint32_t regNumber = 0;
|
|
|
|
uint32_t slot = 0;
|
|
|
|
DxsoSemantic semantic = DxsoSemantic{ DxsoUsage::Position, 0 };
|
|
|
|
DxsoRegMask mask = IdentityWriteMask;
|
|
|
|
bool centroid = false;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DxsoIsgn {
|
|
|
|
std::array<
|
|
|
|
DxsoIsgnEntry,
|
|
|
|
2 * DxsoMaxInterfaceRegs> elems;
|
|
|
|
uint32_t elemCount = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct DxsoDefinedConstant {
|
|
|
|
uint32_t uboIdx;
|
|
|
|
|
|
|
|
// Only float constants may be indexed.
|
|
|
|
// So that's the only ones we care about putting in the UBO.
|
|
|
|
float float32[4];
|
|
|
|
};
|
|
|
|
|
|
|
|
using DxsoDefinedConstants = std::vector<DxsoDefinedConstant>;
|
|
|
|
|
|
|
|
struct DxsoShaderMetaInfo {
|
|
|
|
bool needsConstantCopies = false;
|
|
|
|
uint32_t maxConstIndexF = 0;
|
|
|
|
uint32_t maxConstIndexI = 0;
|
|
|
|
uint32_t maxConstIndexB = 0;
|
2020-01-26 18:42:49 +01:00
|
|
|
|
|
|
|
uint32_t boolConstantMask = 0;
|
2019-12-16 04:28:01 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|