diff options
author | Ilia Mirkin <[email protected]> | 2017-07-10 20:58:31 -0400 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2017-07-12 22:09:59 -0400 |
commit | 3645268748c44825ce8d37bf03f684731eb2652a (patch) | |
tree | 3330b7774bd89d77179a79414d40ac2a245b5e53 /src/gallium/drivers/nouveau/codegen | |
parent | 87028f863967ec88ef8b7c5722f6cbf7ac6c8db6 (diff) |
nv50/ir: fix threads calculation for non-compute shaders
We were using the "cp" union fields, which are only valid for compute
shaders. The threads calculation affects the available GPRs, so just
pick a small number for other shader types to avoid limiting available
registers.
Signed-off-by: Ilia Mirkin <[email protected]>
Cc: [email protected]
Diffstat (limited to 'src/gallium/drivers/nouveau/codegen')
-rw-r--r-- | src/gallium/drivers/nouveau/codegen/nv50_ir_target.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.h b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.h index e9d10574835..afeca14d7d1 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.h +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.h @@ -174,11 +174,15 @@ public: virtual void getBuiltinCode(const uint32_t **code, uint32_t *size) const = 0; virtual void parseDriverInfo(const struct nv50_ir_prog_info *info) { - threads = info->prop.cp.numThreads[0] * - info->prop.cp.numThreads[1] * - info->prop.cp.numThreads[2]; - if (threads == 0) - threads = info->target >= NVISA_GK104_CHIPSET ? 1024 : 512; + if (info->type == PIPE_SHADER_COMPUTE) { + threads = info->prop.cp.numThreads[0] * + info->prop.cp.numThreads[1] * + info->prop.cp.numThreads[2]; + if (threads == 0) + threads = info->target >= NVISA_GK104_CHIPSET ? 1024 : 512; + } else { + threads = 32; // doesn't matter, just not too big. + } } virtual bool runLegalizePass(Program *, CGStage stage) const = 0; |