diff options
author | Andreas Grois <andi@grois.info> | 2018-03-18 20:45:26 +0100 |
---|---|---|
committer | Andreas Grois <andi@grois.info> | 2018-03-18 20:45:26 +0100 |
commit | db2ea861c688aadf59fc35ff6cfca69149a1a94c (patch) | |
tree | eb26538f895916698c75dbf71d0b1b20d16fa767 /BuddhaTest/src/BuddhaTest.cpp | |
parent | c6ba30d76aca396ce5a3975f4625e05e8cf915ee (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/BuddhaTest.cpp')
-rw-r--r-- | BuddhaTest/src/BuddhaTest.cpp | 5 |
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)) |