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/Shaders/BuddhaCompute.glsl | |
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/Shaders/BuddhaCompute.glsl')
-rw-r--r-- | BuddhaTest/Shaders/BuddhaCompute.glsl | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/BuddhaTest/Shaders/BuddhaCompute.glsl b/BuddhaTest/Shaders/BuddhaCompute.glsl index 10dfe23..7cd4efe 100644 --- a/BuddhaTest/Shaders/BuddhaCompute.glsl +++ b/BuddhaTest/Shaders/BuddhaCompute.glsl @@ -34,6 +34,7 @@ uniform uint height; uniform uvec4 orbitLength; uniform uint iterationsPerDispatch; +uniform uint totalIterations; void addToColorOfCell(uvec2 cell, uvec3 toAdd) { @@ -202,15 +203,11 @@ vec2 getCurrentOrbitOffset(const uint orbitNumber, const uint totalWorkers, cons void main() { //we need to know how many total work groups are running this iteration - const uvec3 totalWorkersPerDimension = gl_WorkGroupSize * gl_NumWorkGroups; const uint totalWorkers = totalWorkersPerDimension.x*totalWorkersPerDimension.y*totalWorkersPerDimension.z; const uint uniqueWorkerID = gl_GlobalInvocationID.x + gl_GlobalInvocationID.y*totalWorkersPerDimension.x + gl_GlobalInvocationID.z*(totalWorkersPerDimension.x * totalWorkersPerDimension.y); - const uint _totalIterations = orbitLength.x > orbitLength.y ? orbitLength.x : orbitLength.y; - const uint totalIterations = _totalIterations > orbitLength.z ? _totalIterations : orbitLength.z; - individualData state = stateArray[uniqueWorkerID]; //getIndividualState(in uint CellID, out vec2 offset, out vec2 coordinates, out uint phase, out uint orbitNumber, out uint doneIterations) |