projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
zink: implement support for derivative-control
[mesa.git]
/
src
/
gallium
/
drivers
/
zink
/
nir_to_spirv
/
nir_to_spirv.c
diff --git
a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
index 34bb14379c4b2b963703c04d557a3790f0473e2d..af1ddef11bdf0f6c80abf3bbe5d77ae896a46d04 100644
(file)
--- a/
src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
+++ b/
src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
@@
-911,7
+911,11
@@
emit_alu(struct ntv_context *ctx, nir_alu_instr *alu)
UNOP(nir_op_ineg, SpvOpSNegate)
UNOP(nir_op_fneg, SpvOpFNegate)
UNOP(nir_op_fddx, SpvOpDPdx)
UNOP(nir_op_ineg, SpvOpSNegate)
UNOP(nir_op_fneg, SpvOpFNegate)
UNOP(nir_op_fddx, SpvOpDPdx)
+ UNOP(nir_op_fddx_coarse, SpvOpDPdxCoarse)
+ UNOP(nir_op_fddx_fine, SpvOpDPdxFine)
UNOP(nir_op_fddy, SpvOpDPdy)
UNOP(nir_op_fddy, SpvOpDPdy)
+ UNOP(nir_op_fddy_coarse, SpvOpDPdyCoarse)
+ UNOP(nir_op_fddy_fine, SpvOpDPdyFine)
UNOP(nir_op_f2i32, SpvOpConvertFToS)
UNOP(nir_op_f2u32, SpvOpConvertFToU)
UNOP(nir_op_i2f32, SpvOpConvertSToF)
UNOP(nir_op_f2i32, SpvOpConvertFToS)
UNOP(nir_op_f2u32, SpvOpConvertFToU)
UNOP(nir_op_i2f32, SpvOpConvertSToF)
@@
-1846,6
+1850,7
@@
nir_to_spirv(struct nir_shader *s)
if (s->info.stage == MESA_SHADER_FRAGMENT) {
spirv_builder_emit_cap(&ctx.builder, SpvCapabilitySampled1D);
spirv_builder_emit_cap(&ctx.builder, SpvCapabilityImageQuery);
if (s->info.stage == MESA_SHADER_FRAGMENT) {
spirv_builder_emit_cap(&ctx.builder, SpvCapabilitySampled1D);
spirv_builder_emit_cap(&ctx.builder, SpvCapabilityImageQuery);
+ spirv_builder_emit_cap(&ctx.builder, SpvCapabilityDerivativeControl);
}
ctx.stage = s->info.stage;
}
ctx.stage = s->info.stage;