]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/programdata.cpp
Move WindowView::render to the backend
[libs/gl.git] / source / render / programdata.cpp
index 31fc8fa262949b9b5ea5fa328012525ef6d03833..40eba5e5d6840a4580c1d311c67da732231253ab 100644 (file)
@@ -1,7 +1,5 @@
 #include <msp/core/algorithm.h>
-#include <msp/core/maputils.h>
 #include <msp/debug/demangle.h>
-#include <msp/gl/extensions/arb_direct_state_access.h>
 #include <msp/io/print.h>
 #include "buffer.h"
 #include "color.h"
@@ -19,11 +17,7 @@ namespace Msp {
 namespace GL {
 
 ProgramData::ProgramData(const Program *p):
-       tied_program(p),
-       generation(0),
-       last_buffer_block(0),
-       buffer(0),
-       dirty(0)
+       tied_program(p)
 { }
 
 // Blocks are intentionally left uncopied
@@ -31,17 +25,11 @@ ProgramData::ProgramData(const ProgramData &other):
        tied_program(other.tied_program),
        uniforms(other.uniforms),
        uniform_data(other.uniform_data),
-       generation(other.generation),
-       last_buffer_block(0),
-       buffer(0),
-       dirty(0)
+       generation(other.generation)
 { }
 
 ProgramData::ProgramData(const ProgramData &other, const Program *p):
-       tied_program(p),
-       last_buffer_block(0),
-       buffer(0),
-       dirty(0)
+       tied_program(p)
 {
        if(tied_program)
        {
@@ -161,6 +149,11 @@ void ProgramData::uniform(Tag tag, int v)
        uniform(tag, INT, 1, &v);
 }
 
+void ProgramData::uniform(Tag tag, unsigned v)
+{
+       uniform(tag, UNSIGNED_INT, 1, &v);
+}
+
 void ProgramData::uniform(Tag tag, float v)
 {
        uniform(tag, FLOAT, 1, &v);
@@ -172,6 +165,12 @@ void ProgramData::uniform(Tag tag, int v0, int v1)
        uniform2(tag, va);
 }
 
+void ProgramData::uniform(Tag tag, unsigned v0, unsigned v1)
+{
+       unsigned va[2] = { v0, v1 };
+       uniform2(tag, va);
+}
+
 void ProgramData::uniform(Tag tag, float v0, float v1)
 {
        float va[2] = { v0, v1 };
@@ -183,6 +182,11 @@ void ProgramData::uniform2(Tag tag, const int *v)
        uniform(tag, INT_VEC2, 1, v);
 }
 
+void ProgramData::uniform2(Tag tag, const unsigned *v)
+{
+       uniform(tag, UINT_VEC2, 1, v);
+}
+
 void ProgramData::uniform2(Tag tag, const float *v)
 {
        uniform(tag, FLOAT_VEC2, 1, v);
@@ -194,6 +198,12 @@ void ProgramData::uniform(Tag tag, int v0, int v1, int v2)
        uniform3(tag, va);
 }
 
+void ProgramData::uniform(Tag tag, unsigned v0, unsigned v1, unsigned v2)
+{
+       unsigned va[3] = { v0, v1, v2 };
+       uniform3(tag, va);
+}
+
 void ProgramData::uniform(Tag tag, float v0, float v1, float v2)
 {
        float va[3] = { v0, v1, v2 };
@@ -205,6 +215,11 @@ void ProgramData::uniform3(Tag tag, const int *v)
        uniform(tag, INT_VEC3, 1, v);
 }
 
+void ProgramData::uniform3(Tag tag, const unsigned *v)
+{
+       uniform(tag, UINT_VEC3, 1, v);
+}
+
 void ProgramData::uniform3(Tag tag, const float *v)
 {
        uniform(tag, FLOAT_VEC3, 1, v);
@@ -216,6 +231,12 @@ void ProgramData::uniform(Tag tag, int v0, int v1, int v2, int v3)
        uniform4(tag, va);
 }
 
+void ProgramData::uniform(Tag tag, unsigned v0, unsigned v1, unsigned v2, unsigned v3)
+{
+       unsigned va[4] = { v0, v1, v2, v3 };
+       uniform4(tag, va);
+}
+
 void ProgramData::uniform(Tag tag, float v0, float v1, float v2, float v3)
 {
        float va[4] = { v0, v1, v2, v3 };
@@ -232,6 +253,11 @@ void ProgramData::uniform4(Tag tag, const int *v)
        uniform(tag, INT_VEC4, 1, v);
 }
 
+void ProgramData::uniform4(Tag tag, const unsigned *v)
+{
+       uniform(tag, UINT_VEC4, 1, v);
+}
+
 void ProgramData::uniform4(Tag tag, const float *v)
 {
        uniform(tag, FLOAT_VEC4, 1, v);
@@ -292,6 +318,11 @@ void ProgramData::uniform_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT, n, v);
 }
 
+void ProgramData::uniform_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, UNSIGNED_INT, n, v);
+}
+
 void ProgramData::uniform_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT, n, v);
@@ -302,6 +333,11 @@ void ProgramData::uniform1_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT, n, v);
 }
 
+void ProgramData::uniform1_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, UNSIGNED_INT, n, v);
+}
+
 void ProgramData::uniform1_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT, n, v);
@@ -312,6 +348,11 @@ void ProgramData::uniform2_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT_VEC2, n, v);
 }
 
+void ProgramData::uniform2_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, UINT_VEC2, n, v);
+}
+
 void ProgramData::uniform2_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT_VEC2, n, v);
@@ -322,6 +363,11 @@ void ProgramData::uniform3_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT_VEC3, n, v);
 }
 
+void ProgramData::uniform3_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, INT_VEC3, n, v);
+}
+
 void ProgramData::uniform3_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT_VEC3, n, v);
@@ -332,6 +378,11 @@ void ProgramData::uniform4_array(Tag tag, unsigned n, const int *v)
        uniform(tag, INT_VEC4, n, v);
 }
 
+void ProgramData::uniform4_array(Tag tag, unsigned n, const unsigned *v)
+{
+       uniform(tag, UINT_VEC4, n, v);
+}
+
 void ProgramData::uniform4_array(Tag tag, unsigned n, const float *v)
 {
        uniform(tag, FLOAT_VEC4, n, v);
@@ -656,14 +707,6 @@ void ProgramData::set_debug_name(const string &name)
 }
 
 
-ProgramData::TaggedUniform::TaggedUniform():
-       type(VOID),
-       array_size(0),
-       data_offset(0),
-       data_size(0)
-{ }
-
-
 ProgramData::SharedBlock::SharedBlock(ReflectData::LayoutHash h):
        block_hash(h),
        used(0),