gallium: decrease the size of pipe_stream_output_info - 532 -> 268 bytes
authorMarek Olšák <marek.olsak@amd.com>
Sat, 1 Apr 2017 23:24:47 +0000 (01:24 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 4 Apr 2017 09:14:43 +0000 (11:14 +0200)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/drivers/radeon/r600_pipe_common.h
src/gallium/drivers/radeon/r600_streamout.c
src/gallium/include/pipe/p_state.h

index 70b28365da42b8c64828b86ed239be1c8e360d66..fbd0ac7e16c295e6d37c6a39c007cfcd9d8f1b3c 100644 (file)
@@ -486,7 +486,7 @@ struct r600_streamout {
 
        /* External state which comes from the vertex shader,
         * it must be set explicitly when binding a shader. */
-       unsigned                        *stride_in_dw;
+       uint16_t                        *stride_in_dw;
        unsigned                        enabled_stream_buffers_mask; /* stream0 buffers0-3 in 4 LSB */
 
        /* The state of VGT_STRMOUT_BUFFER_(CONFIG|EN). */
index b5296aa56673c756b74c07948a45b1fcaf158189..a18089a3b3935073e23a5a39d05d623e7f1506dd 100644 (file)
@@ -187,7 +187,7 @@ static void r600_emit_streamout_begin(struct r600_common_context *rctx, struct r
 {
        struct radeon_winsys_cs *cs = rctx->gfx.cs;
        struct r600_so_target **t = rctx->streamout.targets;
-       unsigned *stride_in_dw = rctx->streamout.stride_in_dw;
+       uint16_t *stride_in_dw = rctx->streamout.stride_in_dw;
        unsigned i, update_flags = 0;
 
        r600_flush_vgt_streamout(rctx);
index 5d995dcc1641c9a9e209ca2a56c96d0170b708c6..54bcf0786809c33c336977ee31e5c15d297491bb 100644 (file)
@@ -206,7 +206,7 @@ struct pipe_clip_state
  */
 struct pipe_stream_output
 {
-   unsigned register_index:8;  /**< 0 to PIPE_MAX_SHADER_OUTPUTS */
+   unsigned register_index:6;  /**< 0 to 63 (OUT index) */
    unsigned start_component:2; /** 0 to 3 */
    unsigned num_components:3;  /** 1 to 4 */
    unsigned output_buffer:3;   /**< 0 to PIPE_MAX_SO_BUFFERS */
@@ -221,7 +221,7 @@ struct pipe_stream_output_info
 {
    unsigned num_outputs;
    /** stride for an entire vertex for each buffer in dwords */
-   unsigned stride[PIPE_MAX_SO_BUFFERS];
+   uint16_t stride[PIPE_MAX_SO_BUFFERS];
 
    /**
     * Array of stream outputs, in the order they are to be written in.