コード例 #1
0
ファイル: draw_context.c プロジェクト: nikai3d/mesa
void
draw_set_mapped_constant_buffer(struct draw_context *draw,
                                unsigned shader_type,
                                unsigned slot,
                                const void *buffer,
                                unsigned size )
{
   debug_assert(shader_type == PIPE_SHADER_VERTEX ||
                shader_type == PIPE_SHADER_GEOMETRY);
   debug_assert(slot < PIPE_MAX_CONSTANT_BUFFERS);

   switch (shader_type) {
   case PIPE_SHADER_VERTEX:
      draw->pt.user.vs_constants[slot] = buffer;
      draw->pt.user.vs_constants_size[slot] = size;
      draw->pt.user.planes = (float (*) [12][4]) &(draw->plane[0]);
      draw_vs_set_constants(draw, slot, buffer, size);
      break;
   case PIPE_SHADER_GEOMETRY:
      draw->pt.user.gs_constants[slot] = buffer;
      draw->pt.user.gs_constants_size[slot] = size;
      draw_gs_set_constants(draw, slot, buffer, size);
      break;
   default:
      assert(0 && "invalid shader type in draw_set_mapped_constant_buffer");
   }
}
コード例 #2
0
ファイル: draw_context.c プロジェクト: CPFDSoftware-Tony/gmv
void
draw_set_mapped_constant_buffer(struct draw_context *draw,
                                unsigned shader_type,
                                unsigned slot,
                                const void *buffer,
                                unsigned size )
{
   debug_assert(shader_type == PIPE_SHADER_VERTEX ||
                shader_type == PIPE_SHADER_GEOMETRY);
   debug_assert(slot < PIPE_MAX_CONSTANT_BUFFERS);

   if (shader_type == PIPE_SHADER_VERTEX) {
      draw->pt.user.vs_constants[slot] = buffer;
      draw_vs_set_constants(draw, slot, buffer, size);
   } else if (shader_type == PIPE_SHADER_GEOMETRY) {
      draw->pt.user.gs_constants[slot] = buffer;
      draw_gs_set_constants(draw, slot, buffer, size);
   }
}