mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-01-19 05:52:11 +01:00
[dxbc] Parse patch constant signature
This commit is contained in:
parent
3960355d47
commit
0b5cffb0bb
@ -7,9 +7,11 @@ namespace dxvk {
|
||||
const DxbcProgramInfo& programInfo,
|
||||
const Rc<DxbcIsgn>& isgn,
|
||||
const Rc<DxbcIsgn>& osgn,
|
||||
const Rc<DxbcIsgn>& psgn,
|
||||
DxbcAnalysisInfo& analysis)
|
||||
: m_isgn (isgn),
|
||||
m_osgn (osgn),
|
||||
m_psgn (psgn),
|
||||
m_analysis(&analysis) {
|
||||
// Get number of clipping and culling planes from the
|
||||
// input and output signatures. We will need this to
|
||||
|
@ -58,6 +58,7 @@ namespace dxvk {
|
||||
const DxbcProgramInfo& programInfo,
|
||||
const Rc<DxbcIsgn>& isgn,
|
||||
const Rc<DxbcIsgn>& osgn,
|
||||
const Rc<DxbcIsgn>& psgn,
|
||||
DxbcAnalysisInfo& analysis);
|
||||
|
||||
~DxbcAnalyzer();
|
||||
@ -73,6 +74,7 @@ namespace dxvk {
|
||||
|
||||
Rc<DxbcIsgn> m_isgn;
|
||||
Rc<DxbcIsgn> m_osgn;
|
||||
Rc<DxbcIsgn> m_psgn;
|
||||
|
||||
DxbcAnalysisInfo* m_analysis = nullptr;
|
||||
|
||||
|
@ -15,11 +15,13 @@ namespace dxvk {
|
||||
const DxbcProgramInfo& programInfo,
|
||||
const Rc<DxbcIsgn>& isgn,
|
||||
const Rc<DxbcIsgn>& osgn,
|
||||
const Rc<DxbcIsgn>& psgn,
|
||||
const DxbcAnalysisInfo& analysis)
|
||||
: m_moduleInfo (moduleInfo),
|
||||
m_programInfo(programInfo),
|
||||
m_isgn (isgn),
|
||||
m_osgn (osgn),
|
||||
m_psgn (psgn),
|
||||
m_analysis (&analysis) {
|
||||
// Declare an entry point ID. We'll need it during the
|
||||
// initialization phase where the execution mode is set.
|
||||
|
@ -377,6 +377,7 @@ namespace dxvk {
|
||||
const DxbcProgramInfo& programInfo,
|
||||
const Rc<DxbcIsgn>& isgn,
|
||||
const Rc<DxbcIsgn>& osgn,
|
||||
const Rc<DxbcIsgn>& psgn,
|
||||
const DxbcAnalysisInfo& analysis);
|
||||
~DxbcCompiler();
|
||||
|
||||
@ -410,6 +411,7 @@ namespace dxvk {
|
||||
|
||||
Rc<DxbcIsgn> m_isgn;
|
||||
Rc<DxbcIsgn> m_osgn;
|
||||
Rc<DxbcIsgn> m_psgn;
|
||||
|
||||
const DxbcAnalysisInfo* m_analysis;
|
||||
|
||||
|
@ -28,6 +28,9 @@ namespace dxvk {
|
||||
|
||||
if ((tag == "OSGN") || (tag == "OSG5") || (tag == "OSG1"))
|
||||
m_osgnChunk = new DxbcIsgn(chunkReader, tag);
|
||||
|
||||
if ((tag == "PCSG") || (tag == "PSG1"))
|
||||
m_psgnChunk = new DxbcIsgn(chunkReader, tag);
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,7 +51,7 @@ namespace dxvk {
|
||||
DxbcAnalyzer analyzer(moduleInfo,
|
||||
m_shexChunk->programInfo(),
|
||||
m_isgnChunk, m_osgnChunk,
|
||||
analysisInfo);
|
||||
m_psgnChunk, analysisInfo);
|
||||
|
||||
this->runAnalyzer(analyzer, m_shexChunk->slice());
|
||||
|
||||
@ -56,7 +59,7 @@ namespace dxvk {
|
||||
fileName, moduleInfo,
|
||||
m_shexChunk->programInfo(),
|
||||
m_isgnChunk, m_osgnChunk,
|
||||
analysisInfo);
|
||||
m_psgnChunk, analysisInfo);
|
||||
|
||||
this->runCompiler(compiler, m_shexChunk->slice());
|
||||
|
||||
@ -76,7 +79,7 @@ namespace dxvk {
|
||||
fileName, moduleInfo,
|
||||
DxbcProgramType::GeometryShader,
|
||||
m_osgnChunk, m_osgnChunk,
|
||||
analysisInfo);
|
||||
m_psgnChunk, analysisInfo);
|
||||
|
||||
compiler.processXfbPassthrough();
|
||||
return compiler.finalize();
|
||||
|
@ -80,6 +80,7 @@ namespace dxvk {
|
||||
|
||||
Rc<DxbcIsgn> m_isgnChunk;
|
||||
Rc<DxbcIsgn> m_osgnChunk;
|
||||
Rc<DxbcIsgn> m_psgnChunk;
|
||||
Rc<DxbcShex> m_shexChunk;
|
||||
|
||||
void runAnalyzer(
|
||||
|
Loading…
x
Reference in New Issue
Block a user