]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/pipelinestate.h
Fix reflection of image types from Spir-V modules
[libs/gl.git] / source / core / pipelinestate.h
index 42543e4dc2596f5de2e2c0a7c71e85f9b64fa4c8..31938829ec61186e0cc6863fe7870640e898ebf1 100644 (file)
@@ -20,6 +20,11 @@ class Texture;
 class UniformBlock;
 class VertexSetup;
 
+/**
+Stores state for the entire GPU pipeline.
+
+Applications normally use the higher-level Renderer class rather than this.
+*/
 class PipelineState: public PipelineStateBackend
 {
        friend PipelineStateBackend;
@@ -46,39 +51,33 @@ private:
 
        enum ChangeMask
        {
-               SHPROG = 1,
-               VERTEX_SETUP = 2,
-               FACE_CULL = 4,
-               CLIP_PLANES = 8,
-               TEXTURES = 16,
-               UNIFORMS = 32,
-               DEPTH_TEST = 64,
-               STENCIL_TEST = 128,
-               BLEND = 256,
-               FRAMEBUFFER = 512,
-               VIEWPORT = 1024,
-               SCISSOR = 2048
+               FRAMEBUFFER = 1,
+               VIEWPORT = 2,
+               SCISSOR = 4,
+               SHPROG = 8,
+               UNIFORMS = 16,
+               TEXTURES = 32,
+               VERTEX_SETUP = 64,
+               FACE_CULL = 128,
+               DEPTH_TEST = 256,
+               STENCIL_TEST = 512,
+               BLEND = 1024
        };
 
-       const Framebuffer *framebuffer;
-       const Rect *viewport;
-       const Rect *scissor;
-       const Program *shprog;
-       const VertexSetup *vertex_setup;
-       FaceWinding front_face;
-       CullMode face_cull;
-       unsigned enabled_clip_planes;
-       std::vector<BoundTexture> textures;
+       const Framebuffer *framebuffer = 0;
+       const Rect *viewport = 0;
+       const Rect *scissor = 0;
+       const Program *shprog = 0;
        std::vector<BoundUniformBlock> uniform_blocks;
-       const DepthTest *depth_test;
-       const StencilTest *stencil_test;
-       const Blend *blend;
-       mutable unsigned changes;
-
-public:
-       PipelineState();
+       std::vector<BoundTexture> textures;
+       const VertexSetup *vertex_setup = 0;
+       FaceWinding front_face = COUNTERCLOCKWISE;
+       CullMode face_cull = NO_CULL;
+       const DepthTest *depth_test = 0;
+       const StencilTest *stencil_test = 0;
+       const Blend *blend = 0;
+       mutable unsigned changes = 0;
 
-private:
        template<typename T>
        void set(T &, T, unsigned);
 public:
@@ -86,12 +85,11 @@ public:
        void set_viewport(const Rect *);
        void set_scissor(const Rect *);
        void set_shader_program(const Program *);
+       void set_uniform_block(int, const UniformBlock *);
+       void set_texture(unsigned, const Texture *, const Sampler *);
        void set_vertex_setup(const VertexSetup *);
        void set_front_face(FaceWinding);
        void set_face_cull(CullMode);
-       void set_enabled_clip_planes(unsigned);
-       void set_texture(unsigned, const Texture *, const Sampler *);
-       void set_uniform_block(int, const UniformBlock *);
        void set_depth_test(const DepthTest *);
        void set_stencil_test(const StencilTest *);
        void set_blend(const Blend *);