diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/state_tracker/st_atom_constbuf.c | 48 | 
1 files changed, 29 insertions, 19 deletions
diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c index 3ba7b26928..5d4d8eee02 100644 --- a/src/mesa/state_tracker/st_atom_constbuf.c +++ b/src/mesa/state_tracker/st_atom_constbuf.c @@ -24,11 +24,12 @@   * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.   *    **************************************************************************/ - /* -  * Authors: -  *   Keith Whitwell <keith@tungstengraphics.com> -  *   Brian Paul -  */ + +/* + * Authors: + *   Keith Whitwell <keith@tungstengraphics.com> + *   Brian Paul + */  #include "main/imports.h"  #include "shader/prog_parameter.h" @@ -44,19 +45,21 @@  #include "st_program.h"  #include "st_inlines.h" +  /**   * Pass the given program parameters to the graphics pipe as a   * constant buffer. - * \param id  either PIPE_SHADER_VERTEX or PIPE_SHADER_FRAGMENT + * \param shader_type  either PIPE_SHADER_VERTEX or PIPE_SHADER_FRAGMENT   */  void st_upload_constants( struct st_context *st,                            struct gl_program_parameter_list *params, -                          unsigned id) +                          unsigned shader_type)  {     struct pipe_context *pipe = st->pipe; -   struct pipe_constant_buffer *cbuf = &st->state.constants[id]; +   struct pipe_constant_buffer *cbuf = &st->state.constants[shader_type]; -   assert(id == PIPE_SHADER_VERTEX || id == PIPE_SHADER_FRAGMENT); +   assert(shader_type == PIPE_SHADER_VERTEX || +          shader_type == PIPE_SHADER_FRAGMENT);     /* update constants */     if (params && params->NumParameters) { @@ -68,13 +71,14 @@ void st_upload_constants( struct st_context *st,         * avoid gratuitous rendering synchronization.         */        pipe_buffer_reference(&cbuf->buffer, NULL ); -      cbuf->buffer = pipe_buffer_create(pipe->screen, 16, PIPE_BUFFER_USAGE_CONSTANT, +      cbuf->buffer = pipe_buffer_create(pipe->screen, 16, +                                        PIPE_BUFFER_USAGE_CONSTANT,  					paramBytes ); -      if (0) -      { -	 printf("%s(shader=%d, numParams=%d, stateFlags=0x%x)\n",  -                __FUNCTION__, id, params->NumParameters, params->StateFlags); +      if (0) { +	 debug_printf("%s(shader=%d, numParams=%d, stateFlags=0x%x)\n",  +                      __FUNCTION__, shader_type, params->NumParameters, +                      params->StateFlags);           _mesa_print_parameter_list(params);        } @@ -84,15 +88,16 @@ void st_upload_constants( struct st_context *st,  				       0, paramBytes,  				       params->ParameterValues); -      st->pipe->set_constant_buffer(st->pipe, id, 0, cbuf); +      st->pipe->set_constant_buffer(st->pipe, shader_type, 0, cbuf);     }     else { -      st->constants.tracked_state[id].dirty.mesa = 0; -      //  st->pipe->set_constant_buffer(st->pipe, id, 0, NULL); +      st->constants.tracked_state[shader_type].dirty.mesa = 0x0;     }  } -/* Vertex shader: + +/** + * Vertex shader:   */  static void update_vs_constants(struct st_context *st )  { @@ -102,6 +107,7 @@ static void update_vs_constants(struct st_context *st )     st_upload_constants( st, params, PIPE_SHADER_VERTEX );  } +  const struct st_tracked_state st_update_vs_constants = {     "st_update_vs_constants",				/* name */     {							/* dirty */ @@ -111,7 +117,10 @@ const struct st_tracked_state st_update_vs_constants = {     update_vs_constants					/* update */  }; -/* Fragment shader: + + +/** + * Fragment shader:   */  static void update_fs_constants(struct st_context *st )  { @@ -121,6 +130,7 @@ static void update_fs_constants(struct st_context *st )     st_upload_constants( st, params, PIPE_SHADER_FRAGMENT );  } +  const struct st_tracked_state st_update_fs_constants = {     "st_update_fs_constants",				/* name */     {							/* dirty */  | 
