aboutsummaryrefslogtreecommitdiff
path: root/BuddhaTest/src
diff options
context:
space:
mode:
authorAndreas Grois <andi@grois.info>2018-03-18 20:45:26 +0100
committerAndreas Grois <andi@grois.info>2018-03-18 20:45:26 +0100
commitdb2ea861c688aadf59fc35ff6cfca69149a1a94c (patch)
treeeb26538f895916698c75dbf71d0b1b20d16fa767 /BuddhaTest/src
parentc6ba30d76aca396ce5a3975f4625e05e8cf915ee (diff)
Move totaliterations calculation to CPU. This frees 4 VGPRs.
Now the code is back to the limit of 32 VGPRs without the need to directly operate on the state buffer. This means that now it's bound by memory access.
Diffstat (limited to 'BuddhaTest/src')
-rw-r--r--BuddhaTest/src/BuddhaTest.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/BuddhaTest/src/BuddhaTest.cpp b/BuddhaTest/src/BuddhaTest.cpp
index 3b99169..0a99fee 100644
--- a/BuddhaTest/src/BuddhaTest.cpp
+++ b/BuddhaTest/src/BuddhaTest.cpp
@@ -148,6 +148,7 @@ int main(int argc, char * argv[])
glUseProgram(ComputeShader);
GLint orbitLengthUniformHandle = glGetUniformLocation(ComputeShader, "orbitLength");
+ GLint totalIterationsUniformHandle = glGetUniformLocation(ComputeShader, "totalIterations");
GLint widthUniformComputeHandle = glGetUniformLocation(ComputeShader, "width");
GLint heightUniformComputeHandle = glGetUniformLocation(ComputeShader, "height");
GLint iterationsPerDispatchHandle = glGetUniformLocation(ComputeShader, "iterationsPerDispatch");
@@ -155,6 +156,9 @@ int main(int argc, char * argv[])
glUniform1ui(widthUniformComputeHandle, settings.imageWidth);
glUniform1ui(heightUniformComputeHandle, bufferHeight);
+ const uint32_t maxOrbitlength = std::max(std::max(settings.orbitLengthBlue,settings.orbitLengthGreen),settings.orbitLengthRed);
+ glUniform1ui(totalIterationsUniformHandle, maxOrbitlength);
+
glUseProgram(VertexAndFragmentShaders);
GLint widthUniformFragmentHandle = glGetUniformLocation(VertexAndFragmentShaders, "width");
GLint heightUniformFragmentHandle = glGetUniformLocation(VertexAndFragmentShaders, "height");
@@ -169,7 +173,6 @@ int main(int argc, char * argv[])
uint64_t totalIterationCount{0};
uint64_t lastMessage{0};
- const uint64_t maxOrbitlength = std::max(std::max(settings.orbitLengthBlue,settings.orbitLengthGreen),settings.orbitLengthRed);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))