[Mesa-dev] [PATCH 03/23] gallium: extract individual streamout output structure

Nicolai Hähnle nhaehnle at gmail.com
Wed Nov 30 13:35:05 UTC 2016


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

So that we can pass pointers to individual array entries around.
---
 src/gallium/include/pipe/p_state.h | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index 46df196..6d42b4c 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -188,42 +188,47 @@ struct pipe_scissor_state
    unsigned maxx:16;
    unsigned maxy:16;
 };
 
 
 struct pipe_clip_state
 {
    float ucp[PIPE_MAX_CLIP_PLANES][4];
 };
 
+/**
+ * A single output for vertex transform feedback.
+ */
+struct pipe_stream_output
+{
+   unsigned register_index:8;  /**< 0 to PIPE_MAX_SHADER_OUTPUTS */
+   unsigned start_component:2; /** 0 to 3 */
+   unsigned num_components:3;  /** 1 to 4 */
+   unsigned output_buffer:3;   /**< 0 to PIPE_MAX_SO_BUFFERS */
+   unsigned dst_offset:16;     /**< offset into the buffer in dwords */
+   unsigned stream:2;          /**< 0 to 3 */
+};
 
 /**
  * Stream output for vertex transform feedback.
  */
 struct pipe_stream_output_info
 {
    unsigned num_outputs;
    /** stride for an entire vertex for each buffer in dwords */
    unsigned stride[PIPE_MAX_SO_BUFFERS];
 
    /**
     * Array of stream outputs, in the order they are to be written in.
     * Selected components are tightly packed into the output buffer.
     */
-   struct {
-      unsigned register_index:8;  /**< 0 to PIPE_MAX_SHADER_OUTPUTS */
-      unsigned start_component:2; /** 0 to 3 */
-      unsigned num_components:3;  /** 1 to 4 */
-      unsigned output_buffer:3;   /**< 0 to PIPE_MAX_SO_BUFFERS */
-      unsigned dst_offset:16;     /**< offset into the buffer in dwords */
-      unsigned stream:2;          /**< 0 to 3 */
-   } output[PIPE_MAX_SO_OUTPUTS];
+   struct pipe_stream_output output[PIPE_MAX_SO_OUTPUTS];
 };
 
 /**
  * The 'type' parameter identifies whether the shader state contains TGSI
  * tokens, etc.  If the driver returns 'PIPE_SHADER_IR_TGSI' for the
  * 'PIPE_SHADER_CAP_PREFERRED_IR' shader param, the ir will *always* be
  * 'PIPE_SHADER_IR_TGSI' and the tokens ptr will be valid.  If the driver
  * requests a different 'pipe_shader_ir' type, then it must check the 'type'
  * enum to see if it is getting TGSI tokens or its preferred IR.
  *
-- 
2.7.4



More information about the mesa-dev mailing list