コード例 #1
0
static void
pb_debug_buffer_fence(struct pb_buffer *_buf, 
                      struct pipe_fence_handle *fence)
{
   struct pb_debug_buffer *buf = pb_debug_buffer(_buf);
   pb_fence(buf->buffer, fence);
}
コード例 #2
0
ファイル: pb_bufmgr_debug.c プロジェクト: astrofimov/vgallium
static void
pb_debug_buffer_unmap(struct pb_buffer *_buf)
{
   struct pb_debug_buffer *buf = pb_debug_buffer(_buf);   
   pb_unmap(buf->buffer);
   
   pb_debug_buffer_check(buf);
}
コード例 #3
0
static void
pb_debug_buffer_get_base_buffer(struct pb_buffer *_buf,
                                struct pb_buffer **base_buf,
                                pb_size *offset)
{
   struct pb_debug_buffer *buf = pb_debug_buffer(_buf);
   pb_get_base_buffer(buf->buffer, base_buf, offset);
   *offset += buf->underflow_size;
}
コード例 #4
0
ファイル: pb_bufmgr_debug.c プロジェクト: astrofimov/vgallium
static void
pb_debug_buffer_destroy(struct pb_buffer *_buf)
{
   struct pb_debug_buffer *buf = pb_debug_buffer(_buf);  
   
   assert(!buf->base.base.refcount);
   
   pb_debug_buffer_check(buf);

   pb_reference(&buf->buffer, NULL);
   FREE(buf);
}
コード例 #5
0
static void
pb_debug_buffer_unmap(struct pb_buffer *_buf)
{
   struct pb_debug_buffer *buf = pb_debug_buffer(_buf);   
   
   pipe_mutex_lock(buf->mutex);
   assert(buf->map_count);
   if(buf->map_count)
      --buf->map_count;
   pipe_mutex_unlock(buf->mutex);
   
   pb_unmap(buf->buffer);
   
   pb_debug_buffer_check(buf);
}
コード例 #6
0
ファイル: pb_bufmgr_debug.c プロジェクト: astrofimov/vgallium
static void *
pb_debug_buffer_map(struct pb_buffer *_buf, 
                    unsigned flags)
{
   struct pb_debug_buffer *buf = pb_debug_buffer(_buf);
   void *map;
   
   pb_debug_buffer_check(buf);

   map = pb_map(buf->buffer, flags);
   if(!map)
      return NULL;
   
   return (uint8_t *)map + buf->underflow_size;
}
コード例 #7
0
static enum pipe_error 
pb_debug_buffer_validate(struct pb_buffer *_buf, 
                         struct pb_validate *vl,
                         unsigned flags)
{
   struct pb_debug_buffer *buf = pb_debug_buffer(_buf);
   
   pipe_mutex_lock(buf->mutex);
   if(buf->map_count) {
      debug_printf("%s: attempting to validate a mapped buffer\n", __FUNCTION__);
      debug_printf("last map backtrace is\n");
      debug_backtrace_dump(buf->map_backtrace, PB_DEBUG_MAP_BACKTRACE);
   }
   pipe_mutex_unlock(buf->mutex);

   pb_debug_buffer_check(buf);

   return pb_validate(buf->buffer, vl, flags);
}
コード例 #8
0
static void
pb_debug_buffer_destroy(struct pb_buffer *_buf)
{
   struct pb_debug_buffer *buf = pb_debug_buffer(_buf);
   struct pb_debug_manager *mgr = buf->mgr;
   
   assert(!pipe_is_referenced(&buf->base.base.reference));
   
   pb_debug_buffer_check(buf);

   pipe_mutex_lock(mgr->mutex);
   LIST_DEL(&buf->head);
   pipe_mutex_unlock(mgr->mutex);

   pipe_mutex_destroy(buf->mutex);
   
   pb_reference(&buf->buffer, NULL);
   FREE(buf);
}
コード例 #9
0
static void *
pb_debug_buffer_map(struct pb_buffer *_buf, 
                    unsigned flags, void *flush_ctx)
{
   struct pb_debug_buffer *buf = pb_debug_buffer(_buf);
   void *map;
   
   pb_debug_buffer_check(buf);

   map = pb_map(buf->buffer, flags, flush_ctx);
   if (!map)
      return NULL;
   
   mtx_lock(&buf->mutex);
   ++buf->map_count;
   debug_backtrace_capture(buf->map_backtrace, 1, PB_DEBUG_MAP_BACKTRACE);
   mtx_unlock(&buf->mutex);
   
   return (uint8_t *)map + buf->underflow_size;
}