> -----Original Message-----
> From: Brian Paul [mailto:[EMAIL PROTECTED]
> Sent: 2007年10月31日 23:55
> To: Zou, Nanhai
> Cc: Nan hai Zou; MESA-Devel
> Subject: Re: i965 glsl support
>
> Zou Nan hai wrote:
> > On Mon, 2007-10-29 at 23:58, Brian Paul wrote:
> >> Nan hai Zou wrote:
> >>
> >> [... git check-in info ...]
> >>
> >> Nan,
> >>
> >> Since you've merged the i965 GLSL support into Mesa/master, can you
> >> summarize what state it's in? Is it fully functional, or are there some
> >> unfinished bits?
> >>
> >> In any case, it's great to have this!
> >>
> >> I've found one problem, however. In shader/program.c in
> >> _mesa_new_shader() you added a call to ctx->Driver.NewProgram():
> >>
> >> struct gl_program *
> >> _mesa_new_program(GLcontext *ctx, GLenum target, GLuint id)
> >> {
> >> if (ctx->Driver.NewProgram)
> >> return ctx->Driver.NewProgram(ctx, target, id);
> >> [...]
> >>
> >>
> >> This causes infinite recursive calls with software drivers since
> >> ctx->Driver.NewProgram is initialized to point to _mesa_new_program().
> >>
> >> I'm going to disable this code. Let me know what problem you were
> >> trying to fix with this change.
> >>
> >> -Brian
> >
> > Hi Brain,
> > The state of glsl on 965 is that it is functional.
> > I have run the glean glsl test. 168 test passed except 1 case that do
> > texture sampling in vertex shader failed.
> >
> > The programs in prog/glsl/ works except the noise program.
> >
> > I am adding the Driver.NewProgram call is because 965 driver attach
> > some field after the brw_vertex/fragment_program field,
>
> Not sure I understand what you're saying. Can you explain?
>
>
In i865/brw_program.c ->
i965 driver->NewProgram which is
brwNewProgram
allocate the data with CALLOC_STRUCT(brw_vertex_program),
struct brw_vertex_program is defined as
{
struct gl_vertex_program program;
GLuint id;
GLuint param_state;
};
the id and param state will be referenced during driver select or upload
program...
however _mesa_new_program only CALLOC_STRUCT(gl_vertex_program).
> > but mesa core
> > only allocate sizeof(brw_vertex/fragment_program), so I have to call
> > driver specific allocate function
>
> How is _mesa_new_program() getting called? It shouldn't be used at all
> with the i965 driver.
>
In brwNewProgram, It will be called if the target is neither
GL_VERTEX_PROGRAM_ARB nor GL_FRAGMENT_PROGRAM_ARB. So normally
_mesa_new_program() will not be called from i965 driver.
This is usually called from slang_compile.c and slang_emit.c.
So maybe we should call Driver->NewProgram instead of directly calling
_mesa_new_program in slang_compile.c and slang_emit.c?
Thanks
Zou Nan hai
> -Brian
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev