[PATCH 2/5] wined3d: Get rid of the tracing code in shader_vaddline().

Henri Verbeet hverbeet at codeweavers.com
Thu Apr 23 13:23:23 CDT 2015


---
 dlls/wined3d/arb_program_shader.c |    6 +++++
 dlls/wined3d/glsl_shader.c        |    9 +++++++
 dlls/wined3d/shader.c             |   50 +++++++++++--------------------------
 dlls/wined3d/wined3d_private.h    |    2 --
 4 files changed, 29 insertions(+), 38 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 39800f2..7a497d2 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -3262,6 +3262,12 @@ static BOOL shader_arb_compile(const struct wined3d_gl_info *gl_info, GLenum tar
     const char *ptr, *line;
     GLint native, pos;
 
+    if (TRACE_ON(d3d_shader))
+    {
+        ptr = src;
+        while ((line = get_line(&ptr))) TRACE_(d3d_shader)("    %.*s", (int)(ptr - line), line);
+    }
+
     GL_EXTCALL(glProgramStringARB(target, GL_PROGRAM_FORMAT_ASCII_ARB, strlen(src), src));
     checkGLcall("glProgramStringARB()");
 
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index f1bf0a3..0f18019 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -344,7 +344,16 @@ static void print_glsl_info_log(const struct wined3d_gl_info *gl_info, GLuint id
 /* Context activation is done by the caller. */
 static void shader_glsl_compile(const struct wined3d_gl_info *gl_info, GLuint shader, const char *src)
 {
+    const char *ptr, *line;
+
     TRACE("Compiling shader object %u.\n", shader);
+
+    if (TRACE_ON(d3d_shader))
+    {
+        ptr = src;
+        while ((line = get_info_log_line(&ptr))) TRACE_(d3d_shader)("    %.*s", (int)(ptr - line), line);
+    }
+
     GL_EXTCALL(glShaderSource(shader, 1, &src, NULL));
     checkGLcall("glShaderSource");
     GL_EXTCALL(glCompileShader(shader));
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index c249c9a..7d0c47b 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -249,8 +249,6 @@ void shader_buffer_clear(struct wined3d_shader_buffer *buffer)
 {
     buffer->buffer[0] = '\0';
     buffer->content_size = 0;
-    buffer->lineNo = 0;
-    buffer->newline = TRUE;
 }
 
 BOOL shader_buffer_init(struct wined3d_shader_buffer *buffer)
@@ -273,48 +271,28 @@ void shader_buffer_free(struct wined3d_shader_buffer *buffer)
 
 int shader_vaddline(struct wined3d_shader_buffer *buffer, const char *format, va_list args)
 {
-    char *base = buffer->buffer + buffer->content_size;
+    unsigned int rem;
     int rc;
     char *new_buffer;
 
-    while(1)
+    for (;;)
     {
-        rc = vsnprintf(base, buffer->buffer_size - buffer->content_size, format, args);
-        if (rc < 0 /* C89 */ || (unsigned int)rc >= buffer->buffer_size - buffer->content_size /* C99 */)
-        {
-            new_buffer = HeapReAlloc(GetProcessHeap(), 0, buffer->buffer, buffer->buffer_size * 2);
-            if (!new_buffer)
-            {
-                ERR("The buffer allocated for the shader program string is too small at %d bytes.\n", buffer->buffer_size);
-                buffer->content_size = buffer->buffer_size - 1;
-                return -1;
-            }
-            buffer->buffer = new_buffer;
-            buffer->buffer_size = buffer->buffer_size * 2;
-            base = buffer->buffer + buffer->content_size;
-        }
-        else
-        {
+        rem = buffer->buffer_size - buffer->content_size;
+        rc = vsnprintf(&buffer->buffer[buffer->content_size], rem, format, args);
+
+        if (rc >= 0 /* C89 */ && (unsigned int)rc < rem /* C99 */)
             break;
-        }
-    }
 
-    if (buffer->newline)
-    {
-        TRACE("GL HW (%u, %u) : %s", buffer->lineNo + 1, buffer->content_size, base);
-        buffer->newline = FALSE;
-    }
-    else
-    {
-        TRACE("%s", base);
+        if (!(new_buffer = HeapReAlloc(GetProcessHeap(), 0, buffer->buffer, buffer->buffer_size * 2)))
+        {
+            ERR("Failed to grow buffer.\n");
+            buffer->buffer[buffer->content_size] = '\0';
+            return -1;
+        }
+        buffer->buffer = new_buffer;
+        buffer->buffer_size = buffer->buffer_size * 2;
     }
-
     buffer->content_size += rc;
-    if (buffer->buffer[buffer->content_size-1] == '\n')
-    {
-        ++buffer->lineNo;
-        buffer->newline = TRUE;
-    }
 
     return 0;
 }
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index dd2a85a..ecbec5b 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -440,8 +440,6 @@ struct wined3d_shader_buffer
     char *buffer;
     unsigned int buffer_size;
     unsigned int content_size;
-    unsigned int lineNo;
-    BOOL newline;
 };
 
 enum WINED3D_SHADER_INSTRUCTION_HANDLER
-- 
1.7.10.4




More information about the wine-patches mailing list