First pass at setup/begin pass support (#1335)

This commit is contained in:
Jason Mitchell authored and GitHub committed 2026-01-29 07:53:04 -08:00
1 parent 9d90ff137c
commit 3cdd934987
4 files changed
+175 -11

No files matched your search

@@ -20,6 +20,9 @@ public class ProgramSet {
private final ProgramSource[] shadowcomp;
private final ComputeSource[][] shadowCompCompute;
private final ComputeSource[] setup;
private final ProgramSource[] begin;
private final ComputeSource[][] beginCompute;
private final ProgramSource[] prepare;
private final ComputeSource[][] prepareCompute;
@@ -82,6 +85,14 @@ public class ProgramSet {
this.shadowCompCompute[i] = readComputeArray(directory, sourceProvider, "shadowcomp" + ((i == 0) ? "" : i));
}
this.setup = readComputeProgramArray(directory, sourceProvider, "setup");
this.begin = readProgramArray(directory, sourceProvider, "begin", shaderProperties);
this.beginCompute = new ComputeSource[begin.length][];
for (int i = 0; i < begin.length; i++) {
this.beginCompute[i] = readComputeArray(directory, sourceProvider, "begin" + ((i == 0) ? "" : i));
}
this.prepare = readProgramArray(directory, sourceProvider, "prepare", shaderProperties);
this.prepareCompute = new ComputeSource[prepare.length][];
for (int i = 0; i < prepare.length; i++) {
@@ -162,6 +173,18 @@ public class ProgramSet {
return programs;
}
private ComputeSource[] readComputeProgramArray(AbsolutePackPath directory, Function<AbsolutePackPath, String> sourceProvider, String name) {
ComputeSource[] programs = new ComputeSource[100];
for (int i = 0; i < programs.length; i++) {
String suffix = i == 0 ? "" : Integer.toString(i);
programs[i] = readComputeSource(directory, sourceProvider, name + suffix, this);
}
return programs;
}
private ComputeSource[] readComputeArray(AbsolutePackPath directory,
Function<AbsolutePackPath, String> sourceProvider, String name) {
ComputeSource[] programs = new ComputeSource[27];
@@ -187,6 +210,7 @@ public class ProgramSet {
programs.add(shadow);
programs.addAll(Arrays.asList(shadowcomp));
programs.addAll(Arrays.asList(begin));
programs.addAll(Arrays.asList(prepare));
programs.addAll (Arrays.asList(
@@ -212,6 +236,16 @@ public class ProgramSet {
computes.addAll(Arrays.asList(computeSources));
}
for (ComputeSource computeSource : setup) {
if (computeSource != null) {
computes.add(computeSource);
}
}
for (ComputeSource[] computeSources : beginCompute) {
computes.addAll(Arrays.asList(computeSources));
}
Collections.addAll(computes, finalCompute);
Collections.addAll(computes, shadowCompute);
@@ -263,6 +297,18 @@ public class ProgramSet {
return shadowcomp;
}
public ComputeSource[] getSetup() {
return setup;
}
public ProgramSource[] getBegin() {
return begin;
}
public ComputeSource[][] getBeginCompute() {
return beginCompute;
}
public ProgramSource[] getPrepare() {
return prepare;
}