mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-27 22:54:16 +01:00
[dxbc] Parse OSG5 chunk for Shader Model 5 geometry shaders
This commit is contained in:
parent
102591369e
commit
07ef25fec5
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace dxvk {
|
namespace dxvk {
|
||||||
|
|
||||||
DxbcIsgn::DxbcIsgn(DxbcReader reader) {
|
DxbcIsgn::DxbcIsgn(DxbcReader reader, DxbcTag tag) {
|
||||||
uint32_t elementCount = reader.readu32();
|
uint32_t elementCount = reader.readu32();
|
||||||
reader.skip(sizeof(uint32_t));
|
reader.skip(sizeof(uint32_t));
|
||||||
|
|
||||||
@ -13,6 +13,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
for (uint32_t i = 0; i < elementCount; i++) {
|
for (uint32_t i = 0; i < elementCount; i++) {
|
||||||
DxbcSgnEntry entry;
|
DxbcSgnEntry entry;
|
||||||
|
entry.streamId = tag == "OSG5" ? reader.readu32() : 0;
|
||||||
entry.semanticName = reader.clone(reader.readu32()).readString();
|
entry.semanticName = reader.clone(reader.readu32()).readString();
|
||||||
entry.semanticIndex = reader.readu32();
|
entry.semanticIndex = reader.readu32();
|
||||||
entry.systemValue = static_cast<DxbcSystemValue>(reader.readu32());
|
entry.systemValue = static_cast<DxbcSystemValue>(reader.readu32());
|
||||||
|
@ -22,6 +22,7 @@ namespace dxvk {
|
|||||||
DxbcRegMask componentMask;
|
DxbcRegMask componentMask;
|
||||||
DxbcScalarType componentType;
|
DxbcScalarType componentType;
|
||||||
DxbcSystemValue systemValue;
|
DxbcSystemValue systemValue;
|
||||||
|
uint32_t streamId;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,7 +35,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DxbcIsgn(DxbcReader reader);
|
DxbcIsgn(DxbcReader reader, DxbcTag tag);
|
||||||
~DxbcIsgn();
|
~DxbcIsgn();
|
||||||
|
|
||||||
auto begin() const { return m_entries.cbegin(); }
|
auto begin() const { return m_entries.cbegin(); }
|
||||||
|
@ -24,14 +24,10 @@ namespace dxvk {
|
|||||||
m_shexChunk = new DxbcShex(chunkReader);
|
m_shexChunk = new DxbcShex(chunkReader);
|
||||||
|
|
||||||
if ((tag == "ISGN"))
|
if ((tag == "ISGN"))
|
||||||
m_isgnChunk = new DxbcIsgn(chunkReader);
|
m_isgnChunk = new DxbcIsgn(chunkReader, tag);
|
||||||
|
|
||||||
if ((tag == "OSGN"))
|
|
||||||
m_osgnChunk = new DxbcIsgn(chunkReader);
|
|
||||||
|
|
||||||
// if ((tag == "OSG5"))
|
|
||||||
// m_osgnChunk = new DxbcIsgn(chunkReader);
|
|
||||||
|
|
||||||
|
if ((tag == "OSGN") || (tag == "OSG5"))
|
||||||
|
m_osgnChunk = new DxbcIsgn(chunkReader, tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user