summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/libANGLE
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-09-04 20:53:31 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-09-04 20:53:31 +0200
commit580084e9e1d0355c96a54a9641df6c1fee894948 (patch)
tree5aff416b5aed2ca9e326054567d837f28c20ed25 /gfx/angle/src/libANGLE
parentfc61780b35af913801d72086456f493f63197da6 (diff)
parentb28ab55f9675f2e97dda9a4fcac0d4f5267a2bb9 (diff)
downloadUXP-580084e9e1d0355c96a54a9641df6c1fee894948.tar
UXP-580084e9e1d0355c96a54a9641df6c1fee894948.tar.gz
UXP-580084e9e1d0355c96a54a9641df6c1fee894948.tar.lz
UXP-580084e9e1d0355c96a54a9641df6c1fee894948.tar.xz
UXP-580084e9e1d0355c96a54a9641df6c1fee894948.zip
Merge branch 'master' into Basilisk-releasev2018.09.05
Diffstat (limited to 'gfx/angle/src/libANGLE')
-rwxr-xr-xgfx/angle/src/libANGLE/Program.cpp6
-rwxr-xr-xgfx/angle/src/libANGLE/renderer/ProgramImpl.h4
-rwxr-xr-xgfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h2
3 files changed, 11 insertions, 1 deletions
diff --git a/gfx/angle/src/libANGLE/Program.cpp b/gfx/angle/src/libANGLE/Program.cpp
index 7f4226da1..49a0f9a33 100755
--- a/gfx/angle/src/libANGLE/Program.cpp
+++ b/gfx/angle/src/libANGLE/Program.cpp
@@ -679,6 +679,12 @@ Error Program::link(const ContextState &data)
gatherInterfaceBlockInfo();
+ // Because we do lazy init in assignUniformBlockRegisters,
+ // we must initialize them when linking shaders,
+ // otherwise, we will have no shaders for getting uniform blocks
+ // information from shaders when doing draw calls.
+ mProgram->assignUniformBlockRegisters();
+
mLinked = true;
return NoError();
}
diff --git a/gfx/angle/src/libANGLE/renderer/ProgramImpl.h b/gfx/angle/src/libANGLE/renderer/ProgramImpl.h
index 45ff0a05a..e62623a8d 100755
--- a/gfx/angle/src/libANGLE/renderer/ProgramImpl.h
+++ b/gfx/angle/src/libANGLE/renderer/ProgramImpl.h
@@ -86,6 +86,10 @@ class ProgramImpl : angle::NonCopyable
GLint components,
const GLfloat *coeffs) = 0;
+ virtual void assignUniformBlockRegisters()
+ {
+ }
+
protected:
const gl::ProgramState &mState;
};
diff --git a/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h b/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h
index 88fe4020d..01f3973c5 100755
--- a/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h
@@ -231,6 +231,7 @@ class ProgramD3D : public ProgramImpl
const GLfloat *value);
void setUniformBlockBinding(GLuint uniformBlockIndex, GLuint uniformBlockBinding) override;
+ void assignUniformBlockRegisters() override;
const UniformStorageD3D &getVertexUniformStorage() const { return *mVertexUniformStorage; }
const UniformStorageD3D &getFragmentUniformStorage() const { return *mFragmentUniformStorage; }
@@ -350,7 +351,6 @@ class ProgramD3D : public ProgramImpl
void initAttribLocationsToD3DSemantic();
void reset();
- void assignUniformBlockRegisters();
void initUniformBlockInfo();
size_t getUniformBlockInfo(const sh::InterfaceBlock &interfaceBlock);