compiler: Use metadata qualifier to determine IO status
authorCody Northrop <cody@lunarg.com>
Thu, 30 Oct 2014 15:19:13 +0000 (09:19 -0600)
committerCourtney Goeltzenleuchter <courtney@LunarG.com>
Fri, 31 Oct 2014 21:29:19 +0000 (15:29 -0600)
icd/intel/compiler/shader/glsl_glass_backend_translator.cpp
icd/intel/compiler/shader/glsl_glass_backend_translator.h

index b84b6d4..f93445b 100644 (file)
@@ -2644,7 +2644,7 @@ MesaGlassTranslator::makeIRLoad(const llvm::Instruction* llvmInst, const glsl_ty
       ioVar = aggregate->as_dereference_variable()->variable_referenced();
    }
 
-   setIoParameters(ioVar, mdNode, false);
+   setIoParameters(ioVar, mdNode);
 
    // Handle type overriding
    if (typeOverride)
@@ -3194,7 +3194,7 @@ inline void MesaGlassTranslator::emitIRLoad(const llvm::Instruction* llvmInst)
  * Set IO variable parameters (locations, interp modes, pixel origins, etc)
  * -----------------------------------------------------------------------------
  */
-void MesaGlassTranslator::setIoParameters(ir_variable* ioVar, const llvm::MDNode* mdNode, bool isOutput)
+void MesaGlassTranslator::setIoParameters(ir_variable* ioVar, const llvm::MDNode* mdNode)
 {
    if (ioVar && mdNode) {
       const llvm::Type*   mdType;
@@ -3217,9 +3217,9 @@ void MesaGlassTranslator::setIoParameters(ir_variable* ioVar, const llvm::MDNode
           } else {
               ioVar->data.explicit_location = true;
 
-              if ((manager->getStage() == EShLangFragment) && isOutput)
+              if ((manager->getStage() == EShLangFragment) && metaType.qualifier == EVQOutput)
                   ioVar->data.location      = metaType.location + FRAG_RESULT_DATA0;
-              else if ((manager->getStage() == EShLangVertex) && !isOutput)
+              else if ((manager->getStage() == EShLangVertex) && metaType.qualifier == EVQInput)
                   ioVar->data.location      = metaType.location + VERT_ATTRIB_GENERIC0;
               else
                   ioVar->data.location      = metaType.location + VARYING_SLOT_VAR0;
@@ -3298,7 +3298,7 @@ inline void MesaGlassTranslator::emitIRStore(const llvm::Instruction* llvmInst)
       ioVar = aggregate->as_dereference_variable()->variable_referenced();
    }
 
-   setIoParameters(ioVar, mdNode, true);
+   setIoParameters(ioVar, mdNode);
 
    addIRInstruction(llvmInst, fixIRLValue(irDst, getIRValue(src)));
 }
index 0f26910..c8a1574 100644 (file)
@@ -327,7 +327,7 @@ namespace gla {
         // Add error message
         void error(const char* msg) const;
 
-        void setIoParameters(ir_variable* ioVar, const llvm::MDNode*, bool isOutput);
+        void setIoParameters(ir_variable* ioVar, const llvm::MDNode*);
 
         // Data ----------------------------------------------------------------