r600/sfn: Add tesselation shaders
[mesa.git] / src / gallium / drivers / r600 / sfn / sfn_shader_tcs.h
1 #ifndef TCSSHADERFROMNIR_H
2 #define TCSSHADERFROMNIR_H
3
4 #include "sfn_shader_base.h"
5
6 namespace r600 {
7
8 class TcsShaderFromNir : public ShaderFromNirProcessor
9 {
10 public:
11 TcsShaderFromNir(r600_pipe_shader *sh, r600_pipe_shader_selector& sel, const r600_shader_key& key);
12 bool scan_sysvalue_access(nir_instr *instr) override;
13
14 private:
15 bool allocate_reserved_registers() override;
16 bool emit_intrinsic_instruction_override(nir_intrinsic_instr* instr) override;
17 bool store_tess_factor(nir_intrinsic_instr* instr);
18
19 bool do_process_inputs(nir_variable *input) override { return true;}
20 bool do_process_outputs(nir_variable *output) override;
21 bool do_emit_load_deref(const nir_variable *in_var, nir_intrinsic_instr* instr) override { return true;}
22 bool do_emit_store_deref(const nir_variable *out_var, nir_intrinsic_instr* instr) override { return true;}
23 void do_finalize() override {}
24
25 int m_reserved_registers;
26 PValue m_patch_id;
27 PValue m_rel_patch_id;
28 PValue m_invocation_id;
29 PValue m_primitive_id;
30 PValue m_tess_factor_base;
31
32
33 };
34
35 }
36
37 #endif // TCSSHADERFROMNIR_H