Skip to content

Commit cdb2a65

Browse files
authored
Merge pull request #5 from Devsh-Graphics-Programming/nsc-preprocess
Nsc preprocess
2 parents 2d7c6c9 + 52fac3b commit cdb2a65

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

lib/compilers/nsc-spirv.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@
2525
import path from 'path';
2626
import fs from 'fs/promises';
2727

28-
import type {ExecutionOptions} from '../../types/compilation/compilation.interfaces.js';
28+
import type {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces.js';
2929
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
3030
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
3131
import {BaseCompiler} from '../base-compiler.js';
3232
import {logger} from '../logger.js';
3333
import {SPIRVAsmParser} from '../parsers/asm-parser-spirv.js';
34+
import type {OptRemark} from '../../static/panes/opt-view.interfaces.js';
35+
import type {StackUsageInfo} from '../stack-usage-transformer.js';
3436
import * as utils from '../utils.js';
3537
import {splitArguments} from '../../shared/common-utils.js';
3638
import {unwrap} from '../assert.js';
@@ -153,9 +155,13 @@ export class NSCSPIRVCompiler extends BaseCompiler {
153155
const ppFilename = path.join(sourceDir, this.outputFilebase + '.i');
154156
if (await utils.fileExists(ppFilename)) {
155157
const ppText = await fs.readFile(ppFilename, 'utf8');
156-
result.stdout = result.stdout.concat(utils.parseOutput(ppText));
158+
result.asm = ppText;
159+
} else {
160+
result.asm = '<No preprocessed output file>';
157161
}
158162
result.languageId = 'hlsl';
163+
result.okToCache = false;
164+
(result as any).preprocessOnly = true;
159165
return result;
160166
}
161167

@@ -244,4 +250,16 @@ export class NSCSPIRVCompiler extends BaseCompiler {
244250
asm: ir.asm,
245251
};
246252
}
253+
254+
override async postProcess(
255+
result: CompilationResult,
256+
outputFilename: string,
257+
filters: ParseFiltersAndOutputOptions,
258+
produceOptRemarks = false,
259+
): Promise<[CompilationResult, OptRemark[], StackUsageInfo[]]> {
260+
if ((result as any).preprocessOnly) {
261+
return [result, [] as OptRemark[], [] as StackUsageInfo[]];
262+
}
263+
return super.postProcess(result, outputFilename, filters, produceOptRemarks);
264+
}
247265
}

0 commit comments

Comments
 (0)