r600/sfn: derive the GS from the vertex stage for a common interface
authorGert Wollny <gert.wollny@collabora.com>
Wed, 15 Apr 2020 14:43:22 +0000 (16:43 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 28 Apr 2020 08:06:33 +0000 (08:06 +0000)
The GS can also provide the primid

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4714>

src/gallium/drivers/r600/sfn/sfn_shader_geometry.cpp
src/gallium/drivers/r600/sfn/sfn_shader_geometry.h

index f6ee95e49121a0e9b104eae9e8650888995591cd..878e54e0630eebda89395da15f822d785851f280 100644 (file)
@@ -34,8 +34,8 @@ namespace r600 {
 GeometryShaderFromNir::GeometryShaderFromNir(r600_pipe_shader *sh,
                                              r600_pipe_shader_selector &sel,
                                              const r600_shader_key &key):
-   ShaderFromNirProcessor (PIPE_SHADER_GEOMETRY, sel, sh->shader,
-                           sh->scratch_space_needed),
+   VertexStage(PIPE_SHADER_GEOMETRY, sel, sh->shader,
+               sh->scratch_space_needed),
    m_pipe_shader(sh),
    m_so_info(&sel.so),
    m_first_vertex_emitted(false),
index 9f7f69f69250a5c10d25d8f70ab507ef11b8e383..cacbdaf50b70bf291cee6d4add282a98235b21b0 100644 (file)
 #ifndef SFN_GEOMETRYSHADERFROMNIR_H
 #define SFN_GEOMETRYSHADERFROMNIR_H
 
-#include "sfn_shader_base.h"
+#include "sfn_vertexstageexport.h"
 
 namespace r600 {
 
-class GeometryShaderFromNir : public ShaderFromNirProcessor
+class GeometryShaderFromNir : public VertexStage
 {
 public:
    GeometryShaderFromNir(r600_pipe_shader *sh, r600_pipe_shader_selector& sel, const r600_shader_key& key);
    bool do_emit_load_deref(const nir_variable *in_var, nir_intrinsic_instr* instr) override;
    bool do_emit_store_deref(const nir_variable *out_var, nir_intrinsic_instr* instr) override;
    bool scan_sysvalue_access(nir_instr *instr) override;
+   PValue primitive_id() override {return m_primitive_id;}
 
 private:
    struct ArrayDeref {