[D3D12] DXBC: Use movc instead of indexable temps by default because of Nvidia hang

This commit is contained in:
Triang3l
2018-09-08 15:06:53 +03:00
parent 0165136f69
commit b91866fa49
2 changed files with 224 additions and 150 deletions

View File

@@ -200,11 +200,9 @@ class DxbcShaderTranslator : public ShaderTranslator {
// Frees the last allocated internal r# registers for later reuse.
void PopSystemTemp(uint32_t count = 1);
// Gets the x# register array used for color outputs (since colors are
// remapped).
inline uint32_t GetColorIndexableTemp() const {
return uses_register_dynamic_addressing() ? 1 : 0;
}
// Whether general-purpose register values should be stored in x0 rather than
// r# in this shader.
bool IndexableGPRsUsed() const;
// Writing the prologue.
void StartVertexShader_LoadVertexIndex();
@@ -423,6 +421,10 @@ class DxbcShaderTranslator : public ShaderTranslator {
// applied in the end of the shader).
uint32_t system_temp_position_;
// Color outputs in pixel shaders (because of exponent bias, alpha test and
// remapping).
uint32_t system_temp_color_[4];
bool writes_depth_;
// The STAT chunk (based on Wine d3dcompiler_parse_stat).