[Mesa-dev] [PATCH 4/4] program: remove _mesa_init_*_program wrappers

Matt Turner mattst88 at gmail.com
Fri Oct 9 10:44:01 PDT 2015


On Fri, Oct 9, 2015 at 10:38 AM, Marek Olšák <maraeo at gmail.com> wrote:
> On Fri, Oct 9, 2015 at 7:33 PM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>> On 9 October 2015 at 17:55, Marek Olšák <maraeo at gmail.com> wrote:
>>> On Thu, Oct 8, 2015 at 3:49 PM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>>>> On 8 October 2015 at 01:12, Marek Olšák <maraeo at gmail.com> wrote:
>>>>> From: Marek Olšák <marek.olsak at amd.com>
>>>>>
>>>>> They didn't do anything useful.
>>>>> ---
>>>>>  src/mesa/drivers/dri/i915/i915_fragprog.c          |   7 +-
>>>>>  src/mesa/drivers/dri/i965/brw_program.c            |  10 +-
>>>>>  .../drivers/dri/i965/test_fs_cmod_propagation.cpp  |   2 +-
>>>>>  .../dri/i965/test_fs_saturate_propagation.cpp      |   2 +-
>>>>>  .../dri/i965/test_vec4_copy_propagation.cpp        |   2 +-
>>>>>  .../dri/i965/test_vec4_register_coalesce.cpp       |   2 +-
>>>>>  src/mesa/drivers/dri/r200/r200_vertprog.c          |   4 +-
>>>>>  src/mesa/program/program.c                         | 133 +++------------------
>>>>>  src/mesa/program/program.h                         |  29 +----
>>>>>  src/mesa/state_tracker/st_cb_program.c             |  43 +++----
>>>>>  10 files changed, 50 insertions(+), 184 deletions(-)
>>>>>
>>>>> diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c
>>>>> index 1a5943c..237d219 100644
>>>>> --- a/src/mesa/drivers/dri/i915/i915_fragprog.c
>>>>> +++ b/src/mesa/drivers/dri/i915/i915_fragprog.c
>>>>> @@ -1316,8 +1316,8 @@ i915NewProgram(struct gl_context * ctx, GLenum target, GLuint id)
>>>>>  {
>>>>>     switch (target) {
>>>>>     case GL_VERTEX_PROGRAM_ARB:
>>>>> -      return _mesa_init_vertex_program(ctx, CALLOC_STRUCT(gl_vertex_program),
>>>>> -                                       target, id);
>>>>> +      return _mesa_init_gl_program(CALLOC_STRUCT(gl_vertex_program),
>>>>> +                                   target, id);
>>>>>
>>>> Worth doing the memory allocation to a temporary variable, and feeding
>>>> &prog->base to _mesa_init_gl_program ?
>>>
>>> I tried that first, but it required more lines of code.
>>>
>> The ones that you'll gain, will be balanced out by the other suggestions :-)
>>
>>>>
>>>>> --- a/src/mesa/drivers/dri/r200/r200_vertprog.c
>>>>> +++ b/src/mesa/drivers/dri/r200/r200_vertprog.c
>>>>> @@ -1205,9 +1205,9 @@ r200NewProgram(struct gl_context *ctx, GLenum target, GLuint id)
>>>>>     switch(target){
>>>>>     case GL_VERTEX_PROGRAM_ARB:
>>>>>        vp = CALLOC_STRUCT(r200_vertex_program);
>>>>> -      return _mesa_init_vertex_program(ctx, &vp->mesa_program, target, id);
>>>>> +      return _mesa_init_gl_program(&vp->mesa_program, target, id);
>>>>>     case GL_FRAGMENT_PROGRAM_ARB:
>>>>> -      return _mesa_init_fragment_program( ctx, CALLOC_STRUCT(gl_fragment_program), target, id );
>>>>> +      return _mesa_init_gl_program(CALLOC_STRUCT(gl_fragment_program), target, id);
>>>> Ditto.
>>>>
>>>>
>>>>> --- a/src/mesa/program/program.c
>>>>> +++ b/src/mesa/program/program.c
>>>>
>>>>> @@ -309,34 +217,29 @@ _mesa_new_program(struct gl_context *ctx, GLenum target, GLuint id)
>>>>>     struct gl_program *prog;
>>>>>     switch (target) {
>>>>>     case GL_VERTEX_PROGRAM_ARB: /* == GL_VERTEX_PROGRAM_NV */
>>>>> -      prog = _mesa_init_vertex_program(ctx, CALLOC_STRUCT(gl_vertex_program),
>>>>> -                                       target, id );
>>>>> +      prog = _mesa_init_gl_program(CALLOC_STRUCT(gl_vertex_program),
>>>>> +                                   target, id);
>>>> Ditto. + early return similar to st/mesa ?
>>>>
>>>>> --- a/src/mesa/program/program.h
>>>>> +++ b/src/mesa/program/program.h
>>>>
>>>>> -extern struct gl_program *
>>>>> -_mesa_init_compute_program(struct gl_context *ctx,
>>>>> -                           struct gl_compute_program *prog,
>>>>> -                           GLenum target, GLuint id);
>>>>> +_mesa_init_gl_program(void *prog, GLenum target, GLuint id);
>>>>>
>>>> If you go for my suggestion you can keep prog as struct gl_program *.
>>>>
>>>>> --- a/src/mesa/state_tracker/st_cb_program.c
>>>>> +++ b/src/mesa/state_tracker/st_cb_program.c
>>>>
>>>>> +   switch (target) {
>>>>> +   case GL_VERTEX_PROGRAM_ARB:
>>>>> +      prog = (struct gl_program*)ST_CALLOC_STRUCT(st_vertex_program);
>>>>> +      break;
>>>>> +   case GL_FRAGMENT_PROGRAM_ARB:
>>>> Worth adding case GL_FRAGMENT_PROGRAM_NV, or perhaps nuking it from
>>>> mesa/program/program.c above ?
>>>
>>> I think GL_FRAGMENT_PROGRAM_NV is from an NV extension supported by
>>> some classic drivers but not st/mesa.
>>>
>> Seems to be part of GL_NV_fragment_program, which was removed a while ago with
>
> I think it's GL_NV_fragment_program_option, so you can't just remove
> it unless you want to remove the whole extension.

FWIW, there was a discussion in February ("[PATCH] mesa: don't enable
NV_fragment_program_option with swrast") about removing it. It seems
that it's only needed to support viewperf on swrast.

Maybe we should continue the discussion in that thread.


More information about the mesa-dev mailing list