mirror of
https://github.com/brl/mutter.git
synced 2024-12-25 04:22:05 +00:00
cogl-debug: Add a debug option for tracing clipping
This adds a COGL_DEBUG=clipping option that reports how the clip is being flushed. This is needed to determine whether the scissor, stencil clip planes or software clipping is being used.
This commit is contained in:
parent
35a2d79e46
commit
5137d0a23f
@ -597,6 +597,8 @@ _cogl_clip_stack_flush (CoglClipStack *stack)
|
|||||||
/* If the stack is empty then there's nothing else to do */
|
/* If the stack is empty then there's nothing else to do */
|
||||||
if (stack == NULL)
|
if (stack == NULL)
|
||||||
{
|
{
|
||||||
|
COGL_NOTE (CLIPPING, "Flushed empty clip stack");
|
||||||
|
|
||||||
ctx->current_clip_stack_uses_stencil = FALSE;
|
ctx->current_clip_stack_uses_stencil = FALSE;
|
||||||
GE (glDisable (GL_SCISSOR_TEST));
|
GE (glDisable (GL_SCISSOR_TEST));
|
||||||
return;
|
return;
|
||||||
@ -636,6 +638,10 @@ _cogl_clip_stack_flush (CoglClipStack *stack)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
COGL_NOTE (CLIPPING, "Flushing scissor to (%i, %i, %i, %i)",
|
||||||
|
scissor_x0, scissor_y0,
|
||||||
|
scissor_x1, scissor_y1);
|
||||||
|
|
||||||
GE (glEnable (GL_SCISSOR_TEST));
|
GE (glEnable (GL_SCISSOR_TEST));
|
||||||
GE (glScissor (scissor_x0, scissor_y_start,
|
GE (glScissor (scissor_x0, scissor_y_start,
|
||||||
scissor_x1 - scissor_x0,
|
scissor_x1 - scissor_x0,
|
||||||
@ -651,6 +657,8 @@ _cogl_clip_stack_flush (CoglClipStack *stack)
|
|||||||
{
|
{
|
||||||
CoglClipStackPath *path_entry = (CoglClipStackPath *) entry;
|
CoglClipStackPath *path_entry = (CoglClipStackPath *) entry;
|
||||||
|
|
||||||
|
COGL_NOTE (CLIPPING, "Adding stencil clip for path");
|
||||||
|
|
||||||
_cogl_matrix_stack_push (modelview_stack);
|
_cogl_matrix_stack_push (modelview_stack);
|
||||||
_cogl_matrix_stack_set (modelview_stack, &path_entry->matrix);
|
_cogl_matrix_stack_set (modelview_stack, &path_entry->matrix);
|
||||||
|
|
||||||
@ -677,6 +685,8 @@ _cogl_clip_stack_flush (CoglClipStack *stack)
|
|||||||
them then use that instead */
|
them then use that instead */
|
||||||
if (has_clip_planes)
|
if (has_clip_planes)
|
||||||
{
|
{
|
||||||
|
COGL_NOTE (CLIPPING, "Adding clip planes clip for rectangle");
|
||||||
|
|
||||||
set_clip_planes (rect->x0,
|
set_clip_planes (rect->x0,
|
||||||
rect->y0,
|
rect->y0,
|
||||||
rect->x1,
|
rect->x1,
|
||||||
@ -687,6 +697,8 @@ _cogl_clip_stack_flush (CoglClipStack *stack)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
COGL_NOTE (CLIPPING, "Adding stencil clip for rectangle");
|
||||||
|
|
||||||
add_stencil_clip_rectangle (rect->x0,
|
add_stencil_clip_rectangle (rect->x0,
|
||||||
rect->y0,
|
rect->y0,
|
||||||
rect->x1,
|
rect->x1,
|
||||||
|
@ -174,3 +174,8 @@ OPT (DISABLE_FAST_READ_PIXEL,
|
|||||||
"Disable read pixel optimization",
|
"Disable read pixel optimization",
|
||||||
"Disable optimization for reading 1px for simple "
|
"Disable optimization for reading 1px for simple "
|
||||||
"scenes of opaque rectangles")
|
"scenes of opaque rectangles")
|
||||||
|
OPT (CLIPPING,
|
||||||
|
"Cogl Tracing",
|
||||||
|
"clipping",
|
||||||
|
"Trace clipping",
|
||||||
|
"Logs information about how Cogl is implementing clipping")
|
||||||
|
@ -54,7 +54,8 @@ static const GDebugKey cogl_log_debug_keys[] = {
|
|||||||
{ "show-source", COGL_DEBUG_SHOW_SOURCE},
|
{ "show-source", COGL_DEBUG_SHOW_SOURCE},
|
||||||
{ "offscreen", COGL_DEBUG_OFFSCREEN },
|
{ "offscreen", COGL_DEBUG_OFFSCREEN },
|
||||||
{ "texture-pixmap", COGL_DEBUG_TEXTURE_PIXMAP },
|
{ "texture-pixmap", COGL_DEBUG_TEXTURE_PIXMAP },
|
||||||
{ "bitmap", COGL_DEBUG_BITMAP }
|
{ "bitmap", COGL_DEBUG_BITMAP },
|
||||||
|
{ "clipping", COGL_DEBUG_CLIPPING }
|
||||||
};
|
};
|
||||||
static const int n_cogl_log_debug_keys =
|
static const int n_cogl_log_debug_keys =
|
||||||
G_N_ELEMENTS (cogl_log_debug_keys);
|
G_N_ELEMENTS (cogl_log_debug_keys);
|
||||||
|
@ -62,6 +62,7 @@ typedef enum {
|
|||||||
COGL_DEBUG_DISABLE_SOFTWARE_CLIP,
|
COGL_DEBUG_DISABLE_SOFTWARE_CLIP,
|
||||||
COGL_DEBUG_DISABLE_PROGRAM_CACHES,
|
COGL_DEBUG_DISABLE_PROGRAM_CACHES,
|
||||||
COGL_DEBUG_DISABLE_FAST_READ_PIXEL,
|
COGL_DEBUG_DISABLE_FAST_READ_PIXEL,
|
||||||
|
COGL_DEBUG_CLIPPING,
|
||||||
|
|
||||||
COGL_DEBUG_N_FLAGS
|
COGL_DEBUG_N_FLAGS
|
||||||
} CoglDebugFlags;
|
} CoglDebugFlags;
|
||||||
|
@ -1046,6 +1046,8 @@ maybe_software_clip_entries (CoglJournalEntry *batch_start,
|
|||||||
|
|
||||||
/* If we make it here then we know we can software clip the entire batch */
|
/* If we make it here then we know we can software clip the entire batch */
|
||||||
|
|
||||||
|
COGL_NOTE (CLIPPING, "Software clipping a batch of length %i", batch_len);
|
||||||
|
|
||||||
for (entry_num = 0; entry_num < batch_len; entry_num++)
|
for (entry_num = 0; entry_num < batch_len; entry_num++)
|
||||||
{
|
{
|
||||||
CoglJournalEntry *journal_entry = batch_start + entry_num;
|
CoglJournalEntry *journal_entry = batch_start + entry_num;
|
||||||
|
Loading…
Reference in New Issue
Block a user