diff --git a/Todo.txt b/Todo.txt index f8aff2409..bd0cb6fd7 100644 --- a/Todo.txt +++ b/Todo.txt @@ -4,7 +4,7 @@ Current functionality level: ESSL 3.0, GLSL 1.5 Link Validation + provide input config file for setting limits - - also consider spitting out measures of complexity + - also consider spitting out measures of complexity + ensure no static references thrown away - generate static use of object even if the only use is to access the length of its array Cross-stage linking @@ -21,7 +21,7 @@ Link Validation - 4.3: compute shader not combined with any other stages - 4.3: remove cross-version linking restrictions. - 4.3: Allow mismatches in interpolation and auxiliary qualification across stages. - - 4.4: A stage contains two different blocks, each with no instance name, where the blocks contain a member with the same name. + - 4.4: A stage contains two different blocks, each with no instance name, where the blocks contain a member with the same name. Intra-stage linking, single shader + recursion for functions - limits checking: @@ -44,8 +44,8 @@ Link Validation + 1.50: at least one geometry shader says max_vertices... + 1.50: origin_upper_left and pixel_center_integer have to match - Even the potential for recursion through subroutine uniforms is an error. - - 4.4: An interface contains two different blocks, each with no instance name, where the blocks contain a member with the same name. - - 4.4: component aliasing (except desktop vertex shader inputs) + - 4.4: An interface contains two different blocks, each with no instance name, where the blocks contain a member with the same name. + - 4.4: component aliasing (except desktop vertex shader inputs) - 4.4: overlapping transform/feedback offsets, offset/stride overflow checks, and stride matching Intra-stage linking, multiple shader (Non-ES) + type consistency check of uniforms, globals, ins, and outs @@ -59,7 +59,7 @@ Link Validation - matching redeclarations of interface blocks - 4.3: early_fragment_tests contradictions - 4.3: implicit array sizing is cross shader within a stage - - 4.4: If gl_FragCoord is redeclared in any fragment shader in a program, it must be redeclared in all the fragment shaders in that program that have a static use gl_FragCoord + - 4.4: If gl_FragCoord is redeclared in any fragment shader in a program, it must be redeclared in all the fragment shaders in that program that have a static use gl_FragCoord Shader Functionality to Implement/Finish ESSL 2.0 (#version 100) diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 5c262bddd..e9c3610ec 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -646,7 +646,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // Recursively figure out how many locations are used up by an input or output type. // Return the size of type, as measured by "locations". -int TIntermediate::computeTypeLocationSize(const TType& type) +int TIntermediate::computeTypeLocationSize(const TType& type) const { // "If the declared input is an array of size n and each element takes m locations, it will be assigned m * n // consecutive locations..." diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 4ebbf2c0b..624225a30 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -234,7 +234,7 @@ public: bool inIoAccessed(const TString& name) const { return ioAccessed.find(name) != ioAccessed.end(); } int addUsedLocation(const TQualifier&, const TType&, bool& typeCollision); - int computeTypeLocationSize(const TType&); + int computeTypeLocationSize(const TType&) const; bool setXfbBufferStride(int buffer, int stride) {