Hi guys,

As I'm yet to receive feedback I thought I'd explain more thoroughly what my 
patch does to make reviewing it easier.

Currently glDebugMessageControlARB() ALWAYS throws an assertion whenever the 
count parameter it set to anything greater than 0.
This is because the gl_enum_to_debug_* functions are called twice which means 
that type, severity and source are ALWAYS equal
to MESA_DEBUG_*_COUNT
I also removed the assert because _mesa_DebugMessageControlARB already does 
this same test and returns with an GL_INVALID_OPERATION
error so the assert would never be true once the extra enum conversion is 
removed.

As this is a bug that stops glDebugMessageControlARB() from working properly I 
would also say this is probably a good candidate for the stable branches.

Thanks for your time,
Tim



----- Original Message -----
From: Timothy Arceri <t_arc...@yahoo.com.au>
To: mesa-dev@lists.freedesktop.org
Cc: Timothy Arceri <t_arc...@yahoo.com.au>
Sent: Wednesday, 21 August 2013 4:18 PM
Subject: [PATCH] mesa: Fix assertion error with glDebugMessageControl

enums were being converted twice resulting in incorrect values.
The extra conversion has been remove and the redundant assert is
removed also.

Signed-off-by: Timothy Arceri <t_arc...@yahoo.com.au>
---
src/mesa/main/errors.c | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)

diff --git a/src/mesa/main/errors.c b/src/mesa/main/errors.c
index 5a0758d..cc93d3b 100644
--- a/src/mesa/main/errors.c
+++ b/src/mesa/main/errors.c
@@ -609,11 +609,6 @@ control_app_messages(struct gl_context *ctx, GLenum 
esource, GLenum etype,
    enum mesa_debug_type type = gl_enum_to_debug_type(etype);
    enum mesa_debug_severity severity = gl_enum_to_debug_severity(eseverity);

-   if (count)
-      assert(severity == MESA_DEBUG_SEVERITY_COUNT
-             && type != MESA_DEBUG_TYPE_COUNT
-             && source != MESA_DEBUG_SOURCE_COUNT);
-
    for (i = 0; i < count; i++)
       set_message_state(ctx, source, type, ids[i], enabled);

@@ -629,9 +624,6 @@ _mesa_DebugMessageControlARB(GLenum gl_source, GLenum 
gl_type,
                              GLsizei count, const GLuint *ids,
                              GLboolean enabled)
{
-   enum mesa_debug_source source;
-   enum mesa_debug_type type;
-   enum mesa_debug_severity severity;
    GET_CURRENT_CONTEXT(ctx);

    if (count < 0) {
@@ -651,11 +643,8 @@ _mesa_DebugMessageControlARB(GLenum gl_source, GLenum 
gl_type,
       return;
    }

-   source = gl_enum_to_debug_source(gl_source);
-   type = gl_enum_to_debug_type(gl_type);
-   severity = gl_enum_to_debug_severity(gl_severity);
-
-   control_app_messages(ctx, source, type, severity, count, ids, enabled);
+   control_app_messages(ctx, gl_source, gl_type, gl_severity,
+                        count, ids, enabled);
}

void GLAPIENTRY
-- 
1.8.3.1
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to