Пример #1
0
void x86_jcc( struct x86_function *p,
	      enum x86_cc cc,
	      int label )
{
   int offset = label - (x86_get_label(p) + 2);
   DUMP_I(cc);
   
   if (offset < 0) {
      /*assert(p->csr - p->store > -offset);*/
      if (p->csr - p->store <= -offset) {
         /* probably out of memory (using the error_overflow buffer) */
         return;
      }
   }

   if (offset <= 127 && offset >= -128) {
      emit_1ub(p, 0x70 + cc);
      emit_1b(p, (char) offset);
   }
   else {
      offset = label - (x86_get_label(p) + 6);
      emit_2ub(p, 0x0f, 0x80 + cc);
      emit_1i(p, offset);
   }
}
Пример #2
0
/* Always use a 32bit offset for forward jumps:
 */
int x86_jcc_forward( struct x86_function *p,
                     enum x86_cc cc )
{
   DUMP_I(cc);
   emit_2ub(p, 0x0f, 0x80 + cc);
   emit_1i(p, 0);
   return x86_get_label(p);
}
Пример #3
0
void x86_push_imm32( struct x86_function *p,
                     int imm32 )
{
   DUMP_I( imm32 );
   emit_1ub(p, 0x68);
   emit_1i(p,  imm32);

   p->stack_offset += 4;
}
Пример #4
0
void x86_jmp( struct x86_function *p, int label)
{
   DUMP_I( label );
   emit_1ub(p, 0xe9);
   emit_1i(p, label - x86_get_label(p) - 4);
}
Пример #5
0
static void
dd_dump_draw_vbo(struct dd_context *dctx, struct pipe_draw_info *info, FILE *f)
{
   int sh, i;
   const char *shader_str[PIPE_SHADER_TYPES];

   shader_str[PIPE_SHADER_VERTEX] = "VERTEX";
   shader_str[PIPE_SHADER_TESS_CTRL] = "TESS_CTRL";
   shader_str[PIPE_SHADER_TESS_EVAL] = "TESS_EVAL";
   shader_str[PIPE_SHADER_GEOMETRY] = "GEOMETRY";
   shader_str[PIPE_SHADER_FRAGMENT] = "FRAGMENT";
   shader_str[PIPE_SHADER_COMPUTE] = "COMPUTE";

   DUMP(draw_info, info);
   if (info->indexed) {
      DUMP(index_buffer, &dctx->index_buffer);
      if (dctx->index_buffer.buffer)
         DUMP_M(resource, &dctx->index_buffer, buffer);
   }
   if (info->count_from_stream_output)
      DUMP_M(stream_output_target, info,
             count_from_stream_output);
   if (info->indirect)
      DUMP_M(resource, info, indirect);
   fprintf(f, "\n");

   /* TODO: dump active queries */

   dd_dump_render_condition(dctx, f);

   for (i = 0; i < PIPE_MAX_ATTRIBS; i++)
      if (dctx->vertex_buffers[i].buffer ||
          dctx->vertex_buffers[i].user_buffer) {
         DUMP_I(vertex_buffer, &dctx->vertex_buffers[i], i);
         if (dctx->vertex_buffers[i].buffer)
            DUMP_M(resource, &dctx->vertex_buffers[i], buffer);
      }

   if (dctx->velems) {
      print_named_value(f, "num vertex elements",
                        dctx->velems->state.velems.count);
      for (i = 0; i < dctx->velems->state.velems.count; i++) {
         fprintf(f, "  ");
         DUMP_I(vertex_element, &dctx->velems->state.velems.velems[i], i);
      }
   }

   print_named_value(f, "num stream output targets", dctx->num_so_targets);
   for (i = 0; i < dctx->num_so_targets; i++)
      if (dctx->so_targets[i]) {
         DUMP_I(stream_output_target, dctx->so_targets[i], i);
         DUMP_M(resource, dctx->so_targets[i], buffer);
         fprintf(f, "  offset = %i\n", dctx->so_offsets[i]);
      }

   fprintf(f, "\n");
   for (sh = 0; sh < PIPE_SHADER_TYPES; sh++) {
      if (sh == PIPE_SHADER_COMPUTE)
         continue;

      if (sh == PIPE_SHADER_TESS_CTRL &&
          !dctx->shaders[PIPE_SHADER_TESS_CTRL] &&
          dctx->shaders[PIPE_SHADER_TESS_EVAL])
         fprintf(f, "tess_state: {default_outer_level = {%f, %f, %f, %f}, "
                 "default_inner_level = {%f, %f}}\n",
                 dctx->tess_default_levels[0],
                 dctx->tess_default_levels[1],
                 dctx->tess_default_levels[2],
                 dctx->tess_default_levels[3],
                 dctx->tess_default_levels[4],
                 dctx->tess_default_levels[5]);

      if (sh == PIPE_SHADER_FRAGMENT)
         if (dctx->rs) {
            unsigned num_viewports = dd_num_active_viewports(dctx);

            if (dctx->rs->state.rs.clip_plane_enable)
               DUMP(clip_state, &dctx->clip_state);

            for (i = 0; i < num_viewports; i++)
               DUMP_I(viewport_state, &dctx->viewports[i], i);

            if (dctx->rs->state.rs.scissor)
               for (i = 0; i < num_viewports; i++)
                  DUMP_I(scissor_state, &dctx->scissors[i], i);

            DUMP(rasterizer_state, &dctx->rs->state.rs);

            if (dctx->rs->state.rs.poly_stipple_enable)
               DUMP(poly_stipple, &dctx->polygon_stipple);
            fprintf(f, "\n");
         }

      if (!dctx->shaders[sh])
         continue;

      fprintf(f, COLOR_SHADER "begin shader: %s" COLOR_RESET "\n", shader_str[sh]);
      DUMP(shader_state, &dctx->shaders[sh]->state.shader);

      for (i = 0; i < PIPE_MAX_CONSTANT_BUFFERS; i++)
         if (dctx->constant_buffers[sh][i].buffer ||
             dctx->constant_buffers[sh][i].user_buffer) {
            DUMP_I(constant_buffer, &dctx->constant_buffers[sh][i], i);
            if (dctx->constant_buffers[sh][i].buffer)
               DUMP_M(resource, &dctx->constant_buffers[sh][i], buffer);
         }

      for (i = 0; i < PIPE_MAX_SAMPLERS; i++)
         if (dctx->sampler_states[sh][i])
            DUMP_I(sampler_state, &dctx->sampler_states[sh][i]->state.sampler, i);

      for (i = 0; i < PIPE_MAX_SAMPLERS; i++)
         if (dctx->sampler_views[sh][i]) {
            DUMP_I(sampler_view, dctx->sampler_views[sh][i], i);
            DUMP_M(resource, dctx->sampler_views[sh][i], texture);
         }

      /* TODO: print shader images */
      /* TODO: print shader buffers */

      fprintf(f, COLOR_SHADER "end shader: %s" COLOR_RESET "\n\n", shader_str[sh]);
   }

   if (dctx->dsa)
      DUMP(depth_stencil_alpha_state, &dctx->dsa->state.dsa);
   DUMP(stencil_ref, &dctx->stencil_ref);

   if (dctx->blend)
      DUMP(blend_state, &dctx->blend->state.blend);
   DUMP(blend_color, &dctx->blend_color);

   print_named_value(f, "min_samples", dctx->min_samples);
   print_named_xvalue(f, "sample_mask", dctx->sample_mask);
   fprintf(f, "\n");

   DUMP(framebuffer_state, &dctx->framebuffer_state);
   for (i = 0; i < dctx->framebuffer_state.nr_cbufs; i++)
      if (dctx->framebuffer_state.cbufs[i]) {
         fprintf(f, "  " COLOR_STATE "cbufs[%i]:" COLOR_RESET "\n    ", i);
         DUMP(surface, dctx->framebuffer_state.cbufs[i]);
         fprintf(f, "    ");
         DUMP(resource, dctx->framebuffer_state.cbufs[i]->texture);
      }
   if (dctx->framebuffer_state.zsbuf) {
      fprintf(f, "  " COLOR_STATE "zsbuf:" COLOR_RESET "\n    ");
      DUMP(surface, dctx->framebuffer_state.zsbuf);
      fprintf(f, "    ");
      DUMP(resource, dctx->framebuffer_state.zsbuf->texture);
   }
   fprintf(f, "\n");
}