Merge branch 'gallium-0.1' into gallium-tex-surfaces
This commit is contained in:
commit
479174c398
|
@ -28,6 +28,7 @@ static GLfloat Zpos = -1.0;
|
|||
static float Xzoom, Yzoom;
|
||||
static GLboolean DrawFront = GL_FALSE;
|
||||
static GLboolean Dither = GL_TRUE;
|
||||
static int win = 0;
|
||||
|
||||
|
||||
static void Reset( void )
|
||||
|
@ -215,6 +216,7 @@ static void Key( unsigned char key, int x, int y )
|
|||
printf("glDrawBuffer(%s)\n", DrawFront ? "GL_FRONT" : "GL_BACK");
|
||||
break;
|
||||
case 27:
|
||||
glutDestroyWindow(win);
|
||||
exit(0);
|
||||
break;
|
||||
}
|
||||
|
@ -343,7 +345,7 @@ int main( int argc, char *argv[] )
|
|||
else
|
||||
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE);
|
||||
|
||||
glutCreateWindow(argv[0]);
|
||||
win = glutCreateWindow(argv[0]);
|
||||
|
||||
Init(ciMode, filename);
|
||||
Usage();
|
||||
|
|
|
@ -164,14 +164,16 @@ static struct st_fragment_program *
|
|||
make_fragment_shader_z(struct st_context *st)
|
||||
{
|
||||
GLcontext *ctx = st->ctx;
|
||||
/* only make programs once and re-use */
|
||||
static struct st_fragment_program *stfp = NULL;
|
||||
struct gl_program *p;
|
||||
GLuint ic = 0;
|
||||
|
||||
if (stfp)
|
||||
return stfp;
|
||||
if (st->drawpix.z_shader) {
|
||||
return st->drawpix.z_shader;
|
||||
}
|
||||
|
||||
/*
|
||||
* Create shader now
|
||||
*/
|
||||
p = ctx->Driver.NewProgram(ctx, GL_FRAGMENT_PROGRAM_ARB, 0);
|
||||
if (!p)
|
||||
return NULL;
|
||||
|
@ -213,10 +215,10 @@ make_fragment_shader_z(struct st_context *st)
|
|||
p->OutputsWritten = (1 << FRAG_RESULT_COLR) | (1 << FRAG_RESULT_DEPR);
|
||||
p->SamplersUsed = 0x1; /* sampler 0 (bit 0) is used */
|
||||
|
||||
stfp = (struct st_fragment_program *) p;
|
||||
st_translate_fragment_program(st, stfp, NULL);
|
||||
st->drawpix.z_shader = (struct st_fragment_program *) p;
|
||||
st_translate_fragment_program(st, st->drawpix.z_shader, NULL);
|
||||
|
||||
return stfp;
|
||||
return st->drawpix.z_shader;
|
||||
}
|
||||
|
||||
|
||||
|
@ -228,16 +230,17 @@ make_fragment_shader_z(struct st_context *st)
|
|||
static struct st_vertex_program *
|
||||
st_make_passthrough_vertex_shader(struct st_context *st, GLboolean passColor)
|
||||
{
|
||||
/* only make programs once and re-use */
|
||||
static struct st_vertex_program *progs[2] = { NULL, NULL };
|
||||
GLcontext *ctx = st->ctx;
|
||||
struct st_vertex_program *stvp;
|
||||
struct gl_program *p;
|
||||
GLuint ic = 0;
|
||||
|
||||
if (progs[passColor])
|
||||
return progs[passColor];
|
||||
if (st->drawpix.vert_shaders[passColor])
|
||||
return st->drawpix.vert_shaders[passColor];
|
||||
|
||||
/*
|
||||
* Create shader now
|
||||
*/
|
||||
p = ctx->Driver.NewProgram(ctx, GL_VERTEX_PROGRAM_ARB, 0);
|
||||
if (!p)
|
||||
return NULL;
|
||||
|
@ -293,7 +296,7 @@ st_make_passthrough_vertex_shader(struct st_context *st, GLboolean passColor)
|
|||
stvp = (struct st_vertex_program *) p;
|
||||
st_translate_vertex_program(st, stvp, NULL);
|
||||
|
||||
progs[passColor] = stvp;
|
||||
st->drawpix.vert_shaders[passColor] = stvp;
|
||||
|
||||
return stvp;
|
||||
}
|
||||
|
@ -1075,3 +1078,15 @@ void st_init_drawpixels_functions(struct dd_function_table *functions)
|
|||
functions->DrawPixels = st_DrawPixels;
|
||||
functions->CopyPixels = st_CopyPixels;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
st_destroy_drawpix(struct st_context *st)
|
||||
{
|
||||
st_reference_fragprog(st, &st->drawpix.z_shader, NULL);
|
||||
st_reference_fragprog(st, &st->pixel_xfer.combined_prog, NULL);
|
||||
st_reference_vertprog(st, &st->drawpix.vert_shaders[0], NULL);
|
||||
st_reference_vertprog(st, &st->drawpix.vert_shaders[1], NULL);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -32,5 +32,8 @@
|
|||
|
||||
extern void st_init_drawpixels_functions(struct dd_function_table *functions);
|
||||
|
||||
extern void
|
||||
st_destroy_drawpix(struct st_context *st);
|
||||
|
||||
|
||||
#endif /* ST_CB_DRAWPIXELS_H */
|
||||
|
|
|
@ -168,6 +168,7 @@ static void st_destroy_context_priv( struct st_context *st )
|
|||
st_destroy_bitmap(st);
|
||||
st_destroy_blit(st);
|
||||
st_destroy_clear(st);
|
||||
st_destroy_drawpix(st);
|
||||
|
||||
_vbo_DestroyContext(st->ctx);
|
||||
|
||||
|
|
|
@ -155,6 +155,12 @@ struct st_context
|
|||
struct bitmap_cache *cache;
|
||||
} bitmap;
|
||||
|
||||
/** for glDraw/CopyPixels */
|
||||
struct {
|
||||
struct st_fragment_program *z_shader;
|
||||
struct st_vertex_program *vert_shaders[2];
|
||||
} drawpix;
|
||||
|
||||
/** for glClear */
|
||||
struct {
|
||||
struct pipe_shader_state vert_shader;
|
||||
|
|
Loading…
Reference in New Issue