[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