Skip to content

Commit 00dd600

Browse files
committed
Adjust ClearCoarseBinMask's local size according to TileSize
1 parent 2bee649 commit 00dd600

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

src/GPU3D_Compute.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ bool ComputeRenderer::CompileShader(GLuint& shader, const std::string& source, c
5959
shaderSource += std::to_string(CoarseTileCountY) + ";";
6060
shaderSource += "\n#define CoarseTileArea ";
6161
shaderSource += std::to_string(CoarseTileArea);
62+
shaderSource += "\n#define ClearCoarseBinMaskLocalSize ";
63+
shaderSource += std::to_string(ClearCoarseBinMaskLocalSize);
6264

6365
shaderSource += ComputeRendererShaders::Common;
6466
shaderSource += source;
@@ -332,6 +334,7 @@ void ComputeRenderer::SetRenderSettings(int scale, bool highResolutionCoordinate
332334

333335
TileSize = std::min(8 * TileScale, 32);
334336
CoarseTileCountY = TileSize < 32 ? 4 : 6;
337+
ClearCoarseBinMaskLocalSize = TileSize < 32 ? 64 : 48;
335338
CoarseTileArea = CoarseTileCountX * CoarseTileCountY;
336339
CoarseTileW = CoarseTileCountX * TileSize;
337340
CoarseTileH = CoarseTileCountY * TileSize;
@@ -944,7 +947,7 @@ void ComputeRenderer::RenderFrame(GPU& gpu)
944947
glBindBufferBase(GL_UNIFORM_BUFFER, 0, MetaUniformMemory);
945948

946949
glUseProgram(ShaderClearCoarseBinMask);
947-
glDispatchCompute(TilesPerLine*TileLines/32, 1, 1);
950+
glDispatchCompute(TilesPerLine*TileLines/ClearCoarseBinMaskLocalSize, 1, 1);
948951

949952
bool wbuffer = false;
950953
if (numYSpans > 0)

src/GPU3D_Compute.h

+1
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ class ComputeRenderer : public Renderer3D
169169
int CoarseTileArea;
170170
int CoarseTileW;
171171
int CoarseTileH;
172+
int ClearCoarseBinMaskLocalSize;
172173

173174
static constexpr int BinStride = 2048/32;
174175
static constexpr int CoarseBinStride = BinStride/32;

src/GPU3D_Compute_shaders.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -846,7 +846,7 @@ void main()
846846

847847
const std::string ClearCoarseBinMask =
848848
BinningBuffer + R"(
849-
layout (local_size_x = 32) in;
849+
layout (local_size_x = ClearCoarseBinMaskLocalSize) in;
850850
851851
void main()
852852
{

0 commit comments

Comments
 (0)