mirror of
https://github.com/doitsujin/dxvk.git
synced 2024-12-01 07:24:12 +01:00
[dxbc] Added Hull/Domain shader specific structures
This commit is contained in:
parent
f5782cd6cd
commit
173e46e2bd
@ -149,6 +149,66 @@ namespace dxvk {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Hull shader fork/join phase
|
||||||
|
*
|
||||||
|
* Defines a function and built-in variables
|
||||||
|
* for a single fork or join phase sub-program.
|
||||||
|
*/
|
||||||
|
struct DxbcCompilerHsForkJoinPhase {
|
||||||
|
uint32_t functionId = 0;
|
||||||
|
uint32_t instanceCount = 0;
|
||||||
|
uint32_t builtinInstanceId = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Hull shader control point phase
|
||||||
|
*
|
||||||
|
* Defines the function for the control
|
||||||
|
* point phase program of a hull shader.
|
||||||
|
*/
|
||||||
|
struct DxbcCompilerHsControlPointPhase {
|
||||||
|
uint32_t functionId = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Hull shader phase
|
||||||
|
*
|
||||||
|
* Used to identify the current
|
||||||
|
* phase and function ID.
|
||||||
|
*/
|
||||||
|
enum class DxbcCompilerHsPhase : uint32_t {
|
||||||
|
None, ///< No active phase
|
||||||
|
Decl, ///< \c hs_decls
|
||||||
|
ControlPoint, ///< \c hs_control_point_phase
|
||||||
|
Fork, ///< \c hs_fork_phase
|
||||||
|
Join, ///< \c hs_join_phase
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Hull shader-specific structure
|
||||||
|
*/
|
||||||
|
struct DxbcCompilerHsPart {
|
||||||
|
DxbcCompilerHsPhase currPhaseType = DxbcCompilerHsPhase::None;
|
||||||
|
size_t currPhaseId = 0;
|
||||||
|
|
||||||
|
DxbcCompilerHsControlPointPhase cpPhase;
|
||||||
|
std::vector<DxbcCompilerHsForkJoinPhase> forkPhases;
|
||||||
|
std::vector<DxbcCompilerHsForkJoinPhase> joinPhases;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Domain shader-specific structure
|
||||||
|
*/
|
||||||
|
struct DxbcCompilerDsPart {
|
||||||
|
uint32_t functionId = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
enum class DxbcCfgBlockType : uint32_t {
|
enum class DxbcCfgBlockType : uint32_t {
|
||||||
If, Loop, Switch,
|
If, Loop, Switch,
|
||||||
};
|
};
|
||||||
@ -323,6 +383,8 @@ namespace dxvk {
|
|||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
// Shader-specific data structures
|
// Shader-specific data structures
|
||||||
DxbcCompilerVsPart m_vs;
|
DxbcCompilerVsPart m_vs;
|
||||||
|
DxbcCompilerHsPart m_hs;
|
||||||
|
DxbcCompilerDsPart m_ds;
|
||||||
DxbcCompilerGsPart m_gs;
|
DxbcCompilerGsPart m_gs;
|
||||||
DxbcCompilerPsPart m_ps;
|
DxbcCompilerPsPart m_ps;
|
||||||
DxbcCompilerCsPart m_cs;
|
DxbcCompilerCsPart m_cs;
|
||||||
@ -716,6 +778,7 @@ namespace dxvk {
|
|||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
// Shader initialization methods
|
// Shader initialization methods
|
||||||
void emitVsInit();
|
void emitVsInit();
|
||||||
|
void emitHsInit();
|
||||||
void emitGsInit();
|
void emitGsInit();
|
||||||
void emitPsInit();
|
void emitPsInit();
|
||||||
void emitCsInit();
|
void emitCsInit();
|
||||||
@ -723,6 +786,7 @@ namespace dxvk {
|
|||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// Shader finalization methods
|
// Shader finalization methods
|
||||||
void emitVsFinalize();
|
void emitVsFinalize();
|
||||||
|
void emitHsFinalize();
|
||||||
void emitGsFinalize();
|
void emitGsFinalize();
|
||||||
void emitPsFinalize();
|
void emitPsFinalize();
|
||||||
void emitCsFinalize();
|
void emitCsFinalize();
|
||||||
|
Loading…
Reference in New Issue
Block a user