]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/program.h
Add support for loading SPIR-V shaders
[libs/gl.git] / source / core / program.h
index 40c1d320f861e81d662ec2aa8e118e3191a5c602..6f84cfd26436e314b6d48d02dac8e7c0e2b51154 100644 (file)
@@ -7,13 +7,12 @@
 #include "bindable.h"
 #include "datatype.h"
 #include "gl.h"
+#include "module.h"
 #include "vertexformat.h"
 
 namespace Msp {
 namespace GL {
 
-class GlslModule;
-class Module;
 class Shader;
 
 /**
@@ -65,7 +64,7 @@ public:
                std::string name;
                const UniformBlockInfo *block;
                unsigned location;
-               unsigned size;
+               unsigned array_size;
                unsigned array_stride;
                unsigned matrix_stride;
                DataType type;
@@ -84,7 +83,7 @@ public:
        {
                std::string name;
                unsigned location;
-               unsigned size;
+               unsigned array_size;
                DataType type;
        };
 
@@ -125,6 +124,7 @@ private:
        unsigned add_stage(GLenum);
        void add_glsl_stages(const GlslModule &, const std::map<std::string, int> &);
        void compile_glsl_stage(unsigned);
+       void add_spirv_stages(const SpirVModule &, const std::map<std::string, int> &);
 
 public:
        DEPRECATED void attach_shader(Shader &shader);
@@ -141,6 +141,10 @@ private:
        void query_uniforms();
        void query_uniform_blocks(const std::vector<UniformInfo *> &);
        void query_attributes();
+       void collect_uniforms();
+       void collect_block_uniforms(UniformBlockInfo &, const SpirVModule::Structure &, const std::string &, unsigned);
+       void collect_attributes();
+       void update_layout_hash();
        static LayoutHash compute_layout_hash(const std::vector<const UniformInfo *> &);
        static bool uniform_location_compare(const UniformInfo *, const UniformInfo *);
 public: