1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-13 16:08:50 +01:00
dxvk/src/dxbc/dxbc_chunk_isgn.h

70 lines
1.5 KiB
C
Raw Normal View History

#pragma once
#include <cctype>
#include "dxbc_common.h"
#include "dxbc_decoder.h"
#include "dxbc_enums.h"
#include "dxbc_reader.h"
namespace dxvk {
/**
* \brief Signature entry
*
* Stores the semantic name of an input or
* output and the corresponding register.
*/
struct DxbcSgnEntry {
std::string semanticName;
uint32_t semanticIndex;
uint32_t registerId;
2017-12-14 12:53:53 +01:00
DxbcRegMask componentMask;
DxbcScalarType componentType;
DxbcSystemValue systemValue;
uint32_t streamId;
};
/**
* \brief Input/Output signature chunk
*
* Stores information about the input and
* output registers used by the shader stage.
*/
class DxbcIsgn : public RcObject {
public:
DxbcIsgn(DxbcReader reader, DxbcTag tag);
~DxbcIsgn();
auto begin() const { return m_entries.cbegin(); }
auto end () const { return m_entries.cend(); }
2017-11-01 16:43:04 +01:00
const DxbcSgnEntry* findByRegister(
uint32_t registerId) const;
const DxbcSgnEntry* find(
const std::string& semanticName,
uint32_t semanticIndex,
uint32_t streamIndex) const;
DxbcRegMask regMask(
uint32_t registerId) const;
uint32_t maxRegisterCount() const;
void printEntries() const;
2022-08-10 14:11:47 +02:00
static bool compareSemanticNames(
const std::string& a,
const std::string& b);
private:
std::vector<DxbcSgnEntry> m_entries;
};
}