[Mesa-dev] [PATCH 2/2] st/mesa: simplify returning GL_VENDOR
Marek Olšák
maraeo at gmail.com
Wed Jun 7 20:22:21 UTC 2017
On Wed, Jun 7, 2017 at 10:12 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> This creates string lifetime issues... should probably document that
> the pointer returned by get_vendor and get_name are supposed to last
> for the lifetime of the screen.
Was the lifetime of the string not always guaranteed?
Most drivers use a statically-declared string or a literal string. I
think the lifetime has always been at least the same as the lifetime
of pipe_screen.
Marek
>
> On Wed, Jun 7, 2017 at 4:09 PM, Marek Olšák <maraeo at gmail.com> wrote:
>> From: Marek Olšák <marek.olsak at amd.com>
>>
>> ---
>> src/mesa/state_tracker/st_cb_strings.c | 4 +---
>> src/mesa/state_tracker/st_context.h | 2 --
>> 2 files changed, 1 insertion(+), 5 deletions(-)
>>
>> diff --git a/src/mesa/state_tracker/st_cb_strings.c b/src/mesa/state_tracker/st_cb_strings.c
>> index 99d93a7..85fe5a7 100644
>> --- a/src/mesa/state_tracker/st_cb_strings.c
>> +++ b/src/mesa/state_tracker/st_cb_strings.c
>> @@ -40,23 +40,21 @@
>> #include "st_cb_strings.h"
>>
>> static const GLubyte *
>> st_get_string(struct gl_context * ctx, GLenum name)
>> {
>> struct st_context *st = st_context(ctx);
>> struct pipe_screen *screen = st->pipe->screen;
>>
>> switch (name) {
>> case GL_VENDOR: {
>> - const char *vendor = screen->get_vendor( screen );
>> - util_snprintf(st->vendor, sizeof(st->vendor), "%s", vendor);
>> - return (GLubyte *) st->vendor;
>> + return (GLubyte *) screen->get_vendor(screen);
>> }
>>
>> case GL_RENDERER:
>> return (GLubyte *) screen->get_name(screen);
>>
>> default:
>> return NULL;
>> }
>> }
>>
>> diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h
>> index 1756e57..6ca7ddb 100644
>> --- a/src/mesa/state_tracker/st_context.h
>> +++ b/src/mesa/state_tracker/st_context.h
>> @@ -150,22 +150,20 @@ struct st_context
>> boolean include;
>> struct pipe_scissor_state rects[PIPE_MAX_WINDOW_RECTANGLES];
>> } window_rects;
>> unsigned sample_mask;
>>
>> GLuint poly_stipple[32]; /**< In OpenGL's bottom-to-top order */
>>
>> GLuint fb_orientation;
>> } state;
>>
>> - char vendor[100];
>> -
>> uint64_t dirty; /**< dirty states */
>>
>> /** This masks out unused shader resources. Only valid in draw calls. */
>> uint64_t active_states;
>>
>> /* If true, further analysis of states is required to know if something
>> * has changed. Used mainly for shaders.
>> */
>> bool gfx_shaders_may_be_dirty;
>> bool compute_shader_may_be_dirty;
>> --
>> 2.7.4
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list