Home | History | Annotate | Download | only in util
      1 /**************************************************************************
      2  *
      3  * Copyright 2010 Luca Barbieri
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining
      6  * a copy of this software and associated documentation files (the
      7  * "Software"), to deal in the Software without restriction, including
      8  * without limitation the rights to use, copy, modify, merge, publish,
      9  * distribute, sublicense, and/or sell copies of the Software, and to
     10  * permit persons to whom the Software is furnished to do so, subject to
     11  * the following conditions:
     12  *
     13  * The above copyright notice and this permission notice (including the
     14  * next paragraph) shall be included in all copies or substantial
     15  * portions of the Software.
     16  *
     17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     18  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
     20  * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
     21  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
     22  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
     23  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     24  *
     25  **************************************************************************/
     26 
     27 #include "pipe/p_state.h"
     28 #include "util/u_format.h"
     29 #include "util/u_debug_describe.h"
     30 #include "util/u_string.h"
     31 
     32 void
     33 debug_describe_reference(char* buf, const struct pipe_reference*ptr)
     34 {
     35    strcpy(buf, "pipe_object");
     36 }
     37 
     38 void
     39 debug_describe_resource(char* buf, const struct pipe_resource *ptr)
     40 {
     41    switch(ptr->target)
     42    {
     43    case PIPE_BUFFER:
     44       util_sprintf(buf, "pipe_buffer<%u>", (unsigned)util_format_get_stride(ptr->format, ptr->width0));
     45       break;
     46    case PIPE_TEXTURE_1D:
     47       util_sprintf(buf, "pipe_texture1d<%u,%s,%u>", ptr->width0, util_format_short_name(ptr->format), ptr->last_level);
     48       break;
     49    case PIPE_TEXTURE_2D:
     50       util_sprintf(buf, "pipe_texture2d<%u,%u,%s,%u>", ptr->width0, ptr->height0, util_format_short_name(ptr->format), ptr->last_level);
     51       break;
     52    case PIPE_TEXTURE_RECT:
     53       util_sprintf(buf, "pipe_texture_rect<%u,%u,%s>", ptr->width0, ptr->height0, util_format_short_name(ptr->format));
     54       break;
     55    case PIPE_TEXTURE_CUBE:
     56       util_sprintf(buf, "pipe_texture_cube<%u,%u,%s,%u>", ptr->width0, ptr->height0, util_format_short_name(ptr->format), ptr->last_level);
     57       break;
     58    case PIPE_TEXTURE_3D:
     59       util_sprintf(buf, "pipe_texture3d<%u,%u,%u,%s,%u>", ptr->width0, ptr->height0, ptr->depth0, util_format_short_name(ptr->format), ptr->last_level);
     60       break;
     61    default:
     62       util_sprintf(buf, "pipe_martian_resource<%u>", ptr->target);
     63       break;
     64    }
     65 }
     66 
     67 void
     68 debug_describe_surface(char* buf, const struct pipe_surface *ptr)
     69 {
     70    char res[128];
     71    debug_describe_resource(res, ptr->texture);
     72    util_sprintf(buf, "pipe_surface<%s,%u,%u,%u>", res, ptr->u.tex.level, ptr->u.tex.first_layer, ptr->u.tex.last_layer);
     73 }
     74 
     75 void
     76 debug_describe_sampler_view(char* buf, const struct pipe_sampler_view *ptr)
     77 {
     78    char res[128];
     79    debug_describe_resource(res, ptr->texture);
     80    util_sprintf(buf, "pipe_sampler_view<%s,%s>", res, util_format_short_name(ptr->format));
     81 }
     82 
     83 void
     84 debug_describe_image_view(char* buf, const struct pipe_image_view *ptr)
     85 {
     86    char res[128];
     87    debug_describe_resource(res, ptr->resource);
     88    util_sprintf(buf, "pipe_image_view<%s,%s>", res,
     89                 util_format_short_name(ptr->format));
     90 }
     91 
     92 void
     93 debug_describe_so_target(char* buf,
     94                          const struct pipe_stream_output_target *ptr)
     95 {
     96    char res[128];
     97    debug_describe_resource(res, ptr->buffer);
     98    util_sprintf(buf, "pipe_stream_output_target<%s,%u,%u>", res,
     99                 ptr->buffer_offset, ptr->buffer_size);
    100 }
    101