projects
/
mesa.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
285ea41
)
llvmpipe: fence debugging, add llvmpipe_finish
author
Keith Whitwell
<keithw@vmware.com>
Fri, 20 Aug 2010 14:14:19 +0000
(15:14 +0100)
committer
Keith Whitwell
<keithw@vmware.com>
Wed, 25 Aug 2010 09:29:27 +0000
(10:29 +0100)
13 files changed:
src/gallium/drivers/llvmpipe/lp_context.c
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_debug.h
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_fence.c
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_fence.h
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_flush.c
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_flush.h
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_query.c
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_screen.c
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_setup.c
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_setup.h
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_state_fs.c
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_surface.c
patch
|
blob
|
history
src/gallium/drivers/llvmpipe/lp_texture.c
patch
|
blob
|
history
diff --git
a/src/gallium/drivers/llvmpipe/lp_context.c
b/src/gallium/drivers/llvmpipe/lp_context.c
index 7543bd7b2b0d27489496e871bd7e0f5361ab0fac..086a2d589858ee794d95608440f387935d629be5 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_context.c
+++ b/
src/gallium/drivers/llvmpipe/lp_context.c
@@
-85,6
+85,14
@@
static void llvmpipe_destroy( struct pipe_context *pipe )
align_free( llvmpipe );
}
align_free( llvmpipe );
}
+static void
+do_flush( struct pipe_context *pipe,
+ unsigned flags,
+ struct pipe_fence_handle **fence)
+{
+ llvmpipe_flush(pipe, flags, fence, __FUNCTION__);
+}
+
struct pipe_context *
llvmpipe_create_context( struct pipe_screen *screen, void *priv )
struct pipe_context *
llvmpipe_create_context( struct pipe_screen *screen, void *priv )
@@
-109,7
+117,7
@@
llvmpipe_create_context( struct pipe_screen *screen, void *priv )
llvmpipe->pipe.destroy = llvmpipe_destroy;
llvmpipe->pipe.set_framebuffer_state = llvmpipe_set_framebuffer_state;
llvmpipe->pipe.clear = llvmpipe_clear;
llvmpipe->pipe.destroy = llvmpipe_destroy;
llvmpipe->pipe.set_framebuffer_state = llvmpipe_set_framebuffer_state;
llvmpipe->pipe.clear = llvmpipe_clear;
- llvmpipe->pipe.flush =
llvmpipe
_flush;
+ llvmpipe->pipe.flush =
do
_flush;
llvmpipe_init_blend_funcs(llvmpipe);
llvmpipe_init_clip_funcs(llvmpipe);
llvmpipe_init_blend_funcs(llvmpipe);
llvmpipe_init_clip_funcs(llvmpipe);
diff --git
a/src/gallium/drivers/llvmpipe/lp_debug.h
b/src/gallium/drivers/llvmpipe/lp_debug.h
index 92fb2b3ee5b530477999e211c19aac21a59998a9..a928ee38becaefffaff25f9d8ec28de15ba79fb6 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_debug.h
+++ b/
src/gallium/drivers/llvmpipe/lp_debug.h
@@
-46,6
+46,8
@@
st_print_current(void);
#define DEBUG_SHOW_TILES 0x200
#define DEBUG_SHOW_SUBTILES 0x400
#define DEBUG_COUNTERS 0x800
#define DEBUG_SHOW_TILES 0x200
#define DEBUG_SHOW_SUBTILES 0x400
#define DEBUG_COUNTERS 0x800
+#define DEBUG_SCENE 0x1000
+#define DEBUG_FENCE 0x2000
#ifdef DEBUG
#ifdef DEBUG
diff --git
a/src/gallium/drivers/llvmpipe/lp_fence.c
b/src/gallium/drivers/llvmpipe/lp_fence.c
index f9805e5d6881fa1ac347f59306a9be55e694f2f2..4d549b075049e2dd78e25ff61bf45d0ea4a3b5bc 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_fence.c
+++ b/
src/gallium/drivers/llvmpipe/lp_fence.c
@@
-44,6
+44,7
@@
struct lp_fence *
lp_fence_create(unsigned rank)
{
struct lp_fence *
lp_fence_create(unsigned rank)
{
+ static int fence_id;
struct lp_fence *fence = CALLOC_STRUCT(lp_fence);
pipe_reference_init(&fence->reference, 1);
struct lp_fence *fence = CALLOC_STRUCT(lp_fence);
pipe_reference_init(&fence->reference, 1);
@@
-51,8
+52,12
@@
lp_fence_create(unsigned rank)
pipe_mutex_init(fence->mutex);
pipe_condvar_init(fence->signalled);
pipe_mutex_init(fence->mutex);
pipe_condvar_init(fence->signalled);
+ fence->id = fence_id++;
fence->rank = rank;
fence->rank = rank;
+ if (LP_DEBUG & DEBUG_FENCE)
+ debug_printf("%s %d\n", __FUNCTION__, fence->id);
+
return fence;
}
return fence;
}
@@
-61,6
+66,9
@@
lp_fence_create(unsigned rank)
void
lp_fence_destroy(struct lp_fence *fence)
{
void
lp_fence_destroy(struct lp_fence *fence)
{
+ if (LP_DEBUG & DEBUG_FENCE)
+ debug_printf("%s %d\n", __FUNCTION__, fence->id);
+
pipe_mutex_destroy(fence->mutex);
pipe_condvar_destroy(fence->signalled);
FREE(fence);
pipe_mutex_destroy(fence->mutex);
pipe_condvar_destroy(fence->signalled);
FREE(fence);
@@
-126,13
+134,17
@@
llvmpipe_fence_finish(struct pipe_screen *screen,
void
lp_fence_signal(struct lp_fence *fence)
{
void
lp_fence_signal(struct lp_fence *fence)
{
+ if (LP_DEBUG & DEBUG_FENCE)
+ debug_printf("%s %d\n", __FUNCTION__, fence->id);
+
pipe_mutex_lock(fence->mutex);
fence->count++;
assert(fence->count <= fence->rank);
pipe_mutex_lock(fence->mutex);
fence->count++;
assert(fence->count <= fence->rank);
- LP_DBG(DEBUG_RAST, "%s count=%u rank=%u\n", __FUNCTION__,
- fence->count, fence->rank);
+ if (LP_DEBUG & DEBUG_FENCE)
+ debug_printf("%s count=%u rank=%u\n", __FUNCTION__,
+ fence->count, fence->rank);
pipe_condvar_signal(fence->signalled);
pipe_condvar_signal(fence->signalled);
diff --git
a/src/gallium/drivers/llvmpipe/lp_fence.h
b/src/gallium/drivers/llvmpipe/lp_fence.h
index 13358fb99f2a89ddd3007706ab2fc4708691af23..b80af5c6543219edf6f5e12aa337aedfc4d97c56 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_fence.h
+++ b/
src/gallium/drivers/llvmpipe/lp_fence.h
@@
-41,6
+41,7
@@
struct pipe_screen;
struct lp_fence
{
struct pipe_reference reference;
struct lp_fence
{
struct pipe_reference reference;
+ unsigned id;
pipe_mutex mutex;
pipe_condvar signalled;
pipe_mutex mutex;
pipe_condvar signalled;
diff --git
a/src/gallium/drivers/llvmpipe/lp_flush.c
b/src/gallium/drivers/llvmpipe/lp_flush.c
index 845292f4ab206f4c21e290d7bba91e253cf626db..040fe0ba9a67837e3e18a0e222d5d5545e5951de 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_flush.c
+++ b/
src/gallium/drivers/llvmpipe/lp_flush.c
@@
-45,14
+45,15
@@
void
llvmpipe_flush( struct pipe_context *pipe,
unsigned flags,
void
llvmpipe_flush( struct pipe_context *pipe,
unsigned flags,
- struct pipe_fence_handle **fence )
+ struct pipe_fence_handle **fence,
+ const char *reason)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
draw_flush(llvmpipe->draw);
/* ask the setup module to flush */
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
draw_flush(llvmpipe->draw);
/* ask the setup module to flush */
- lp_setup_flush(llvmpipe->setup, flags, fence);
+ lp_setup_flush(llvmpipe->setup, flags, fence
, reason
);
/* Enable to dump BMPs of the color/depth buffers each frame */
if (0) {
/* Enable to dump BMPs of the color/depth buffers each frame */
if (0) {
@@
-76,6
+77,17
@@
llvmpipe_flush( struct pipe_context *pipe,
}
}
}
}
+void
+llvmpipe_finish( struct pipe_context *pipe,
+ const char *reason )
+{
+ struct pipe_fence_handle *fence = NULL;
+ llvmpipe_flush(pipe, 0, &fence, reason);
+ if (fence) {
+ pipe->screen->fence_finish(pipe->screen, fence, 0);
+ pipe->screen->fence_reference(pipe->screen, &fence, NULL);
+ }
+}
/**
* Flush context if necessary.
/**
* Flush context if necessary.
@@
-93,7
+105,8
@@
llvmpipe_flush_resource(struct pipe_context *pipe,
unsigned flush_flags,
boolean read_only,
boolean cpu_access,
unsigned flush_flags,
boolean read_only,
boolean cpu_access,
- boolean do_not_block)
+ boolean do_not_block,
+ const char *reason)
{
unsigned referenced;
{
unsigned referenced;
@@
-106,31
+119,16
@@
llvmpipe_flush_resource(struct pipe_context *pipe,
/*
* Flush and wait.
*/
/*
* Flush and wait.
*/
-
- struct pipe_fence_handle *fence = NULL;
-
if (do_not_block)
return FALSE;
if (do_not_block)
return FALSE;
- /*
- * Do the unswizzling in parallel.
- *
- * XXX: Don't abuse the PIPE_FLUSH_FRAME flag for this.
- */
- flush_flags |= PIPE_FLUSH_FRAME;
-
- llvmpipe_flush(pipe, flush_flags, &fence);
-
- if (fence) {
- pipe->screen->fence_finish(pipe->screen, fence, 0);
- pipe->screen->fence_reference(pipe->screen, &fence, NULL);
- }
+ llvmpipe_finish(pipe, reason);
} else {
/*
* Just flush.
*/
} else {
/*
* Just flush.
*/
- llvmpipe_flush(pipe, flush_flags, NULL);
+ llvmpipe_flush(pipe, flush_flags, NULL
, reason
);
}
}
}
}
diff --git
a/src/gallium/drivers/llvmpipe/lp_flush.h
b/src/gallium/drivers/llvmpipe/lp_flush.h
index 7b605681a935e51cc06bfab3cf69c45bcda5b10b..bb538b2bd83d70fa01f4f76d3df98e3c04d5f676 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_flush.h
+++ b/
src/gallium/drivers/llvmpipe/lp_flush.h
@@
-34,8
+34,14
@@
struct pipe_context;
struct pipe_fence_handle;
void
struct pipe_fence_handle;
void
-llvmpipe_flush(struct pipe_context *pipe, unsigned flags,
- struct pipe_fence_handle **fence);
+llvmpipe_flush(struct pipe_context *pipe,
+ unsigned flags,
+ struct pipe_fence_handle **fence,
+ const char *reason);
+
+void
+llvmpipe_finish( struct pipe_context *pipe,
+ const char *reason );
boolean
llvmpipe_flush_resource(struct pipe_context *pipe,
boolean
llvmpipe_flush_resource(struct pipe_context *pipe,
@@
-45,6
+51,7
@@
llvmpipe_flush_resource(struct pipe_context *pipe,
unsigned flush_flags,
boolean read_only,
boolean cpu_access,
unsigned flush_flags,
boolean read_only,
boolean cpu_access,
- boolean do_not_block);
+ boolean do_not_block,
+ const char *reason);
#endif
#endif
diff --git
a/src/gallium/drivers/llvmpipe/lp_query.c
b/src/gallium/drivers/llvmpipe/lp_query.c
index 02eeaf64871d5344aab458785f201939654a6331..540eea7fd10df5f1c3ab6f79a3999343b211020e 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_query.c
+++ b/
src/gallium/drivers/llvmpipe/lp_query.c
@@
-35,9
+35,9
@@
#include "util/u_memory.h"
#include "lp_context.h"
#include "lp_flush.h"
#include "util/u_memory.h"
#include "lp_context.h"
#include "lp_flush.h"
+#include "lp_fence.h"
#include "lp_query.h"
#include "lp_rast.h"
#include "lp_query.h"
#include "lp_rast.h"
-#include "lp_rast_priv.h"
#include "lp_state.h"
#include "lp_state.h"
@@
-69,12
+69,7
@@
llvmpipe_destroy_query(struct pipe_context *pipe, struct pipe_query *q)
struct llvmpipe_query *pq = llvmpipe_query(q);
/* query might still be in process if we never waited for the result */
if (!pq->done) {
struct llvmpipe_query *pq = llvmpipe_query(q);
/* query might still be in process if we never waited for the result */
if (!pq->done) {
- struct pipe_fence_handle *fence = NULL;
- llvmpipe_flush(pipe, 0, &fence);
- if (fence) {
- pipe->screen->fence_finish(pipe->screen, fence, 0);
- pipe->screen->fence_reference(pipe->screen, &fence, NULL);
- }
+ llvmpipe_finish(pipe, __FUNCTION__);
}
pipe_mutex_destroy(pq->mutex);
}
pipe_mutex_destroy(pq->mutex);
@@
-93,16
+88,11
@@
llvmpipe_get_query_result(struct pipe_context *pipe,
if (!pq->done) {
if (wait) {
if (!pq->done) {
if (wait) {
- struct pipe_fence_handle *fence = NULL;
- llvmpipe_flush(pipe, 0, &fence);
- if (fence) {
- pipe->screen->fence_finish(pipe->screen, fence, 0);
- pipe->screen->fence_reference(pipe->screen, &fence, NULL);
- }
+ llvmpipe_finish(pipe, __FUNCTION__);
}
/* this is a bit inconsequent but should be ok */
else {
}
/* this is a bit inconsequent but should be ok */
else {
- llvmpipe_flush(pipe, 0, NULL);
+ llvmpipe_flush(pipe, 0, NULL
, __FUNCTION__
);
}
}
}
}
@@
-125,12
+115,7
@@
llvmpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
* frame of rendering.
*/
if (pq->binned) {
* frame of rendering.
*/
if (pq->binned) {
- struct pipe_fence_handle *fence;
- llvmpipe_flush(pipe, 0, &fence);
- if (fence) {
- pipe->screen->fence_finish(pipe->screen, fence, 0);
- pipe->screen->fence_reference(pipe->screen, &fence, NULL);
- }
+ llvmpipe_finish(pipe, __FUNCTION__);
}
lp_setup_begin_query(llvmpipe->setup, pq);
}
lp_setup_begin_query(llvmpipe->setup, pq);
diff --git
a/src/gallium/drivers/llvmpipe/lp_screen.c
b/src/gallium/drivers/llvmpipe/lp_screen.c
index 6968cda62926ce168363b0c2049300d26925cf08..14a156378a92b5770c79921d07edea938dd1019e 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_screen.c
+++ b/
src/gallium/drivers/llvmpipe/lp_screen.c
@@
-61,6
+61,8
@@
static const struct debug_named_value lp_debug_flags[] = {
{ "show_tiles", DEBUG_SHOW_TILES, NULL },
{ "show_subtiles", DEBUG_SHOW_SUBTILES, NULL },
{ "counters", DEBUG_COUNTERS, NULL },
{ "show_tiles", DEBUG_SHOW_TILES, NULL },
{ "show_subtiles", DEBUG_SHOW_SUBTILES, NULL },
{ "counters", DEBUG_COUNTERS, NULL },
+ { "scene", DEBUG_SCENE, NULL },
+ { "fence", DEBUG_FENCE, NULL },
DEBUG_NAMED_VALUE_END
};
#endif
DEBUG_NAMED_VALUE_END
};
#endif
diff --git
a/src/gallium/drivers/llvmpipe/lp_setup.c
b/src/gallium/drivers/llvmpipe/lp_setup.c
index 556e571585dc948268415dccf01fea6a5d95c6e4..6eede83bfbac7117186db04fa030f31f94bb901c 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/
src/gallium/drivers/llvmpipe/lp_setup.c
@@
-275,9
+275,10
@@
set_scene_state( struct lp_setup_context *setup,
void
lp_setup_flush( struct lp_setup_context *setup,
unsigned flags,
void
lp_setup_flush( struct lp_setup_context *setup,
unsigned flags,
- struct pipe_fence_handle **fence)
+ struct pipe_fence_handle **fence,
+ const char *reason)
{
{
- LP_DBG(DEBUG_SETUP, "%s
\n", __FUNCTION__
);
+ LP_DBG(DEBUG_SETUP, "%s
%s\n", __FUNCTION__, reason
);
if (setup->scene) {
if (fence) {
if (setup->scene) {
if (fence) {
diff --git
a/src/gallium/drivers/llvmpipe/lp_setup.h
b/src/gallium/drivers/llvmpipe/lp_setup.h
index 73b1c85325a4ec5eb883f84dfe8daf094827b683..a41bb8863bb2e148d9c888e0a07af16bffa2b680 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_setup.h
+++ b/
src/gallium/drivers/llvmpipe/lp_setup.h
@@
-85,7
+85,8
@@
lp_setup_fence( struct lp_setup_context *setup );
void
lp_setup_flush( struct lp_setup_context *setup,
unsigned flags,
void
lp_setup_flush( struct lp_setup_context *setup,
unsigned flags,
- struct pipe_fence_handle **fence);
+ struct pipe_fence_handle **fence,
+ const char *reason);
void
void
diff --git
a/src/gallium/drivers/llvmpipe/lp_state_fs.c
b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index 35ef63389cbf69441b9c614a25e7fe86a5d8c98a..33c1a49efec66f7c4ac9747af18686e9e60cd556 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/
src/gallium/drivers/llvmpipe/lp_state_fs.c
@@
-927,7
+927,6
@@
static void
llvmpipe_delete_fs_state(struct pipe_context *pipe, void *fs)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
llvmpipe_delete_fs_state(struct pipe_context *pipe, void *fs)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
- struct pipe_fence_handle *fence = NULL;
struct lp_fragment_shader *shader = fs;
struct lp_fs_variant_list_item *li;
struct lp_fragment_shader *shader = fs;
struct lp_fs_variant_list_item *li;
@@
-940,12
+939,7
@@
llvmpipe_delete_fs_state(struct pipe_context *pipe, void *fs)
* Flushing alone might not sufficient we need to wait on it too.
*/
* Flushing alone might not sufficient we need to wait on it too.
*/
- llvmpipe_flush(pipe, 0, &fence);
-
- if (fence) {
- pipe->screen->fence_finish(pipe->screen, fence, 0);
- pipe->screen->fence_reference(pipe->screen, &fence, NULL);
- }
+ llvmpipe_finish(pipe, __FUNCTION__);
li = first_elem(&shader->variants);
while(!at_end(&shader->variants, li)) {
li = first_elem(&shader->variants);
while(!at_end(&shader->variants, li)) {
@@
-1148,19
+1142,14
@@
llvmpipe_update_fs(struct llvmpipe_context *lp)
unsigned i;
if (lp->nr_fs_variants >= LP_MAX_SHADER_VARIANTS) {
struct pipe_context *pipe = &lp->pipe;
unsigned i;
if (lp->nr_fs_variants >= LP_MAX_SHADER_VARIANTS) {
struct pipe_context *pipe = &lp->pipe;
- struct pipe_fence_handle *fence = NULL;
/*
* XXX: we need to flush the context until we have some sort of reference
* counting in fragment shaders as they may still be binned
* Flushing alone might not be sufficient we need to wait on it too.
*/
/*
* XXX: we need to flush the context until we have some sort of reference
* counting in fragment shaders as they may still be binned
* Flushing alone might not be sufficient we need to wait on it too.
*/
- llvmpipe_f
lush(pipe, 0, &fence
);
+ llvmpipe_f
inish(pipe, __FUNCTION__
);
- if (fence) {
- pipe->screen->fence_finish(pipe->screen, fence, 0);
- pipe->screen->fence_reference(pipe->screen, &fence, NULL);
- }
for (i = 0; i < LP_MAX_SHADER_VARIANTS / 4; i++) {
struct lp_fs_variant_list_item *item = last_elem(&lp->fs_variants_list);
remove_shader_variant(lp, item->base);
for (i = 0; i < LP_MAX_SHADER_VARIANTS / 4; i++) {
struct lp_fs_variant_list_item *item = last_elem(&lp->fs_variants_list);
remove_shader_variant(lp, item->base);
diff --git
a/src/gallium/drivers/llvmpipe/lp_surface.c
b/src/gallium/drivers/llvmpipe/lp_surface.c
index f761e8285000b2adea39f26bdfe5b658791ef4ab..63ddc669c2cc644a45df9c9922ae2360bf165785 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_surface.c
+++ b/
src/gallium/drivers/llvmpipe/lp_surface.c
@@
-68,14
+68,16
@@
lp_resource_copy(struct pipe_context *pipe,
0, /* flush_flags */
FALSE, /* read_only */
TRUE, /* cpu_access */
0, /* flush_flags */
FALSE, /* read_only */
TRUE, /* cpu_access */
- FALSE); /* do_not_block */
+ FALSE,
+ "blit dst"); /* do_not_block */
llvmpipe_flush_resource(pipe,
src, subsrc.face, subsrc.level,
0, /* flush_flags */
TRUE, /* read_only */
TRUE, /* cpu_access */
llvmpipe_flush_resource(pipe,
src, subsrc.face, subsrc.level,
0, /* flush_flags */
TRUE, /* read_only */
TRUE, /* cpu_access */
- FALSE); /* do_not_block */
+ FALSE,
+ "blit src"); /* do_not_block */
/*
printf("surface copy from %u to %u: %u,%u to %u,%u %u x %u\n",
/*
printf("surface copy from %u to %u: %u,%u to %u,%u %u x %u\n",
diff --git
a/src/gallium/drivers/llvmpipe/lp_texture.c
b/src/gallium/drivers/llvmpipe/lp_texture.c
index ff4773fd7c502c27b853c98bc5d1b2a51a733fb9..5832ea274452af6cb4eabebe96aaf89e5990f7c6 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_texture.c
+++ b/
src/gallium/drivers/llvmpipe/lp_texture.c
@@
-584,7
+584,8
@@
llvmpipe_get_transfer(struct pipe_context *pipe,
0, /* flush_flags */
read_only,
TRUE, /* cpu_access */
0, /* flush_flags */
read_only,
TRUE, /* cpu_access */
- do_not_block)) {
+ do_not_block,
+ "transfer dest")) {
/*
* It would have blocked, but state tracker requested no to.
*/
/*
* It would have blocked, but state tracker requested no to.
*/