Merge branch 'master' of github.com:KhronosGroup/glslang
This commit is contained in:
		
						commit
						9c2f1c7bc0
					
				@ -13,7 +13,7 @@ elseif(UNIX)
 | 
			
		||||
    add_definitions(-fPIC)
 | 
			
		||||
    add_definitions(-DGLSLANG_OSINCLUDE_UNIX)
 | 
			
		||||
else(WIN32)
 | 
			
		||||
    message("unkown platform")
 | 
			
		||||
    message("unknown platform")
 | 
			
		||||
endif(WIN32)
 | 
			
		||||
 | 
			
		||||
if(CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
 | 
			
		||||
@ -103,7 +103,7 @@ class TProgram
 | 
			
		||||
See `ShaderLang.h` and the usage of it in `StandAlone/StandAlone.cpp` for more
 | 
			
		||||
details.
 | 
			
		||||
 | 
			
		||||
### C Functional Interface (orginal)
 | 
			
		||||
### C Functional Interface (orignal)
 | 
			
		||||
 | 
			
		||||
This interface is in roughly the first 2/3 of `ShaderLang.h`, and referred to
 | 
			
		||||
as the `Sh*()` interface, as all the entry points start `Sh`.
 | 
			
		||||
@ -118,7 +118,7 @@ ShCompile(shader, compiler) -> compiler(AST) -> <back end>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
In practice, `ShCompile()` takes shader strings, default version, and
 | 
			
		||||
warning/error and other options for controling compilation.
 | 
			
		||||
warning/error and other options for controlling compilation.
 | 
			
		||||
 | 
			
		||||
Testing
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
@ -573,7 +573,7 @@ namespace spv {
 | 
			
		||||
            op_fn_nop);
 | 
			
		||||
 | 
			
		||||
        // Window size for context-sensitive canonicalization values
 | 
			
		||||
        // Emperical best size from a single data set.  TODO: Would be a good tunable.
 | 
			
		||||
        // Empirical best size from a single data set.  TODO: Would be a good tunable.
 | 
			
		||||
        // We essentially perform a little convolution around each instruction,
 | 
			
		||||
        // to capture the flavor of nearby code, to hopefully match to similar
 | 
			
		||||
        // code in other modules.
 | 
			
		||||
 | 
			
		||||
@ -1067,7 +1067,7 @@ Id Builder::createCompositeExtract(Id composite, Id typeId, unsigned index)
 | 
			
		||||
    // Generate code for spec constants if in spec constant operation
 | 
			
		||||
    // generation mode.
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        return createSpecConstantOp(OpCompositeExtract, typeId, {composite}, {index});
 | 
			
		||||
        return createSpecConstantOp(OpCompositeExtract, typeId, std::vector<Id>(1, composite), std::vector<Id>(1, index));
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* extract = new Instruction(getUniqueId(), typeId, OpCompositeExtract);
 | 
			
		||||
    extract->addIdOperand(composite);
 | 
			
		||||
@ -1082,7 +1082,7 @@ Id Builder::createCompositeExtract(Id composite, Id typeId, std::vector<unsigned
 | 
			
		||||
    // Generate code for spec constants if in spec constant operation
 | 
			
		||||
    // generation mode.
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        return createSpecConstantOp(OpCompositeExtract, typeId, {composite}, indexes);
 | 
			
		||||
        return createSpecConstantOp(OpCompositeExtract, typeId, std::vector<Id>(1, composite), indexes);
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* extract = new Instruction(getUniqueId(), typeId, OpCompositeExtract);
 | 
			
		||||
    extract->addIdOperand(composite);
 | 
			
		||||
@ -1184,7 +1184,7 @@ Id Builder::createUnaryOp(Op opCode, Id typeId, Id operand)
 | 
			
		||||
    // Generate code for spec constants if in spec constant operation
 | 
			
		||||
    // generation mode.
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        return createSpecConstantOp(opCode, typeId, {operand}, {});
 | 
			
		||||
        return createSpecConstantOp(opCode, typeId, std::vector<Id>(1, operand), std::vector<Id>());
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* op = new Instruction(getUniqueId(), typeId, opCode);
 | 
			
		||||
    op->addIdOperand(operand);
 | 
			
		||||
@ -1198,7 +1198,9 @@ Id Builder::createBinOp(Op opCode, Id typeId, Id left, Id right)
 | 
			
		||||
    // Generate code for spec constants if in spec constant operation
 | 
			
		||||
    // generation mode.
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        return createSpecConstantOp(opCode, typeId, {left, right}, {});
 | 
			
		||||
        std::vector<Id> operands(2);
 | 
			
		||||
        operands[0] = left; operands[1] = right;
 | 
			
		||||
        return createSpecConstantOp(opCode, typeId, operands, std::vector<Id>());
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* op = new Instruction(getUniqueId(), typeId, opCode);
 | 
			
		||||
    op->addIdOperand(left);
 | 
			
		||||
@ -1261,7 +1263,9 @@ Id Builder::createRvalueSwizzle(Decoration precision, Id typeId, Id source, std:
 | 
			
		||||
        return setPrecision(createCompositeExtract(source, typeId, channels.front()), precision);
 | 
			
		||||
 | 
			
		||||
    if (generatingOpCodeForSpecConst) {
 | 
			
		||||
        return setPrecision(createSpecConstantOp(OpVectorShuffle, typeId, {source, source}, channels), precision);
 | 
			
		||||
        std::vector<Id> operands(2);
 | 
			
		||||
        operands[0] = operands[1] = source;
 | 
			
		||||
        return setPrecision(createSpecConstantOp(OpVectorShuffle, typeId, operands, channels), precision);
 | 
			
		||||
    }
 | 
			
		||||
    Instruction* swizzle = new Instruction(getUniqueId(), typeId, OpVectorShuffle);
 | 
			
		||||
    assert(isVector(source));
 | 
			
		||||
@ -2209,7 +2213,7 @@ void Builder::eliminateDeadDecorations() {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    decorations.erase(std::remove_if(decorations.begin(), decorations.end(),
 | 
			
		||||
        [&unreachable_definitions](std::unique_ptr<Instruction>& I) {
 | 
			
		||||
        [&unreachable_definitions](std::unique_ptr<Instruction>& I) -> bool {
 | 
			
		||||
            Instruction* inst = I.get();
 | 
			
		||||
            Id decoration_id = inst->getIdOperand(0);
 | 
			
		||||
            return unreachable_definitions.count(decoration_id) != 0;
 | 
			
		||||
@ -2319,7 +2323,7 @@ void Builder::simplifyAccessChainSwizzle()
 | 
			
		||||
 | 
			
		||||
// To the extent any swizzling can become part of the chain
 | 
			
		||||
// of accesses instead of a post operation, make it so.
 | 
			
		||||
// If 'dynamic' is true, include transfering a non-static component index,
 | 
			
		||||
// If 'dynamic' is true, include transferring a non-static component index,
 | 
			
		||||
// otherwise, only transfer static indexes.
 | 
			
		||||
//
 | 
			
		||||
// Also, Boolean vectors are likely to be special.  While
 | 
			
		||||
 | 
			
		||||
@ -92,7 +92,7 @@ public:
 | 
			
		||||
        case EPrefixInternalError: append("INTERNAL ERROR: "); break;
 | 
			
		||||
        case EPrefixUnimplemented: append("UNIMPLEMENTED: ");  break;
 | 
			
		||||
        case EPrefixNote:          append("NOTE: ");           break;
 | 
			
		||||
        default:                   append("UNKOWN ERROR: ");   break;
 | 
			
		||||
        default:                   append("UNKNOWN ERROR: ");   break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    void location(const TSourceLoc& loc) {
 | 
			
		||||
 | 
			
		||||
@ -95,7 +95,7 @@ public:
 | 
			
		||||
 | 
			
		||||
    void checkAllocList() const;
 | 
			
		||||
 | 
			
		||||
    // Return total size needed to accomodate user buffer of 'size',
 | 
			
		||||
    // Return total size needed to accommodate user buffer of 'size',
 | 
			
		||||
    // plus our tracking data.
 | 
			
		||||
    inline static size_t allocationSize(size_t size) {
 | 
			
		||||
        return size + 2 * guardBlockSize + headerSize();
 | 
			
		||||
@ -241,8 +241,8 @@ protected:
 | 
			
		||||
    int numCalls;           // just an interesting statistic
 | 
			
		||||
    size_t totalBytes;      // just an interesting statistic
 | 
			
		||||
private:
 | 
			
		||||
    TPoolAllocator& operator=(const TPoolAllocator&);  // dont allow assignment operator
 | 
			
		||||
    TPoolAllocator(const TPoolAllocator&);  // dont allow default copy constructor
 | 
			
		||||
    TPoolAllocator& operator=(const TPoolAllocator&);  // don't allow assignment operator
 | 
			
		||||
    TPoolAllocator(const TPoolAllocator&);  // don't allow default copy constructor
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -61,7 +61,7 @@ static void DetachThreadLinux(void *)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Registers cleanup handler, sets cancel type and state, and excecutes the thread specific
 | 
			
		||||
// Registers cleanup handler, sets cancel type and state, and executes the thread specific
 | 
			
		||||
// cleanup handler.  This function will be called in the Standalone.cpp for regression 
 | 
			
		||||
// testing.  When OpenGL applications are run with the driver code, Linux OS does the 
 | 
			
		||||
// thread cleanup.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user