Do not emit interpolation qualifiers to static globals.

This commit is contained in:
Hans-Kristian Arntzen 2017-03-20 09:52:18 +01:00
Родитель b8bda45802
Коммит a0a582dd04
2 изменённых файлов: 11 добавлений и 4 удалений

Просмотреть файл

@ -1,8 +1,8 @@
static float4 gl_Position; static float4 gl_Position;
static nointerpolation float vFlat; static float vFlat;
static centroid float vCentroid; static float vCentroid;
static sample float vSample; static float vSample;
static noperspective float vNoperspective; static float vNoperspective;
struct Block struct Block
{ {

Просмотреть файл

@ -131,7 +131,14 @@ void CompilerHLSL::emit_header()
void CompilerHLSL::emit_interface_block_globally(const SPIRVariable &var) void CompilerHLSL::emit_interface_block_globally(const SPIRVariable &var)
{ {
add_resource_name(var.self); add_resource_name(var.self);
// The global copies of I/O variables should not contain interpolation qualifiers.
// These are emitted inside the interface structs.
auto &flags = meta[var.self].decoration.decoration_flags;
auto old_flags = flags;
flags = 0;
statement("static ", variable_decl(var), ";"); statement("static ", variable_decl(var), ";");
flags = old_flags;
} }
const char *CompilerHLSL::to_storage_qualifiers_glsl(const SPIRVariable &var) const char *CompilerHLSL::to_storage_qualifiers_glsl(const SPIRVariable &var)