[Mesa-dev] [PATCH] mesa: Add _mesa_error_no_memory for logging out-of-memory messages
Juha-Pekka Heikkilä
juhapekka.heikkila at gmail.com
Tue Mar 4 06:04:57 PST 2014
On Tue, Mar 4, 2014 at 3:41 PM, Ian Romanick <idr at freedesktop.org> wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> This can be called from locations that don't have a context pointer
> handy. This patch also adds enough infrastructure so that the unit
> tests for the GLSL compiler and the stand-alone compiler will build and
> function.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> Cc: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> ---
> src/glsl/Makefile.am | 10 +++++++---
> src/glsl/main.cpp | 6 ++++++
> src/glsl/tests/common.c | 30 ++++++++++++++++++++++++++++++
> src/mesa/main/errors.c | 6 ++++++
> src/mesa/main/errors.h | 3 +++
> 5 files changed, 52 insertions(+), 3 deletions(-)
> create mode 100644 src/glsl/tests/common.c
>
> diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am
> index 27e180e..10181da 100644
> --- a/src/glsl/Makefile.am
> +++ b/src/glsl/Makefile.am
> @@ -61,7 +61,8 @@ tests_general_ir_test_SOURCES = \
> $(GLSL_SRCDIR)/standalone_scaffolding.cpp \
> tests/builtin_variable_test.cpp \
> tests/invalidate_locations_test.cpp \
> - tests/general_ir_test.cpp
> + tests/general_ir_test.cpp \
> + tests/common.c
> tests_general_ir_test_CFLAGS = \
> $(PTHREAD_CFLAGS)
> tests_general_ir_test_LDADD = \
> @@ -76,7 +77,8 @@ tests_uniform_initializer_test_SOURCES = \
> $(top_srcdir)/src/mesa/program/symbol_table.c \
> tests/copy_constant_to_storage_tests.cpp \
> tests/set_uniform_initializer_tests.cpp \
> - tests/uniform_initializer_utils.cpp
> + tests/uniform_initializer_utils.cpp \
> + tests/common.c
> tests_uniform_initializer_test_CFLAGS = \
> $(PTHREAD_CFLAGS)
> tests_uniform_initializer_test_LDADD = \
> @@ -95,7 +97,8 @@ tests_ralloc_test_LDADD = \
> tests_sampler_types_test_SOURCES = \
> $(top_srcdir)/src/mesa/program/prog_hash_table.c\
> $(top_srcdir)/src/mesa/program/symbol_table.c \
> - tests/sampler_types_test.cpp
> + tests/sampler_types_test.cpp \
> + tests/common.c
> tests_sampler_types_test_CFLAGS = \
> $(PTHREAD_CFLAGS)
> tests_sampler_types_test_LDADD = \
> @@ -136,6 +139,7 @@ glsl_test_SOURCES = \
> $(top_srcdir)/src/mesa/program/prog_hash_table.c \
> $(top_srcdir)/src/mesa/program/symbol_table.c \
> $(GLSL_SRCDIR)/standalone_scaffolding.cpp \
> + tests/common.c \
> test.cpp \
> test_optpass.cpp
>
> diff --git a/src/glsl/main.cpp b/src/glsl/main.cpp
> index 4ae8f09..a4452e0 100644
> --- a/src/glsl/main.cpp
> +++ b/src/glsl/main.cpp
> @@ -40,6 +40,12 @@
>
> static int glsl_version = 330;
>
> +extern "C" void
> +_mesa_error_no_memory(const char *caller)
> +{
> + fprintf(stderr, "Mesa error: out of memory in %s", caller);
> +}
> +
> static void
> initialize_context(struct gl_context *ctx, gl_api api)
> {
> diff --git a/src/glsl/tests/common.c b/src/glsl/tests/common.c
> new file mode 100644
> index 0000000..d69f54d
> --- /dev/null
> +++ b/src/glsl/tests/common.c
> @@ -0,0 +1,30 @@
> +/*
> + * Copyright © 2014 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> + * DEALINGS IN THE SOFTWARE.
> + */
> +#include <stdio.h>
> +#include "main/errors.h"
> +
> +void
> +_mesa_error_no_memory(const char *caller)
> +{
> + fprintf(stderr, "Mesa error: out of memory in %s", caller);
> +}
> diff --git a/src/mesa/main/errors.c b/src/mesa/main/errors.c
> index ca73a66..8126e1f 100644
> --- a/src/mesa/main/errors.c
> +++ b/src/mesa/main/errors.c
> @@ -1377,6 +1377,12 @@ _mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... )
> _mesa_record_error(ctx, error);
> }
>
> +void
> +_mesa_error_no_memory(const char *caller)
> +{
> + GET_CURRENT_CONTEXT(ctx);
> + _mesa_error(ctx, GL_OUT_OF_MEMORY, "out of memory in %s", caller);
> +}
>
> /**
> * Report debug information. Print error message to stderr via fprintf().
> diff --git a/src/mesa/main/errors.h b/src/mesa/main/errors.h
> index cd414e6..41a3dca 100644
> --- a/src/mesa/main/errors.h
> +++ b/src/mesa/main/errors.h
> @@ -64,6 +64,9 @@ extern void
> _mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... ) PRINTFLIKE(3, 4);
>
> extern void
> +_mesa_error_no_memory(const char *caller);
> +
> +extern void
> _mesa_debug( const struct gl_context *ctx, const char *fmtString, ... ) PRINTFLIKE(2, 3);
>
> extern void
> --
> 1.8.1.4
>
Thanks! Behalf of me this is
Reviewed&Tested by <juhapekka.heikkila at gmail.com>
More information about the mesa-dev
mailing list