mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
Merge branch 'master' of git+ssh://znh@git.freedesktop.org/git/mesa/mesa into 965-glsl
This commit is contained in:
commit
3c00cdc5f3
111 changed files with 1733 additions and 1312 deletions
2
Makefile
2
Makefile
|
|
@ -372,6 +372,8 @@ DEMO_FILES = \
|
|||
$(DIRECTORY)/progs/demos/*.cxx \
|
||||
$(DIRECTORY)/progs/demos/*.dat \
|
||||
$(DIRECTORY)/progs/demos/README \
|
||||
$(DIRECTORY)/progs/fbdev/Makefile \
|
||||
$(DIRECTORY)/progs/fbdev/glfbdevtest.c \
|
||||
$(DIRECTORY)/progs/osdemos/Makefile \
|
||||
$(DIRECTORY)/progs/osdemos/*.c \
|
||||
$(DIRECTORY)/progs/xdemos/Makefile* \
|
||||
|
|
|
|||
|
|
@ -1053,6 +1053,7 @@ main (int argc, char *argv[])
|
|||
else
|
||||
file = argv[1];
|
||||
|
||||
glutInit(&argc, argv);
|
||||
glutInitWindowPosition (0, 0);
|
||||
glutInitWindowSize(640,480);
|
||||
glutInitDisplayMode (GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
|
||||
|
|
|
|||
|
|
@ -569,6 +569,7 @@ main(int ac, char **av)
|
|||
if (ac == 2)
|
||||
frontbuffer = 0;
|
||||
|
||||
glutInit(&ac, av);
|
||||
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
|
||||
glutInitWindowPosition(0, 0);
|
||||
glutInitWindowSize(640, 480);
|
||||
|
|
|
|||
|
|
@ -1042,6 +1042,7 @@ int main(int argc, char **argv)
|
|||
|
||||
read_surface( "isosurf.dat" );
|
||||
|
||||
glutInit( &argc, argv);
|
||||
glutInitWindowPosition(0, 0);
|
||||
glutInitWindowSize(400, 400);
|
||||
|
||||
|
|
|
|||
|
|
@ -826,7 +826,7 @@ static void pinit(void)
|
|||
|
||||
}
|
||||
|
||||
static void INIT(void)
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
printf("Morph 3D - Shows morphing platonic polyhedra\n");
|
||||
printf("Author: Marcelo Fernandes Vianna (vianna@cat.cbpf.br)\n\n");
|
||||
|
|
@ -841,6 +841,7 @@ static void INIT(void)
|
|||
|
||||
object=1;
|
||||
|
||||
glutInit(&argc, argv);
|
||||
glutInitWindowPosition(0,0);
|
||||
glutInitWindowSize(640,480);
|
||||
|
||||
|
|
@ -888,9 +889,3 @@ static void INIT(void)
|
|||
glutMainLoop();
|
||||
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
INIT();
|
||||
return(0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ static void init( void )
|
|||
|
||||
int main( int argc, char *argv[] )
|
||||
{
|
||||
glutInit(&argc, argv);
|
||||
glutInitWindowPosition(0, 0);
|
||||
glutInitWindowSize(500, 500);
|
||||
glutInitDisplayMode( GLUT_RGB );
|
||||
|
|
|
|||
|
|
@ -23,11 +23,21 @@
|
|||
#include <GL/glfbdev.h>
|
||||
#include <math.h>
|
||||
|
||||
#define DEFAULT_DEPTH 8
|
||||
|
||||
/**
|
||||
* Choose one of these modes
|
||||
*/
|
||||
/*static const int XRes = 1280, YRes = 1024, Hz = 75;*/
|
||||
/*static const int XRes = 1280, YRes = 1024, Hz = 70;*/
|
||||
/*static const int XRes = 1280, YRes = 1024, Hz = 60;*/
|
||||
static const int XRes = 1024, YRes = 768, Hz = 70;
|
||||
|
||||
static int DesiredDepth = 32;
|
||||
|
||||
static int NumFrames = 100;
|
||||
|
||||
static struct fb_fix_screeninfo FixedInfo;
|
||||
static struct fb_var_screeninfo VarInfo, OrigVarInfo;
|
||||
static int DesiredDepth = 0;
|
||||
static int OriginalVT = -1;
|
||||
static int ConsoleFD = -1;
|
||||
static int FrameBufferFD = -1;
|
||||
|
|
@ -227,7 +237,6 @@ initialize_fbdev( void )
|
|||
VarInfo = OrigVarInfo;
|
||||
|
||||
/* set the depth, resolution, etc */
|
||||
DesiredDepth = 32;
|
||||
if (DesiredDepth)
|
||||
VarInfo.bits_per_pixel = DesiredDepth;
|
||||
|
||||
|
|
@ -251,16 +260,60 @@ initialize_fbdev( void )
|
|||
VarInfo.blue.length = 8;
|
||||
VarInfo.transp.length = 8;
|
||||
}
|
||||
/* timing values taken from /etc/fb.modes (1280x1024 @ 75Hz) */
|
||||
VarInfo.xres_virtual = VarInfo.xres = 1280;
|
||||
VarInfo.yres_virtual = VarInfo.yres = 1024;
|
||||
VarInfo.pixclock = 7408;
|
||||
VarInfo.left_margin = 248;
|
||||
VarInfo.right_margin = 16;
|
||||
VarInfo.upper_margin = 38;
|
||||
VarInfo.lower_margin = 1;
|
||||
VarInfo.hsync_len = 144;
|
||||
VarInfo.vsync_len = 3;
|
||||
|
||||
/* timing values taken from /etc/fb.modes */
|
||||
if (XRes == 1280 && YRes == 1024) {
|
||||
VarInfo.xres_virtual = VarInfo.xres = XRes;
|
||||
VarInfo.yres_virtual = VarInfo.yres = YRes;
|
||||
if (Hz == 75) {
|
||||
VarInfo.pixclock = 7408;
|
||||
VarInfo.left_margin = 248;
|
||||
VarInfo.right_margin = 16;
|
||||
VarInfo.upper_margin = 38;
|
||||
VarInfo.lower_margin = 1;
|
||||
VarInfo.hsync_len = 144;
|
||||
VarInfo.vsync_len = 3;
|
||||
}
|
||||
else if (Hz == 70) {
|
||||
VarInfo.pixclock = 7937;
|
||||
VarInfo.left_margin = 216;
|
||||
VarInfo.right_margin = 80;
|
||||
VarInfo.upper_margin = 36;
|
||||
VarInfo.lower_margin = 1;
|
||||
VarInfo.hsync_len = 112;
|
||||
VarInfo.vsync_len = 5;
|
||||
}
|
||||
else if (Hz == 60) {
|
||||
VarInfo.pixclock = 9260;
|
||||
VarInfo.left_margin = 248;
|
||||
VarInfo.right_margin = 48;
|
||||
VarInfo.upper_margin = 38;
|
||||
VarInfo.lower_margin = 1;
|
||||
VarInfo.hsync_len = 112;
|
||||
VarInfo.vsync_len = 3;
|
||||
}
|
||||
else {
|
||||
fprintf(stderr, "invalid rate for 1280x1024\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else if (XRes == 1024 && YRes == 768 && Hz == 70) {
|
||||
VarInfo.xres_virtual = VarInfo.xres = XRes;
|
||||
VarInfo.yres_virtual = VarInfo.yres = YRes;
|
||||
if (Hz == 70) {
|
||||
VarInfo.pixclock = 13334;
|
||||
VarInfo.left_margin = 144;
|
||||
VarInfo.right_margin = 24;
|
||||
VarInfo.upper_margin = 29;
|
||||
VarInfo.lower_margin = 3;
|
||||
VarInfo.hsync_len = 136;
|
||||
VarInfo.vsync_len = 6;
|
||||
}
|
||||
else {
|
||||
fprintf(stderr, "invalid rate for 1024x768\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
VarInfo.xoffset = 0;
|
||||
VarInfo.yoffset = 0;
|
||||
|
|
@ -338,7 +391,7 @@ initialize_fbdev( void )
|
|||
printf("MMIOAddress = %p\n", MMIOAddress);
|
||||
|
||||
/* try out some simple MMIO register reads */
|
||||
if (1)
|
||||
if (0)
|
||||
{
|
||||
typedef unsigned int CARD32;
|
||||
typedef unsigned char CARD8;
|
||||
|
|
@ -452,6 +505,7 @@ gltest( void )
|
|||
GLFBDevVisualPtr vis;
|
||||
int bytes, r, g, b, a;
|
||||
float ang;
|
||||
int i;
|
||||
|
||||
printf("GLFBDEV_VENDOR = %s\n", glFBDevGetString(GLFBDEV_VENDOR));
|
||||
printf("GLFBDEV_VERSION = %s\n", glFBDevGetString(GLFBDEV_VERSION));
|
||||
|
|
@ -491,13 +545,17 @@ gltest( void )
|
|||
glEnable(GL_LIGHT0);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
for (ang = 0; ang <= 180; ang += 15) {
|
||||
printf("Drawing %d frames...\n", NumFrames);
|
||||
|
||||
ang = 0.0;
|
||||
for (i = 0; i < NumFrames; i++) {
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
glPushMatrix();
|
||||
glRotatef(ang, 1, 0, 0);
|
||||
doughnut(1, 3, 40, 20);
|
||||
glPopMatrix();
|
||||
glFBDevSwapBuffers(buf);
|
||||
ang += 15.0;
|
||||
}
|
||||
|
||||
/* clean up */
|
||||
|
|
@ -510,12 +568,29 @@ gltest( void )
|
|||
}
|
||||
|
||||
|
||||
static void
|
||||
parse_args(int argc, char *argv[])
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (strcmp(argv[i], "-f") == 0) {
|
||||
NumFrames = atoi(argv[i+1]);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main( int argc, char *argv[] )
|
||||
{
|
||||
signal(SIGUSR1, signal_handler); /* exit if someone tries a vt switch */
|
||||
signal(SIGSEGV, signal_handler); /* catch segfaults */
|
||||
|
||||
parse_args(argc, argv);
|
||||
|
||||
printf("Setting mode to %d x %d @ %d Hz, %d bpp\n", XRes, YRes, Hz, DesiredDepth);
|
||||
initialize_fbdev();
|
||||
gltest();
|
||||
shutdown_fbdev();
|
||||
|
|
|
|||
|
|
@ -71,12 +71,12 @@ typedef Vertex Quad[4];
|
|||
|
||||
/* data to define the six faces of a unit cube */
|
||||
Quad quads[MAXQUAD] = {
|
||||
{ {0,0,0}, {1,0,0}, {1,1,0}, {0,1,0} },
|
||||
{ {0,0,1}, {1,0,1}, {1,1,1}, {0,1,1} },
|
||||
{ {0,0,0}, {1,0,0}, {1,0,1}, {0,0,1} },
|
||||
{ {0,1,0}, {1,1,0}, {1,1,1}, {0,1,1} },
|
||||
{ {0,0,0}, {0,0,1}, {0,1,1}, {0,1,0} },
|
||||
{ {1,0,0}, {1,0,1}, {1,1,1}, {1,1,0} }
|
||||
{ {0,0,0}, {0,0,1}, {0,1,1}, {0,1,0} }, /* x = 0 */
|
||||
{ {0,0,0}, {1,0,0}, {1,0,1}, {0,0,1} }, /* y = 0 */
|
||||
{ {0,0,0}, {1,0,0}, {1,1,0}, {0,1,0} }, /* z = 0 */
|
||||
{ {1,0,0}, {1,0,1}, {1,1,1}, {1,1,0} }, /* x = 1 */
|
||||
{ {0,1,0}, {1,1,0}, {1,1,1}, {0,1,1} }, /* y = 1 */
|
||||
{ {0,0,1}, {1,0,1}, {1,1,1}, {0,1,1} } /* z = 1 */
|
||||
};
|
||||
|
||||
#define WIREFRAME 0
|
||||
|
|
@ -86,7 +86,7 @@ static void error(const char* prog, const char* msg);
|
|||
static void cubes(int mx, int my, int mode);
|
||||
static void fill(Quad quad);
|
||||
static void outline(Quad quad);
|
||||
static void draw_hidden(Quad quad, int mode);
|
||||
static void draw_hidden(Quad quad, int mode, int face);
|
||||
static void process_input(Display *dpy, Window win);
|
||||
static int query_extension(char* extName);
|
||||
|
||||
|
|
@ -101,6 +101,7 @@ int main(int argc, char** argv) {
|
|||
XSetWindowAttributes swa;
|
||||
Window win;
|
||||
GLXContext cx;
|
||||
GLint z;
|
||||
|
||||
dpy = XOpenDisplay(0);
|
||||
if (!dpy) error(argv[0], "can't open display");
|
||||
|
|
@ -134,13 +135,16 @@ int main(int argc, char** argv) {
|
|||
|
||||
/* set up viewing parameters */
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
gluPerspective(20, 1, 0.1, 20);
|
||||
gluPerspective(20, 1, 10, 20);
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glTranslatef(0, 0, -15);
|
||||
|
||||
/* set other relevant state information */
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
glGetIntegerv(GL_DEPTH_BITS, &z);
|
||||
printf("GL_DEPTH_BITS = %d\n", z);
|
||||
|
||||
#ifdef GL_EXT_polygon_offset
|
||||
printf("using 1.0 offset extension\n");
|
||||
glPolygonOffsetEXT( 1.0, 0.00001 );
|
||||
|
|
@ -160,6 +164,7 @@ int main(int argc, char** argv) {
|
|||
|
||||
static void
|
||||
draw_scene(int mx, int my) {
|
||||
glClearColor(0.25, 0.25, 0.25, 0);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
glPushMatrix();
|
||||
|
|
@ -206,7 +211,7 @@ cubes(int mx, int my, int mode) {
|
|||
glTranslatef(x, y, z);
|
||||
glScalef(0.8, 0.8, 0.8);
|
||||
for (i = 0; i < MAXQUAD; i++)
|
||||
draw_hidden(quads[i], mode);
|
||||
draw_hidden(quads[i], mode, i);
|
||||
glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
|
@ -236,13 +241,18 @@ outline(Quad quad) {
|
|||
}
|
||||
|
||||
static void
|
||||
draw_hidden(Quad quad, int mode) {
|
||||
draw_hidden(Quad quad, int mode, int face) {
|
||||
static const GLfloat colors[3][3] = {
|
||||
{0.5, 0.5, 0.0},
|
||||
{0.8, 0.5, 0.0},
|
||||
{0.0, 0.5, 0.8}
|
||||
};
|
||||
if (mode == HIDDEN_LINE) {
|
||||
glColor3f(0, 0, 0);
|
||||
glColor3fv(colors[face % 3]);
|
||||
fill(quad);
|
||||
}
|
||||
|
||||
/* draw the outline using white, optionally fill the interior with black */
|
||||
/* draw the outline using white */
|
||||
glColor3f(1, 1, 1);
|
||||
outline(quad);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -428,10 +428,12 @@ __driUtilUpdateDrawableInfo(__DRIdrawablePrivate *pdp)
|
|||
|
||||
if (pdp->pClipRects) {
|
||||
_mesa_free(pdp->pClipRects);
|
||||
pdp->pClipRects = NULL;
|
||||
}
|
||||
|
||||
if (pdp->pBackClipRects) {
|
||||
_mesa_free(pdp->pBackClipRects);
|
||||
pdp->pBackClipRects = NULL;
|
||||
}
|
||||
|
||||
DRM_SPINUNLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID);
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ static void i915_reduced_primitive_state( intelContextPtr intel,
|
|||
st1 &= ~ST1_ENABLE;
|
||||
|
||||
switch (rprim) {
|
||||
case GL_QUADS: /* from RASTERIZE(GL_QUADS) in t_dd_tritemp.h */
|
||||
case GL_TRIANGLES:
|
||||
if (intel->ctx.Polygon.StippleFlag &&
|
||||
intel->hw_stipple)
|
||||
|
|
|
|||
|
|
@ -450,10 +450,16 @@ intelDrawPixels( GLcontext *ctx,
|
|||
* wise happily run the fragment program on each pixel in the image).
|
||||
*/
|
||||
struct gl_fragment_program *fpSave = ctx->FragmentProgram._Current;
|
||||
/* can't just set current frag prog to 0 here as on buffer resize
|
||||
we'll get new state checks which will segfault. Remains a hack. */
|
||||
ctx->FragmentProgram._Current = NULL;
|
||||
ctx->FragmentProgram._UseTexEnvProgram = GL_FALSE;
|
||||
ctx->FragmentProgram._Active = GL_FALSE;
|
||||
_swrast_DrawPixels( ctx, x, y, width, height, format, type,
|
||||
unpack, pixels );
|
||||
ctx->FragmentProgram._Current = fpSave;
|
||||
ctx->FragmentProgram._UseTexEnvProgram = GL_TRUE;
|
||||
ctx->FragmentProgram._Active = GL_TRUE;
|
||||
}
|
||||
else {
|
||||
_swrast_DrawPixels( ctx, x, y, width, height, format, type,
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ i915_reduced_primitive_state(struct intel_context *intel, GLenum rprim)
|
|||
st1 &= ~ST1_ENABLE;
|
||||
|
||||
switch (rprim) {
|
||||
case GL_QUADS: /* from RASTERIZE(GL_QUADS) in t_dd_tritemp.h */
|
||||
case GL_TRIANGLES:
|
||||
if (intel->ctx.Polygon.StippleFlag && intel->hw_stipple)
|
||||
st1 |= ST1_ENABLE;
|
||||
|
|
|
|||
|
|
@ -316,7 +316,8 @@ intelWindowMoved(struct intel_context *intel)
|
|||
flags = intel_fb->vblank_flags & ~VBLANK_FLAG_SECONDARY;
|
||||
}
|
||||
|
||||
if (flags != intel_fb->vblank_flags) {
|
||||
if (flags != intel_fb->vblank_flags && intel_fb->vblank_flags &&
|
||||
!(intel_fb->vblank_flags & VBLANK_FLAG_NO_IRQ)) {
|
||||
drmVBlank vbl;
|
||||
int i;
|
||||
|
||||
|
|
@ -327,7 +328,9 @@ intelWindowMoved(struct intel_context *intel)
|
|||
}
|
||||
|
||||
for (i = 0; i < intel_fb->pf_num_pages; i++) {
|
||||
if (!intel_fb->color_rb[i])
|
||||
if (!intel_fb->color_rb[i] ||
|
||||
(intel_fb->vbl_waited - intel_fb->color_rb[i]->vbl_pending) <=
|
||||
(1<<23))
|
||||
continue;
|
||||
|
||||
vbl.request.sequence = intel_fb->color_rb[i]->vbl_pending;
|
||||
|
|
@ -828,7 +831,8 @@ intelScheduleSwap(const __DRIdrawablePrivate * dPriv, GLboolean *missed_target)
|
|||
drm_i915_vblank_swap_t swap;
|
||||
GLboolean ret;
|
||||
|
||||
if ((intel_fb->vblank_flags & VBLANK_FLAG_NO_IRQ) ||
|
||||
if (!intel_fb->vblank_flags ||
|
||||
(intel_fb->vblank_flags & VBLANK_FLAG_NO_IRQ) ||
|
||||
intelScreen->current_rotation != 0 ||
|
||||
intelScreen->drmMinor < (intel_fb->pf_active ? 9 : 6))
|
||||
return GL_FALSE;
|
||||
|
|
|
|||
|
|
@ -619,12 +619,23 @@ intelMakeCurrent(__DRIcontextPrivate * driContextPriv,
|
|||
if (intel->ctx.DrawBuffer == &intel_fb->Base) {
|
||||
|
||||
if (intel->driDrawable != driDrawPriv) {
|
||||
intel_fb->vblank_flags = (intel->intelScreen->irq_active != 0)
|
||||
? driGetDefaultVBlankFlags(&intel->optionCache)
|
||||
: VBLANK_FLAG_NO_IRQ;
|
||||
(*dri_interface->getUST) (&intel_fb->swap_ust);
|
||||
driDrawableInitVBlank(driDrawPriv, intel_fb->vblank_flags,
|
||||
&intel_fb->vbl_seq);
|
||||
if (driDrawPriv->pdraw->swap_interval == (unsigned)-1) {
|
||||
int i;
|
||||
|
||||
intel_fb->vblank_flags = (intel->intelScreen->irq_active != 0)
|
||||
? driGetDefaultVBlankFlags(&intel->optionCache)
|
||||
: VBLANK_FLAG_NO_IRQ;
|
||||
|
||||
(*dri_interface->getUST) (&intel_fb->swap_ust);
|
||||
driDrawableInitVBlank(driDrawPriv, intel_fb->vblank_flags,
|
||||
&intel_fb->vbl_seq);
|
||||
intel_fb->vbl_waited = intel_fb->vbl_seq;
|
||||
|
||||
for (i = 0; i < (intel->intelScreen->third.handle ? 3 : 2); i++) {
|
||||
if (intel_fb->color_rb[i])
|
||||
intel_fb->color_rb[i]->vbl_pending = intel_fb->vbl_seq;
|
||||
}
|
||||
}
|
||||
intel->driDrawable = driDrawPriv;
|
||||
intelWindowMoved(intel);
|
||||
}
|
||||
|
|
@ -670,37 +681,27 @@ intelContendedLock(struct intel_context *intel, GLuint flags)
|
|||
if (sarea->width != intel->width ||
|
||||
sarea->height != intel->height ||
|
||||
sarea->rotation != intel->current_rotation) {
|
||||
|
||||
void *batchMap = intel->batch->map;
|
||||
|
||||
int numClipRects = intel->numClipRects;
|
||||
|
||||
/*
|
||||
* FIXME: Really only need to do this when drawing to a
|
||||
* common back- or front buffer.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This will drop the outstanding batchbuffer on the floor
|
||||
* This will essentially drop the outstanding batchbuffer on the floor.
|
||||
*/
|
||||
intel->numClipRects = 0;
|
||||
|
||||
if (batchMap != NULL) {
|
||||
driBOUnmap(intel->batch->buffer);
|
||||
intel->batch->map = NULL;
|
||||
}
|
||||
if (intel->Fallback)
|
||||
_swrast_flush(&intel->ctx);
|
||||
|
||||
intel_batchbuffer_reset(intel->batch);
|
||||
INTEL_FIREVERTICES(intel);
|
||||
|
||||
if (batchMap == NULL) {
|
||||
driBOUnmap(intel->batch->buffer);
|
||||
intel->batch->map = NULL;
|
||||
}
|
||||
if (intel->batch->map != intel->batch->ptr)
|
||||
intel_batchbuffer_flush(intel->batch);
|
||||
|
||||
/* lose all primitives */
|
||||
intel->prim.primitive = ~0;
|
||||
intel->prim.start_ptr = 0;
|
||||
intel->prim.flush = 0;
|
||||
|
||||
/* re-emit all state */
|
||||
intel->vtbl.lost_hardware(intel);
|
||||
intel->numClipRects = numClipRects;
|
||||
|
||||
/* force window update */
|
||||
intel->lastStamp = 0;
|
||||
|
|
@ -741,7 +742,9 @@ void LOCK_HARDWARE( struct intel_context *intel )
|
|||
BUFFER_BACK_LEFT);
|
||||
}
|
||||
|
||||
if (intel_rb && (intel_fb->vbl_waited - intel_rb->vbl_pending) > (1<<23)) {
|
||||
if (intel_rb && intel_fb->vblank_flags &&
|
||||
!(intel_fb->vblank_flags & VBLANK_FLAG_NO_IRQ) &&
|
||||
(intel_fb->vbl_waited - intel_rb->vbl_pending) > (1<<23)) {
|
||||
drmVBlank vbl;
|
||||
|
||||
vbl.request.type = DRM_VBLANK_ABSOLUTE;
|
||||
|
|
|
|||
|
|
@ -370,10 +370,16 @@ intelDrawPixels(GLcontext * ctx,
|
|||
* wise happily run the fragment program on each pixel in the image).
|
||||
*/
|
||||
struct gl_fragment_program *fpSave = ctx->FragmentProgram._Current;
|
||||
/* can't just set current frag prog to 0 here as on buffer resize
|
||||
we'll get new state checks which will segfault. Remains a hack. */
|
||||
ctx->FragmentProgram._Current = NULL;
|
||||
ctx->FragmentProgram._UseTexEnvProgram = GL_FALSE;
|
||||
ctx->FragmentProgram._Active = GL_FALSE;
|
||||
_swrast_DrawPixels( ctx, x, y, width, height, format, type,
|
||||
unpack, pixels );
|
||||
ctx->FragmentProgram._Current = fpSave;
|
||||
ctx->FragmentProgram._UseTexEnvProgram = GL_TRUE;
|
||||
ctx->FragmentProgram._Active = GL_TRUE;
|
||||
}
|
||||
else {
|
||||
_swrast_DrawPixels( ctx, x, y, width, height, format, type,
|
||||
|
|
|
|||
|
|
@ -532,12 +532,15 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel,
|
|||
GLuint dst_offset,
|
||||
GLboolean dst_tiled,
|
||||
GLshort x, GLshort y,
|
||||
GLshort w, GLshort h)
|
||||
GLshort w, GLshort h,
|
||||
GLenum logic_op)
|
||||
{
|
||||
struct xy_setup_blit setup;
|
||||
struct xy_text_immediate_blit text;
|
||||
int dwords = ((src_size + 7) & ~7) / 4;
|
||||
|
||||
assert( logic_op - GL_CLEAR >= 0 );
|
||||
assert( logic_op - GL_CLEAR < 0x10 );
|
||||
|
||||
if (w < 0 || h < 0)
|
||||
return;
|
||||
|
|
@ -561,7 +564,7 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel,
|
|||
setup.br0.length = (sizeof(setup) / sizeof(int)) - 2;
|
||||
|
||||
setup.br13.dest_pitch = dst_pitch;
|
||||
setup.br13.rop = 0xcc;
|
||||
setup.br13.rop = translate_raster_op(logic_op);
|
||||
setup.br13.color_depth = (cpp == 4) ? BR13_8888 : BR13_565;
|
||||
setup.br13.clipping_enable = 0;
|
||||
setup.br13.mono_source_transparency = 1;
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel,
|
|||
GLuint dst_offset,
|
||||
GLboolean dst_tiled,
|
||||
GLshort dst_x, GLshort dst_y,
|
||||
GLshort w, GLshort h);
|
||||
GLshort w, GLshort h,
|
||||
GLenum logic_op );
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -260,7 +260,9 @@ do_blit_bitmap( GLcontext *ctx,
|
|||
int h = MIN2(DY, box_h - py);
|
||||
int w = MIN2(DX, box_w - px);
|
||||
GLuint sz = align(align(w,8) * h, 64)/8;
|
||||
|
||||
GLenum logic_op = ctx->Color.ColorLogicOpEnabled ?
|
||||
ctx->Color.LogicOp : GL_COPY;
|
||||
|
||||
assert(sz <= sizeof(stipple));
|
||||
memset(stipple, 0, sz);
|
||||
|
||||
|
|
@ -288,7 +290,8 @@ do_blit_bitmap( GLcontext *ctx,
|
|||
dst->tiled,
|
||||
rect.x1 + px,
|
||||
rect.y2 - (py + h),
|
||||
w, h);
|
||||
w, h,
|
||||
logic_op);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ void
|
|||
nouveau_mem_free(GLcontext *ctx, nouveau_mem *mem)
|
||||
{
|
||||
nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
|
||||
drm_nouveau_mem_free_t memf;
|
||||
struct drm_nouveau_mem_free memf;
|
||||
|
||||
if (NOUVEAU_DEBUG & DEBUG_MEM) {
|
||||
fprintf(stderr, "%s: type=0x%x, offset=0x%x, size=0x%x\n",
|
||||
|
|
@ -78,8 +78,8 @@ nouveau_mem_free(GLcontext *ctx, nouveau_mem *mem)
|
|||
|
||||
if (mem->map)
|
||||
drmUnmap(mem->map, mem->size);
|
||||
memf.flags = mem->type;
|
||||
memf.region_offset = mem->offset;
|
||||
memf.flags = mem->type;
|
||||
memf.offset = mem->offset;
|
||||
drmCommandWrite(nmesa->driFd, DRM_NOUVEAU_MEM_FREE, &memf, sizeof(memf));
|
||||
FREE(mem);
|
||||
}
|
||||
|
|
@ -88,7 +88,7 @@ nouveau_mem *
|
|||
nouveau_mem_alloc(GLcontext *ctx, int type, GLuint size, GLuint align)
|
||||
{
|
||||
nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
|
||||
drm_nouveau_mem_alloc_t mema;
|
||||
struct drm_nouveau_mem_alloc mema;
|
||||
nouveau_mem *mem;
|
||||
int ret;
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ nouveau_mem_alloc(GLcontext *ctx, int type, GLuint size, GLuint align)
|
|||
FREE(mem);
|
||||
return NULL;
|
||||
}
|
||||
mem->offset = mema.region_offset;
|
||||
mem->offset = mema.offset;
|
||||
mem->type = mema.flags;
|
||||
|
||||
if (NOUVEAU_DEBUG & DEBUG_MEM) {
|
||||
|
|
@ -120,7 +120,7 @@ nouveau_mem_alloc(GLcontext *ctx, int type, GLuint size, GLuint align)
|
|||
}
|
||||
|
||||
if (type & NOUVEAU_MEM_MAPPED)
|
||||
ret = drmMap(nmesa->driFd, mem->offset, mem->size, &mem->map);
|
||||
ret = drmMap(nmesa->driFd, mema.map_handle, mem->size, &mem->map);
|
||||
if (ret) {
|
||||
mem->map = NULL;
|
||||
nouveau_mem_free(ctx, mem);
|
||||
|
|
@ -135,12 +135,7 @@ nouveau_mem_gpu_offset_get(GLcontext *ctx, nouveau_mem *mem)
|
|||
{
|
||||
nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
|
||||
|
||||
if (mem->type & NOUVEAU_MEM_FB)
|
||||
return (uint32_t)mem->offset - nmesa->vram_phys;
|
||||
else if (mem->type & NOUVEAU_MEM_AGP)
|
||||
return (uint32_t)mem->offset - nmesa->gart_phys;
|
||||
else
|
||||
return 0xDEADF00D;
|
||||
return mem->offset;
|
||||
}
|
||||
|
||||
static GLboolean
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ GLboolean nouveauCreateContext( const __GLcontextModes *glVisual,
|
|||
driParseConfigFiles (&nmesa->optionCache, &screen->optionCache,
|
||||
screen->driScreen->myNum, "nouveau");
|
||||
|
||||
nmesa->sarea = (drm_nouveau_sarea_t *)((char *)sPriv->pSAREA +
|
||||
nmesa->sarea = (struct drm_nouveau_sarea *)((char *)sPriv->pSAREA +
|
||||
screen->sarea_priv_offset);
|
||||
|
||||
/* Enable any supported extensions */
|
||||
|
|
@ -224,6 +224,8 @@ GLboolean nouveauCreateContext( const __GLcontextModes *glVisual,
|
|||
nv04TriInitFunctions( ctx );
|
||||
break;
|
||||
case NV_10:
|
||||
case NV_11:
|
||||
case NV_17:
|
||||
case NV_20:
|
||||
case NV_30:
|
||||
case NV_40:
|
||||
|
|
|
|||
|
|
@ -109,12 +109,12 @@ typedef struct nouveau_context {
|
|||
uint64_t gart_size;
|
||||
|
||||
/* Channel synchronisation */
|
||||
drm_nouveau_notifier_alloc_t *syncNotifier;
|
||||
struct drm_nouveau_notifier_alloc *syncNotifier;
|
||||
|
||||
/* ARB_occlusion_query / EXT_timer_query */
|
||||
GLuint query_object_max;
|
||||
GLboolean * query_alloc;
|
||||
drm_nouveau_notifier_alloc_t *queryNotifier;
|
||||
struct drm_nouveau_notifier_alloc *queryNotifier;
|
||||
|
||||
/* Additional hw-specific functions */
|
||||
nouveau_hw_func hw_func;
|
||||
|
|
@ -168,7 +168,7 @@ typedef struct nouveau_context {
|
|||
nouveauShader *passthrough_fp;
|
||||
|
||||
nouveauScreenRec *screen;
|
||||
drm_nouveau_sarea_t *sarea;
|
||||
struct drm_nouveau_sarea *sarea;
|
||||
|
||||
__DRIcontextPrivate *driContext; /* DRI context */
|
||||
__DRIscreenPrivate *driScreen; /* DRI screen */
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ GLboolean nouveauDRMGetParam(nouveauContextPtr nmesa,
|
|||
unsigned int param,
|
||||
uint64_t* value)
|
||||
{
|
||||
drm_nouveau_getparam_t getp;
|
||||
struct drm_nouveau_getparam getp;
|
||||
|
||||
getp.param = param;
|
||||
if (!value || drmCommandWriteRead(nmesa->driFd, DRM_NOUVEAU_GETPARAM,
|
||||
|
|
@ -56,7 +56,7 @@ GLboolean nouveauDRMSetParam(nouveauContextPtr nmesa,
|
|||
unsigned int param,
|
||||
uint64_t value)
|
||||
{
|
||||
drm_nouveau_setparam_t setp;
|
||||
struct drm_nouveau_setparam setp;
|
||||
|
||||
setp.param = param;
|
||||
setp.value = value;
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ void nouveauWaitForIdle(nouveauContextPtr nmesa)
|
|||
// here we call the fifo initialization ioctl and fill in stuff accordingly
|
||||
GLboolean nouveauFifoInit(nouveauContextPtr nmesa)
|
||||
{
|
||||
drm_nouveau_fifo_alloc_t fifo_init;
|
||||
struct drm_nouveau_fifo_alloc fifo_init;
|
||||
int i, ret;
|
||||
|
||||
#ifdef NOUVEAU_RING_DEBUG
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ void nouveauGetLock( nouveauContextPtr nmesa, GLuint flags )
|
|||
{
|
||||
__DRIdrawablePrivate *dPriv = nmesa->driDrawable;
|
||||
__DRIscreenPrivate *sPriv = nmesa->driScreen;
|
||||
drm_nouveau_sarea_t *sarea = nmesa->sarea;
|
||||
struct drm_nouveau_sarea *sarea = nmesa->sarea;
|
||||
|
||||
drmGetLock( nmesa->driFd, nmesa->hHWContext, flags );
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
GLboolean nouveauCreateContextObject(nouveauContextPtr nmesa,
|
||||
uint32_t handle, int class)
|
||||
{
|
||||
drm_nouveau_grobj_alloc_t cto;
|
||||
struct drm_nouveau_grobj_alloc cto;
|
||||
int ret;
|
||||
|
||||
cto.channel = nmesa->fifo.channel;
|
||||
|
|
@ -34,10 +34,13 @@ void nouveauObjectInit(nouveauContextPtr nmesa)
|
|||
nouveauCreateContextObject(nmesa, Nv3D, nmesa->screen->card->class_3d);
|
||||
if (nmesa->screen->card->type>=NV_10) {
|
||||
nouveauCreateContextObject(nmesa, NvCtxSurf2D, NV10_CONTEXT_SURFACES_2D);
|
||||
nouveauCreateContextObject(nmesa, NvImageBlit, NV10_IMAGE_BLIT);
|
||||
} else {
|
||||
nouveauCreateContextObject(nmesa, NvCtxSurf2D, NV04_CONTEXT_SURFACES_2D);
|
||||
nouveauCreateContextObject(nmesa, NvCtxSurf3D, NV04_CONTEXT_SURFACES_3D);
|
||||
}
|
||||
if (nmesa->screen->card->type>=NV_11) {
|
||||
nouveauCreateContextObject(nmesa, NvImageBlit, NV10_IMAGE_BLIT);
|
||||
} else {
|
||||
nouveauCreateContextObject(nmesa, NvImageBlit, NV_IMAGE_BLIT);
|
||||
}
|
||||
nouveauCreateContextObject(nmesa, NvMemFormat, NV_MEMORY_TO_MEMORY_FORMAT);
|
||||
|
|
|
|||
|
|
@ -328,7 +328,7 @@ void * __driCreateNewScreen_20050727( __DRInativeDisplay *dpy, int scrn, __DRIsc
|
|||
static const __DRIversion ddx_expected = { 1, 2, 0 };
|
||||
static const __DRIversion dri_expected = { 4, 0, 0 };
|
||||
static const __DRIversion drm_expected = { 0, 0, NOUVEAU_DRM_HEADER_PATCHLEVEL };
|
||||
#if NOUVEAU_DRM_HEADER_PATCHLEVEL != 7
|
||||
#if NOUVEAU_DRM_HEADER_PATCHLEVEL != 9
|
||||
#error nouveau_drm.h version doesn't match expected version
|
||||
#endif
|
||||
dri_interface = interface;
|
||||
|
|
|
|||
|
|
@ -162,6 +162,8 @@ void nouveauDDInitState(nouveauContextPtr nmesa)
|
|||
nv04InitStateFuncs(nmesa->glCtx, &nmesa->glCtx->Driver);
|
||||
break;
|
||||
case NV_10:
|
||||
case NV_11:
|
||||
case NV_17:
|
||||
nv10InitStateFuncs(nmesa->glCtx, &nmesa->glCtx->Driver);
|
||||
break;
|
||||
case NV_20:
|
||||
|
|
|
|||
|
|
@ -39,11 +39,11 @@
|
|||
nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx); \
|
||||
volatile uint32_t *__v = (void*)nmesa->notifier_block + notifier->offset
|
||||
|
||||
drm_nouveau_notifier_alloc_t *
|
||||
struct drm_nouveau_notifier_alloc *
|
||||
nouveau_notifier_new(GLcontext *ctx, GLuint handle, GLuint count)
|
||||
{
|
||||
nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
|
||||
drm_nouveau_notifier_alloc_t *notifier;
|
||||
struct drm_nouveau_notifier_alloc *notifier;
|
||||
int ret;
|
||||
|
||||
#ifdef NOUVEAU_RING_DEBUG
|
||||
|
|
@ -69,14 +69,16 @@ nouveau_notifier_new(GLcontext *ctx, GLuint handle, GLuint count)
|
|||
}
|
||||
|
||||
void
|
||||
nouveau_notifier_destroy(GLcontext *ctx, drm_nouveau_notifier_alloc_t *notifier)
|
||||
nouveau_notifier_destroy(GLcontext *ctx,
|
||||
struct drm_nouveau_notifier_alloc *notifier)
|
||||
{
|
||||
/*XXX: free notifier object.. */
|
||||
FREE(notifier);
|
||||
}
|
||||
|
||||
void
|
||||
nouveau_notifier_reset(GLcontext *ctx, drm_nouveau_notifier_alloc_t *notifier,
|
||||
nouveau_notifier_reset(GLcontext *ctx,
|
||||
struct drm_nouveau_notifier_alloc *notifier,
|
||||
GLuint id)
|
||||
{
|
||||
NOTIFIER(n);
|
||||
|
|
@ -93,7 +95,8 @@ nouveau_notifier_reset(GLcontext *ctx, drm_nouveau_notifier_alloc_t *notifier,
|
|||
}
|
||||
|
||||
GLuint
|
||||
nouveau_notifier_status(GLcontext *ctx, drm_nouveau_notifier_alloc_t *notifier,
|
||||
nouveau_notifier_status(GLcontext *ctx,
|
||||
struct drm_nouveau_notifier_alloc *notifier,
|
||||
GLuint id)
|
||||
{
|
||||
NOTIFIER(n);
|
||||
|
|
@ -103,7 +106,8 @@ nouveau_notifier_status(GLcontext *ctx, drm_nouveau_notifier_alloc_t *notifier,
|
|||
|
||||
GLuint
|
||||
nouveau_notifier_return_val(GLcontext *ctx,
|
||||
drm_nouveau_notifier_alloc_t *notifier, GLuint id)
|
||||
struct drm_nouveau_notifier_alloc *notifier,
|
||||
GLuint id)
|
||||
{
|
||||
NOTIFIER(n);
|
||||
|
||||
|
|
@ -112,8 +116,8 @@ nouveau_notifier_return_val(GLcontext *ctx,
|
|||
|
||||
GLboolean
|
||||
nouveau_notifier_wait_status(GLcontext *ctx,
|
||||
drm_nouveau_notifier_alloc_t *notifier, GLuint id,
|
||||
GLuint status, GLuint timeout)
|
||||
struct drm_nouveau_notifier_alloc *notifier,
|
||||
GLuint id, GLuint status, GLuint timeout)
|
||||
{
|
||||
NOTIFIER(n);
|
||||
unsigned int time = 0;
|
||||
|
|
@ -146,7 +150,8 @@ nouveau_notifier_wait_status(GLcontext *ctx,
|
|||
|
||||
void
|
||||
nouveau_notifier_wait_nop(GLcontext *ctx,
|
||||
drm_nouveau_notifier_alloc_t *notifier, GLuint subc)
|
||||
struct drm_nouveau_notifier_alloc *notifier,
|
||||
GLuint subc)
|
||||
{
|
||||
NOTIFIER(n);
|
||||
GLboolean ret;
|
||||
|
|
|
|||
|
|
@ -47,22 +47,24 @@
|
|||
#define NV_NOTIFY 0x00000104
|
||||
#define NV_NOTIFY_STYLE_WRITE_ONLY 0
|
||||
|
||||
extern drm_nouveau_notifier_alloc_t *
|
||||
extern struct drm_nouveau_notifier_alloc *
|
||||
nouveau_notifier_new(GLcontext *, GLuint handle, GLuint count);
|
||||
extern void
|
||||
nouveau_notifier_destroy(GLcontext *, drm_nouveau_notifier_alloc_t *);
|
||||
nouveau_notifier_destroy(GLcontext *, struct drm_nouveau_notifier_alloc *);
|
||||
extern void
|
||||
nouveau_notifier_reset(GLcontext *, drm_nouveau_notifier_alloc_t *, GLuint id);
|
||||
nouveau_notifier_reset(GLcontext *, struct drm_nouveau_notifier_alloc *,
|
||||
GLuint id);
|
||||
extern GLuint
|
||||
nouveau_notifier_status(GLcontext *, drm_nouveau_notifier_alloc_t *, GLuint id);
|
||||
nouveau_notifier_status(GLcontext *, struct drm_nouveau_notifier_alloc *,
|
||||
GLuint id);
|
||||
extern GLuint
|
||||
nouveau_notifier_return_val(GLcontext *, drm_nouveau_notifier_alloc_t *,
|
||||
nouveau_notifier_return_val(GLcontext *, struct drm_nouveau_notifier_alloc *,
|
||||
GLuint id);
|
||||
extern GLboolean
|
||||
nouveau_notifier_wait_status(GLcontext *, drm_nouveau_notifier_alloc_t *,
|
||||
nouveau_notifier_wait_status(GLcontext *, struct drm_nouveau_notifier_alloc *,
|
||||
GLuint id, GLuint status, GLuint timeout);
|
||||
extern void
|
||||
nouveau_notifier_wait_nop(GLcontext *ctx, drm_nouveau_notifier_alloc_t *,
|
||||
nouveau_notifier_wait_nop(GLcontext *ctx, struct drm_nouveau_notifier_alloc *,
|
||||
GLuint subc);
|
||||
|
||||
extern GLboolean nouveauSyncInitFuncs(GLcontext *ctx);
|
||||
|
|
|
|||
|
|
@ -697,8 +697,7 @@ static GLboolean nv10InitCard(nouveauContextPtr nmesa)
|
|||
BEGIN_RING_SIZE(NvSub3D, 0x03f4, 1);
|
||||
OUT_RING(0);
|
||||
|
||||
/* not for nv10, only for >= nv11 */
|
||||
if ((nmesa->screen->card->id>>4) >= 0x11) {
|
||||
if (nmesa->screen->card->type >= NV_11) {
|
||||
BEGIN_RING_SIZE(NvSub3D, 0x120, 3);
|
||||
OUT_RING(0);
|
||||
OUT_RING(1);
|
||||
|
|
@ -739,11 +738,11 @@ static GLboolean nv10BindBuffers(nouveauContextPtr nmesa, int num_color,
|
|||
OUT_RING_CACHE(depth ? depth->offset : color[0]->offset);
|
||||
|
||||
/* Always set to bottom left of buffer */
|
||||
BEGIN_RING_CACHE(NvSub3D, NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_X, 4);
|
||||
/*BEGIN_RING_CACHE(NvSub3D, NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_X, 4);
|
||||
OUT_RING_CACHEf (0.0);
|
||||
OUT_RING_CACHEf ((GLfloat) h);
|
||||
OUT_RING_CACHEf (0.0);
|
||||
OUT_RING_CACHEf (0.0);
|
||||
OUT_RING_CACHEf (0.0);*/
|
||||
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ static void nv10ResetLineStipple( GLcontext *ctx );
|
|||
|
||||
static inline void nv10StartPrimitive(struct nouveau_context* nmesa,uint32_t primitive,uint32_t size)
|
||||
{
|
||||
if (nmesa->screen->card->type==NV_10)
|
||||
if ((nmesa->screen->card->type>=NV_10) && (nmesa->screen->card->type<=NV_17))
|
||||
BEGIN_RING_SIZE(NvSub3D,NV10_TCL_PRIMITIVE_3D_BEGIN_END,1);
|
||||
else if (nmesa->screen->card->type==NV_20)
|
||||
BEGIN_RING_SIZE(NvSub3D,NV20_TCL_PRIMITIVE_3D_BEGIN_END,1);
|
||||
|
|
@ -66,7 +66,7 @@ static inline void nv10StartPrimitive(struct nouveau_context* nmesa,uint32_t pri
|
|||
BEGIN_RING_SIZE(NvSub3D,NV30_TCL_PRIMITIVE_3D_BEGIN_END,1);
|
||||
OUT_RING(primitive);
|
||||
|
||||
if (nmesa->screen->card->type==NV_10)
|
||||
if ((nmesa->screen->card->type>=NV_10) && (nmesa->screen->card->type<=NV_17))
|
||||
BEGIN_RING_SIZE(NvSub3D,NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_DATA|NONINC_METHOD,size);
|
||||
else if (nmesa->screen->card->type==NV_20)
|
||||
BEGIN_RING_SIZE(NvSub3D,NV20_TCL_PRIMITIVE_3D_VERTEX_DATA|NONINC_METHOD,size);
|
||||
|
|
@ -76,7 +76,7 @@ static inline void nv10StartPrimitive(struct nouveau_context* nmesa,uint32_t pri
|
|||
|
||||
inline void nv10FinishPrimitive(struct nouveau_context *nmesa)
|
||||
{
|
||||
if (nmesa->screen->card->type==NV_10)
|
||||
if ((nmesa->screen->card->type>=NV_10) && (nmesa->screen->card->type<=NV_17))
|
||||
BEGIN_RING_SIZE(NvSub3D,NV10_TCL_PRIMITIVE_3D_BEGIN_END,1);
|
||||
else if (nmesa->screen->card->type==NV_20)
|
||||
BEGIN_RING_SIZE(NvSub3D,NV20_TCL_PRIMITIVE_3D_BEGIN_END,1);
|
||||
|
|
@ -454,7 +454,7 @@ static inline void nv10OutputVertexFormat(struct nouveau_context* nmesa)
|
|||
/*
|
||||
* Tell the hardware about the vertex format
|
||||
*/
|
||||
if (nmesa->screen->card->type==NV_10) {
|
||||
if ((nmesa->screen->card->type>=NV_10) && (nmesa->screen->card->type<=NV_17)) {
|
||||
int size;
|
||||
|
||||
#define NV_VERTEX_ATTRIBUTE_TYPE_FLOAT 2
|
||||
|
|
|
|||
|
|
@ -568,10 +568,10 @@ static void nv20Scissor(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
|
|||
y += nmesa->drawY;
|
||||
}
|
||||
|
||||
BEGIN_RING_CACHE(NvSub3D, NV20_TCL_PRIMITIVE_3D_SCISSOR_X2_X1, 1);
|
||||
/*BEGIN_RING_CACHE(NvSub3D, NV20_TCL_PRIMITIVE_3D_SCISSOR_X2_X1, 1);
|
||||
OUT_RING_CACHE((w << 16) | x );
|
||||
BEGIN_RING_CACHE(NvSub3D, NV20_TCL_PRIMITIVE_3D_SCISSOR_Y2_Y1, 1);
|
||||
OUT_RING_CACHE((h << 16) | y );
|
||||
OUT_RING_CACHE((h << 16) | y );*/
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -764,11 +764,11 @@ static GLboolean nv20BindBuffers(nouveauContextPtr nmesa, int num_color,
|
|||
}
|
||||
|
||||
/* Always set to bottom left of buffer */
|
||||
BEGIN_RING_CACHE(NvSub3D, NV20_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_X, 4);
|
||||
/*BEGIN_RING_CACHE(NvSub3D, NV20_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_X, 4);
|
||||
OUT_RING_CACHEf (0.0);
|
||||
OUT_RING_CACHEf ((GLfloat) h);
|
||||
OUT_RING_CACHEf (0.0);
|
||||
OUT_RING_CACHEf (0.0);
|
||||
OUT_RING_CACHEf (0.0);*/
|
||||
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -318,15 +318,17 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual,
|
|||
_tnl_allow_vertex_fog(ctx, GL_TRUE);
|
||||
|
||||
/* currently bogus data */
|
||||
ctx->Const.VertexProgram.MaxInstructions = VSF_MAX_FRAGMENT_LENGTH / 4;
|
||||
ctx->Const.VertexProgram.MaxNativeInstructions =
|
||||
VSF_MAX_FRAGMENT_LENGTH / 4;
|
||||
ctx->Const.VertexProgram.MaxNativeAttribs = 16; /* r420 */
|
||||
ctx->Const.VertexProgram.MaxTemps = 32;
|
||||
ctx->Const.VertexProgram.MaxNativeTemps =
|
||||
/*VSF_MAX_FRAGMENT_TEMPS */ 32;
|
||||
ctx->Const.VertexProgram.MaxNativeParameters = 256; /* r420 */
|
||||
ctx->Const.VertexProgram.MaxNativeAddressRegs = 1;
|
||||
if (screen->chip_flags & RADEON_CHIPSET_TCL) {
|
||||
ctx->Const.VertexProgram.MaxInstructions = VSF_MAX_FRAGMENT_LENGTH / 4;
|
||||
ctx->Const.VertexProgram.MaxNativeInstructions =
|
||||
VSF_MAX_FRAGMENT_LENGTH / 4;
|
||||
ctx->Const.VertexProgram.MaxNativeAttribs = 16; /* r420 */
|
||||
ctx->Const.VertexProgram.MaxTemps = 32;
|
||||
ctx->Const.VertexProgram.MaxNativeTemps =
|
||||
/*VSF_MAX_FRAGMENT_TEMPS */ 32;
|
||||
ctx->Const.VertexProgram.MaxNativeParameters = 256; /* r420 */
|
||||
ctx->Const.VertexProgram.MaxNativeAddressRegs = 1;
|
||||
}
|
||||
|
||||
ctx->Const.FragmentProgram.MaxNativeTemps = PFS_NUM_TEMP_REGS;
|
||||
ctx->Const.FragmentProgram.MaxNativeAttribs = 11; /* copy i915... */
|
||||
|
|
@ -364,7 +366,8 @@ GLboolean r300CreateContext(const __GLcontextModes * glVisual,
|
|||
radeonInitSpanFuncs(ctx);
|
||||
r300InitCmdBuf(r300);
|
||||
r300InitState(r300);
|
||||
r300InitSwtcl(ctx);
|
||||
if (!(screen->chip_flags & RADEON_CHIPSET_TCL))
|
||||
r300InitSwtcl(ctx);
|
||||
|
||||
TNL_CONTEXT(ctx)->Driver.RunPipeline = _tnl_run_pipeline;
|
||||
|
||||
|
|
|
|||
|
|
@ -568,19 +568,10 @@ struct r300_vertex_shader_fragment {
|
|||
union {
|
||||
GLuint d[VSF_MAX_FRAGMENT_LENGTH];
|
||||
float f[VSF_MAX_FRAGMENT_LENGTH];
|
||||
VERTEX_SHADER_INSTRUCTION i[VSF_MAX_FRAGMENT_LENGTH / 4];
|
||||
struct r300_vertprog_instruction i[VSF_MAX_FRAGMENT_LENGTH / 4];
|
||||
} body;
|
||||
};
|
||||
|
||||
#define VSF_DEST_PROGRAM 0x0
|
||||
#define VSF_DEST_MATRIX0 0x200
|
||||
#define VSF_DEST_MATRIX1 0x204
|
||||
#define VSF_DEST_MATRIX2 0x208
|
||||
#define VSF_DEST_VECTOR0 0x20c
|
||||
#define VSF_DEST_VECTOR1 0x20d
|
||||
#define VSF_DEST_UNKNOWN1 0x400
|
||||
#define VSF_DEST_UNKNOWN2 0x406
|
||||
|
||||
struct r300_vertex_shader_state {
|
||||
struct r300_vertex_shader_fragment program;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -299,13 +299,14 @@ GLuint r300VAPOutputCntl0(GLcontext * ctx, GLuint OutputsWritten)
|
|||
if (OutputsWritten & (1 << VERT_RESULT_COL1))
|
||||
ret |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_1_PRESENT;
|
||||
|
||||
if (OutputsWritten & (1 << VERT_RESULT_BFC0)
|
||||
|| OutputsWritten & (1 << VERT_RESULT_BFC1))
|
||||
ret |=
|
||||
R300_VAP_OUTPUT_VTX_FMT_0__COLOR_1_PRESENT |
|
||||
R300_VAP_OUTPUT_VTX_FMT_0__COLOR_2_PRESENT |
|
||||
R300_VAP_OUTPUT_VTX_FMT_0__COLOR_3_PRESENT;
|
||||
|
||||
#if 0
|
||||
if (OutputsWritten & (1 << VERT_RESULT_BFC0))
|
||||
ret |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_2_PRESENT;
|
||||
|
||||
if (OutputsWritten & (1 << VERT_RESULT_BFC1))
|
||||
ret |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_3_PRESENT;
|
||||
|
||||
if (OutputsWritten & (1 << VERT_RESULT_FOGC)) ;
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -282,9 +282,32 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
*/
|
||||
#define R300_VAP_PVS_UPLOAD_ADDRESS 0x2200
|
||||
# define R300_PVS_UPLOAD_PROGRAM 0x00000000
|
||||
/* gap */
|
||||
# define R300_PVS_UPLOAD_PARAMETERS 0x00000200
|
||||
/* gap */
|
||||
# define R300_PVS_UPLOAD_CLIP_PLANE0 0x00000400
|
||||
# define R300_PVS_UPLOAD_CLIP_PLANE1 0x00000401
|
||||
# define R300_PVS_UPLOAD_CLIP_PLANE2 0x00000402
|
||||
# define R300_PVS_UPLOAD_CLIP_PLANE3 0x00000403
|
||||
# define R300_PVS_UPLOAD_CLIP_PLANE4 0x00000404
|
||||
# define R300_PVS_UPLOAD_CLIP_PLANE5 0x00000405
|
||||
# define R300_PVS_UPLOAD_POINTSIZE 0x00000406
|
||||
|
||||
/*
|
||||
* These are obsolete defines form r300_context.h, but they might give some
|
||||
* clues when investigating the addresses further...
|
||||
*/
|
||||
#if 0
|
||||
#define VSF_DEST_PROGRAM 0x0
|
||||
#define VSF_DEST_MATRIX0 0x200
|
||||
#define VSF_DEST_MATRIX1 0x204
|
||||
#define VSF_DEST_MATRIX2 0x208
|
||||
#define VSF_DEST_VECTOR0 0x20c
|
||||
#define VSF_DEST_VECTOR1 0x20d
|
||||
#define VSF_DEST_UNKNOWN1 0x400
|
||||
#define VSF_DEST_UNKNOWN2 0x406
|
||||
#endif
|
||||
|
||||
/* gap */
|
||||
|
||||
#define R300_VAP_PVS_UPLOAD_DATA 0x2208
|
||||
|
|
|
|||
|
|
@ -82,6 +82,8 @@ static void r300BlendColor(GLcontext * ctx, const GLfloat cf[4])
|
|||
|
||||
rmesa->hw.blend_color.cmd[1] = PACK_COLOR_8888(color[3], color[0],
|
||||
color[1], color[2]);
|
||||
rmesa->hw.blend_color.cmd[2] = 0;
|
||||
rmesa->hw.blend_color.cmd[3] = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -317,20 +319,34 @@ static void r300UpdateCulling(GLcontext * ctx)
|
|||
r300ContextPtr r300 = R300_CONTEXT(ctx);
|
||||
uint32_t val = 0;
|
||||
|
||||
R300_STATECHANGE(r300, cul);
|
||||
if (ctx->Polygon.CullFlag) {
|
||||
if (ctx->Polygon.CullFaceMode == GL_FRONT_AND_BACK)
|
||||
val = R300_CULL_FRONT | R300_CULL_BACK;
|
||||
else if (ctx->Polygon.CullFaceMode == GL_FRONT)
|
||||
switch (ctx->Polygon.CullFaceMode) {
|
||||
case GL_FRONT:
|
||||
val = R300_CULL_FRONT;
|
||||
else
|
||||
break;
|
||||
case GL_BACK:
|
||||
val = R300_CULL_BACK;
|
||||
|
||||
if (ctx->Polygon.FrontFace == GL_CW)
|
||||
val |= R300_FRONT_FACE_CW;
|
||||
else
|
||||
val |= R300_FRONT_FACE_CCW;
|
||||
break;
|
||||
case GL_FRONT_AND_BACK:
|
||||
val = R300_CULL_FRONT | R300_CULL_BACK;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (ctx->Polygon.FrontFace) {
|
||||
case GL_CW:
|
||||
val |= R300_FRONT_FACE_CW;
|
||||
break;
|
||||
case GL_CCW:
|
||||
val |= R300_FRONT_FACE_CCW;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
R300_STATECHANGE(r300, cul);
|
||||
r300->hw.cul.cmd[R300_CUL_CULL] = val;
|
||||
}
|
||||
|
||||
|
|
@ -344,6 +360,20 @@ static void r300SetEarlyZState(GLcontext * ctx)
|
|||
r300ContextPtr r300 = R300_CONTEXT(ctx);
|
||||
|
||||
R300_STATECHANGE(r300, zstencil_format);
|
||||
switch (ctx->Visual.depthBits) {
|
||||
case 16:
|
||||
r300->hw.zstencil_format.cmd[1] = R300_DEPTH_FORMAT_16BIT_INT_Z;
|
||||
break;
|
||||
case 24:
|
||||
r300->hw.zstencil_format.cmd[1] = R300_DEPTH_FORMAT_24BIT_INT_Z;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Error: Unsupported depth %d... exiting\n", ctx->Visual.depthBits);
|
||||
_mesa_exit(-1);
|
||||
}
|
||||
|
||||
// r300->hw.zstencil_format.cmd[1] |= R300_DEPTH_FORMAT_UNK32;
|
||||
|
||||
if (ctx->Color.AlphaEnabled && ctx->Color.AlphaFunc != GL_ALWAYS)
|
||||
/* disable early Z */
|
||||
r300->hw.zstencil_format.cmd[2] = R300_EARLY_Z_DISABLE;
|
||||
|
|
@ -355,6 +385,9 @@ static void r300SetEarlyZState(GLcontext * ctx)
|
|||
/* disable early Z */
|
||||
r300->hw.zstencil_format.cmd[2] = R300_EARLY_Z_DISABLE;
|
||||
}
|
||||
|
||||
r300->hw.zstencil_format.cmd[3] = 0x00000003;
|
||||
r300->hw.zstencil_format.cmd[4] = 0x00000000;
|
||||
}
|
||||
|
||||
static void r300SetAlphaState(GLcontext * ctx)
|
||||
|
|
@ -403,6 +436,7 @@ static void r300SetAlphaState(GLcontext * ctx)
|
|||
|
||||
R300_STATECHANGE(r300, at);
|
||||
r300->hw.at.cmd[R300_AT_ALPHA_TEST] = pp_misc;
|
||||
r300->hw.at.cmd[R300_AT_UNKNOWN] = 0;
|
||||
|
||||
r300SetEarlyZState(ctx);
|
||||
}
|
||||
|
|
@ -513,6 +547,9 @@ static void r300UpdatePolygonMode(GLcontext * ctx)
|
|||
R300_STATECHANGE(r300, polygon_mode);
|
||||
r300->hw.polygon_mode.cmd[1] = hw_mode;
|
||||
}
|
||||
|
||||
r300->hw.polygon_mode.cmd[2] = 0x00000001;
|
||||
r300->hw.polygon_mode.cmd[3] = 0x00000000;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -762,6 +799,7 @@ static void r300ShadeModel(GLcontext * ctx, GLenum mode)
|
|||
r300ContextPtr rmesa = R300_CONTEXT(ctx);
|
||||
|
||||
R300_STATECHANGE(rmesa, shade);
|
||||
rmesa->hw.shade.cmd[1] = 0x00000002;
|
||||
switch (mode) {
|
||||
case GL_FLAT:
|
||||
rmesa->hw.shade.cmd[2] = R300_RE_SHADE_MODEL_FLAT;
|
||||
|
|
@ -772,6 +810,8 @@ static void r300ShadeModel(GLcontext * ctx, GLenum mode)
|
|||
default:
|
||||
return;
|
||||
}
|
||||
rmesa->hw.shade.cmd[3] = 0x00000000;
|
||||
rmesa->hw.shade.cmd[4] = 0x00000000;
|
||||
}
|
||||
|
||||
static void r300StencilFuncSeparate(GLcontext * ctx, GLenum face,
|
||||
|
|
@ -1526,7 +1566,7 @@ static void r300SetupDefaultVertexProgram(r300ContextPtr rmesa)
|
|||
|
||||
for (i = VERT_ATTRIB_POS; i < VERT_ATTRIB_MAX; i++) {
|
||||
if (rmesa->state.sw_tcl_inputs[i] != -1) {
|
||||
prog->program.body.i[program_end].op = EASY_VSF_OP(MUL, o_reg++, ALL, RESULT);
|
||||
prog->program.body.i[program_end].opcode = EASY_VSF_OP(MUL, o_reg++, ALL, RESULT);
|
||||
prog->program.body.i[program_end].src[0] = VSF_REG(rmesa->state.sw_tcl_inputs[i]);
|
||||
prog->program.body.i[program_end].src[1] = VSF_ATTR_UNITY(rmesa->state.sw_tcl_inputs[i]);
|
||||
prog->program.body.i[program_end].src[2] = VSF_UNITY(rmesa->state.sw_tcl_inputs[i]);
|
||||
|
|
@ -1536,7 +1576,7 @@ static void r300SetupDefaultVertexProgram(r300ContextPtr rmesa)
|
|||
|
||||
prog->program.length = program_end * 4;
|
||||
|
||||
r300SetupVertexProgramFragment(rmesa, VSF_DEST_PROGRAM, &(prog->program));
|
||||
r300SetupVertexProgramFragment(rmesa, R300_PVS_UPLOAD_PROGRAM, &(prog->program));
|
||||
inst_count = (prog->program.length / 4) - 1;
|
||||
|
||||
R300_STATECHANGE(rmesa, pvs);
|
||||
|
|
@ -1570,7 +1610,7 @@ static void r300SetupRealVertexProgram(r300ContextPtr rmesa)
|
|||
bump_vpu_count(rmesa->hw.vpp.cmd, param_count);
|
||||
param_count /= 4;
|
||||
|
||||
r300SetupVertexProgramFragment(rmesa, VSF_DEST_PROGRAM, &(prog->program));
|
||||
r300SetupVertexProgramFragment(rmesa, R300_PVS_UPLOAD_PROGRAM, &(prog->program));
|
||||
inst_count = (prog->program.length / 4) - 1;
|
||||
|
||||
R300_STATECHANGE(rmesa, pvs);
|
||||
|
|
@ -1848,15 +1888,10 @@ static void r300ResetHwState(r300ContextPtr r300)
|
|||
r300->hw.unk4260.cmd[2] = r300PackFloat32(0.0);
|
||||
r300->hw.unk4260.cmd[3] = r300PackFloat32(1.0);
|
||||
|
||||
r300->hw.shade.cmd[1] = 0x00000002;
|
||||
r300ShadeModel(ctx, ctx->Light.ShadeModel);
|
||||
r300->hw.shade.cmd[3] = 0x00000000;
|
||||
r300->hw.shade.cmd[4] = 0x00000000;
|
||||
|
||||
r300PolygonMode(ctx, GL_FRONT, ctx->Polygon.FrontMode);
|
||||
r300PolygonMode(ctx, GL_BACK, ctx->Polygon.BackMode);
|
||||
r300->hw.polygon_mode.cmd[2] = 0x00000001;
|
||||
r300->hw.polygon_mode.cmd[3] = 0x00000000;
|
||||
r300->hw.zbias_cntl.cmd[1] = 0x00000000;
|
||||
|
||||
r300PolygonOffset(ctx, ctx->Polygon.OffsetFactor,
|
||||
|
|
@ -1887,14 +1922,11 @@ static void r300ResetHwState(r300ContextPtr r300)
|
|||
r300Fogfv(ctx, GL_FOG_COLOR, ctx->Fog.Color);
|
||||
r300Fogfv(ctx, GL_FOG_COORDINATE_SOURCE_EXT, NULL);
|
||||
|
||||
r300->hw.at.cmd[R300_AT_UNKNOWN] = 0;
|
||||
r300->hw.unk4BD8.cmd[1] = 0;
|
||||
|
||||
r300->hw.unk4E00.cmd[1] = 0;
|
||||
|
||||
r300BlendColor(ctx, ctx->Color.BlendColor);
|
||||
r300->hw.blend_color.cmd[2] = 0;
|
||||
r300->hw.blend_color.cmd[3] = 0;
|
||||
|
||||
/* Again, r300ClearBuffer uses this */
|
||||
r300->hw.cb.cmd[R300_CB_OFFSET] =
|
||||
|
|
@ -1925,25 +1957,6 @@ static void r300ResetHwState(r300ContextPtr r300)
|
|||
r300->hw.unk4EA0.cmd[1] = 0x00000000;
|
||||
r300->hw.unk4EA0.cmd[2] = 0xffffffff;
|
||||
|
||||
switch (ctx->Visual.depthBits) {
|
||||
case 16:
|
||||
r300->hw.zstencil_format.cmd[1] = R300_DEPTH_FORMAT_16BIT_INT_Z;
|
||||
break;
|
||||
case 24:
|
||||
r300->hw.zstencil_format.cmd[1] = R300_DEPTH_FORMAT_24BIT_INT_Z;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Error: Unsupported depth %d... exiting\n",
|
||||
ctx->Visual.depthBits);
|
||||
_mesa_exit(-1);
|
||||
|
||||
}
|
||||
/* z compress? */
|
||||
//r300->hw.zstencil_format.cmd[1] |= R300_DEPTH_FORMAT_UNK32;
|
||||
|
||||
r300->hw.zstencil_format.cmd[3] = 0x00000003;
|
||||
r300->hw.zstencil_format.cmd[4] = 0x00000000;
|
||||
|
||||
r300->hw.zb.cmd[R300_ZB_OFFSET] =
|
||||
r300->radeon.radeonScreen->depthOffset +
|
||||
r300->radeon.radeonScreen->fbLocation;
|
||||
|
|
|
|||
|
|
@ -668,6 +668,11 @@ void r300InitSwtcl(GLcontext *ctx)
|
|||
|
||||
_tnl_need_projected_coords( ctx, GL_FALSE );
|
||||
r300ChooseRenderState(ctx);
|
||||
|
||||
_mesa_validate_all_lighting_tables( ctx );
|
||||
|
||||
tnl->Driver.NotifyMaterialChange =
|
||||
_mesa_validate_all_lighting_tables;
|
||||
}
|
||||
|
||||
void r300DestroySwtcl(GLcontext *ctx)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -3,10 +3,10 @@
|
|||
|
||||
#include "r300_reg.h"
|
||||
|
||||
typedef struct {
|
||||
GLuint op;
|
||||
struct r300_vertprog_instruction {
|
||||
GLuint opcode;
|
||||
GLuint src[3];
|
||||
} VERTEX_SHADER_INSTRUCTION;
|
||||
};
|
||||
|
||||
#define VSF_FLAG_X 1
|
||||
#define VSF_FLAG_Y 2
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 6.5.1
|
||||
* Version: 7.1
|
||||
*
|
||||
* Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -63,6 +63,9 @@
|
|||
#include "drivers/common/driverfuncs.h"
|
||||
|
||||
|
||||
/**
|
||||
* Pixel formats we support:
|
||||
*/
|
||||
#define PF_B8G8R8 1
|
||||
#define PF_B8G8R8A8 2
|
||||
#define PF_B5G6R5 3
|
||||
|
|
@ -70,7 +73,7 @@
|
|||
#define PF_CI8 5
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* Derived from Mesa's GLvisual class.
|
||||
*/
|
||||
struct GLFBDevVisualRec {
|
||||
|
|
@ -80,7 +83,7 @@ struct GLFBDevVisualRec {
|
|||
int pixelFormat;
|
||||
};
|
||||
|
||||
/*
|
||||
/**
|
||||
* Derived from Mesa's GLframebuffer class.
|
||||
*/
|
||||
struct GLFBDevBufferRec {
|
||||
|
|
@ -92,7 +95,7 @@ struct GLFBDevBufferRec {
|
|||
GLuint bytesPerPixel;
|
||||
};
|
||||
|
||||
/*
|
||||
/**
|
||||
* Derived from Mesa's GLcontext class.
|
||||
*/
|
||||
struct GLFBDevContextRec {
|
||||
|
|
@ -103,7 +106,7 @@ struct GLFBDevContextRec {
|
|||
GLFBDevBufferPtr curBuffer;
|
||||
};
|
||||
|
||||
/*
|
||||
/**
|
||||
* Derived from Mesa's gl_renderbuffer class.
|
||||
*/
|
||||
struct GLFBDevRenderbufferRec {
|
||||
|
|
@ -114,11 +117,6 @@ struct GLFBDevRenderbufferRec {
|
|||
};
|
||||
|
||||
|
||||
|
||||
#define GLFBDEV_CONTEXT(CTX) ((GLFBDevContextPtr) (CTX))
|
||||
#define GLFBDEV_BUFFER(BUF) ((GLFBDevBufferPtr) (BUF))
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* Internal device driver functions */
|
||||
/**********************************************************************/
|
||||
|
|
@ -151,7 +149,7 @@ update_state( GLcontext *ctx, GLuint new_state )
|
|||
static void
|
||||
get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
|
||||
{
|
||||
const GLFBDevBufferPtr fbdevbuffer = GLFBDEV_BUFFER(buffer);
|
||||
const GLFBDevBufferPtr fbdevbuffer = (GLFBDevBufferPtr) buffer;
|
||||
*width = fbdevbuffer->var.xres;
|
||||
*height = fbdevbuffer->var.yres;
|
||||
}
|
||||
|
|
@ -389,8 +387,8 @@ glFBDevCreateVisual( const struct fb_fix_screeninfo *fixInfo,
|
|||
/* ignored for now */
|
||||
break;
|
||||
case GLFBDEV_MULTISAMPLE:
|
||||
numSamples = attrib[1];
|
||||
attrib++;
|
||||
numSamples = attrib[1];
|
||||
attrib++;
|
||||
break;
|
||||
default:
|
||||
/* unexpected token */
|
||||
|
|
@ -406,36 +404,36 @@ glFBDevCreateVisual( const struct fb_fix_screeninfo *fixInfo,
|
|||
alphaBits = varInfo->transp.length;
|
||||
|
||||
if (fixInfo->visual == FB_VISUAL_TRUECOLOR ||
|
||||
fixInfo->visual == FB_VISUAL_DIRECTCOLOR) {
|
||||
if(varInfo->bits_per_pixel == 24
|
||||
&& varInfo->red.offset == 16
|
||||
&& varInfo->green.offset == 8
|
||||
&& varInfo->blue.offset == 0)
|
||||
vis->pixelFormat = PF_B8G8R8;
|
||||
|
||||
else if(varInfo->bits_per_pixel == 32
|
||||
&& varInfo->red.offset == 16
|
||||
&& varInfo->green.offset == 8
|
||||
&& varInfo->blue.offset == 0)
|
||||
vis->pixelFormat = PF_B8G8R8A8;
|
||||
|
||||
else if(varInfo->bits_per_pixel == 16
|
||||
&& varInfo->red.offset == 11
|
||||
&& varInfo->green.offset == 5
|
||||
&& varInfo->blue.offset == 0)
|
||||
vis->pixelFormat = PF_B5G6R5;
|
||||
|
||||
else if(varInfo->bits_per_pixel == 16
|
||||
&& varInfo->red.offset == 10
|
||||
&& varInfo->green.offset == 5
|
||||
&& varInfo->blue.offset == 0)
|
||||
vis->pixelFormat = PF_B5G5R5;
|
||||
|
||||
else {
|
||||
_mesa_problem(NULL, "Unsupported fbdev RGB visual/bitdepth!\n");
|
||||
_mesa_free(vis);
|
||||
return NULL;
|
||||
}
|
||||
fixInfo->visual == FB_VISUAL_DIRECTCOLOR) {
|
||||
if (varInfo->bits_per_pixel == 24
|
||||
&& varInfo->red.offset == 16
|
||||
&& varInfo->green.offset == 8
|
||||
&& varInfo->blue.offset == 0) {
|
||||
vis->pixelFormat = PF_B8G8R8;
|
||||
}
|
||||
else if (varInfo->bits_per_pixel == 32
|
||||
&& varInfo->red.offset == 16
|
||||
&& varInfo->green.offset == 8
|
||||
&& varInfo->blue.offset == 0) {
|
||||
vis->pixelFormat = PF_B8G8R8A8;
|
||||
}
|
||||
else if (varInfo->bits_per_pixel == 16
|
||||
&& varInfo->red.offset == 11
|
||||
&& varInfo->green.offset == 5
|
||||
&& varInfo->blue.offset == 0) {
|
||||
vis->pixelFormat = PF_B5G6R5;
|
||||
}
|
||||
else if (varInfo->bits_per_pixel == 16
|
||||
&& varInfo->red.offset == 10
|
||||
&& varInfo->green.offset == 5
|
||||
&& varInfo->blue.offset == 0) {
|
||||
vis->pixelFormat = PF_B5G5R5;
|
||||
}
|
||||
else {
|
||||
_mesa_problem(NULL, "Unsupported fbdev RGB visual/bitdepth!\n");
|
||||
_mesa_free(vis);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
@ -578,7 +576,7 @@ new_glfbdev_renderbuffer(void *bufferStart, const GLFBDevVisualPtr visual)
|
|||
|
||||
rb->rowStride = visual->var.xres_virtual * visual->var.bits_per_pixel / 8;
|
||||
rb->bottom = (GLubyte *) bufferStart
|
||||
+ (visual->var.yres - 1) * rb->rowStride;
|
||||
+ (visual->var.yres - 1) * rb->rowStride;
|
||||
|
||||
rb->Base.Width = visual->var.xres;
|
||||
rb->Base.Height = visual->var.yres;
|
||||
|
|
@ -635,7 +633,7 @@ glFBDevCreateBuffer( const struct fb_fix_screeninfo *fixInfo,
|
|||
&frontrb->Base);
|
||||
/* add back renderbuffer */
|
||||
if (visual->glvisual.doubleBufferMode) {
|
||||
int malloced = !backBuffer;
|
||||
const int malloced = !backBuffer;
|
||||
if (malloced) {
|
||||
/* malloc a back buffer */
|
||||
backBuffer = _mesa_malloc(size);
|
||||
|
|
@ -647,8 +645,11 @@ glFBDevCreateBuffer( const struct fb_fix_screeninfo *fixInfo,
|
|||
}
|
||||
|
||||
backrb = new_glfbdev_renderbuffer(backBuffer, visual);
|
||||
if(malloced)
|
||||
backrb->mallocedBuffer = GL_TRUE;
|
||||
if (!backrb) {
|
||||
/* out of mem */
|
||||
return NULL;
|
||||
}
|
||||
backrb->mallocedBuffer = malloced;
|
||||
|
||||
_mesa_add_renderbuffer(&buf->glframebuffer, BUFFER_BACK_LEFT,
|
||||
&backrb->Base);
|
||||
|
|
@ -682,16 +683,10 @@ glFBDevDestroyBuffer( GLFBDevBufferPtr buffer )
|
|||
if (buffer == curDraw || buffer == curRead) {
|
||||
glFBDevMakeCurrent( NULL, NULL, NULL);
|
||||
}
|
||||
#if 0
|
||||
/* free the software depth, stencil, accum buffers */
|
||||
_mesa_free_framebuffer_data(&buffer->glframebuffer);
|
||||
_mesa_free(buffer);
|
||||
#else
|
||||
{
|
||||
struct gl_framebuffer *fb = &buffer->glframebuffer;
|
||||
_mesa_unreference_framebuffer(&fb);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@
|
|||
#include "context.h"
|
||||
#include "imports.h"
|
||||
#include "macros.h"
|
||||
#include "glapioffsets.h"
|
||||
#include "dispatch.h"
|
||||
#include "glapi/glapioffsets.h"
|
||||
#include "glapi/dispatch.h"
|
||||
|
||||
typedef void (GLAPIENTRY *array_func)( const void * );
|
||||
|
||||
|
|
|
|||
|
|
@ -30,14 +30,14 @@
|
|||
|
||||
|
||||
#include "glheader.h"
|
||||
#include "glapi.h"
|
||||
#include "glapitable.h"
|
||||
#include "macros.h"
|
||||
#include "colormac.h"
|
||||
#include "api_loopback.h"
|
||||
#include "glthread.h"
|
||||
#include "mtypes.h"
|
||||
#include "dispatch.h"
|
||||
#include "glapi/glapi.h"
|
||||
#include "glapi/glapitable.h"
|
||||
#include "glapi/glthread.h"
|
||||
#include "glapi/dispatch.h"
|
||||
|
||||
/* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
|
||||
* calls to a smaller set of driver-provided formats. Currently just
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
#include "light.h"
|
||||
#include "macros.h"
|
||||
#include "dlist.h"
|
||||
#include "dispatch.h"
|
||||
#include "glapi/dispatch.h"
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 6.1
|
||||
* Version: 7.0.1
|
||||
*
|
||||
* Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -100,6 +100,11 @@ _mesa_validate_DrawElements(GLcontext *ctx,
|
|||
(const GLubyte *) indices);
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* not using a VBO */
|
||||
if (!indices)
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
if (ctx->Const.CheckArrayBounds) {
|
||||
/* find max array index */
|
||||
|
|
@ -170,6 +175,16 @@ _mesa_validate_DrawRangeElements(GLcontext *ctx, GLenum mode,
|
|||
&& !(ctx->VertexProgram._Enabled && ctx->Array.ArrayObj->VertexAttrib[0].Enabled))
|
||||
return GL_FALSE;
|
||||
|
||||
/* Vertex buffer object tests */
|
||||
if (ctx->Array.ElementArrayBufferObj->Name) {
|
||||
/* XXX re-use code from above? */
|
||||
}
|
||||
else {
|
||||
/* not using VBO */
|
||||
if (!indices)
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
if (ctx->Const.CheckArrayBounds) {
|
||||
/* Find max array index.
|
||||
* We don't trust the user's start and end values.
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
#include "bufferobj.h"
|
||||
#endif
|
||||
#include "arrayobj.h"
|
||||
#include "dispatch.h"
|
||||
#include "glapi/dispatch.h"
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -97,12 +97,9 @@
|
|||
#include "fog.h"
|
||||
#include "framebuffer.h"
|
||||
#include "get.h"
|
||||
#include "glthread.h"
|
||||
#include "glapioffsets.h"
|
||||
#include "histogram.h"
|
||||
#include "hint.h"
|
||||
#include "hash.h"
|
||||
#include "atifragshader.h"
|
||||
#include "light.h"
|
||||
#include "lines.h"
|
||||
#include "macros.h"
|
||||
|
|
@ -110,9 +107,6 @@
|
|||
#include "pixel.h"
|
||||
#include "points.h"
|
||||
#include "polygon.h"
|
||||
#if FEATURE_NV_vertex_program || FEATURE_NV_fragment_program
|
||||
#include "program.h"
|
||||
#endif
|
||||
#include "queryobj.h"
|
||||
#include "rastpos.h"
|
||||
#include "simple_list.h"
|
||||
|
|
@ -126,13 +120,19 @@
|
|||
#include "varray.h"
|
||||
#include "version.h"
|
||||
#include "vtxfmt.h"
|
||||
#include "glapi/glthread.h"
|
||||
#include "glapi/glapioffsets.h"
|
||||
#if FEATURE_NV_vertex_program || FEATURE_NV_fragment_program
|
||||
#include "shader/program.h"
|
||||
#endif
|
||||
#include "shader/shader_api.h"
|
||||
#include "shader/atifragshader.h"
|
||||
#if _HAVE_FULL_GL
|
||||
#include "math/m_translate.h"
|
||||
#include "math/m_matrix.h"
|
||||
#include "math/m_xform.h"
|
||||
#include "math/mathmod.h"
|
||||
#endif
|
||||
#include "shader_api.h"
|
||||
|
||||
#ifdef USE_SPARC_ASM
|
||||
#include "sparc/sparc.h"
|
||||
|
|
@ -1495,9 +1495,20 @@ _mesa_make_current( GLcontext *newCtx, GLframebuffer *drawBuffer,
|
|||
*/
|
||||
if (!newCtx->DrawBuffer || newCtx->DrawBuffer->Name == 0) {
|
||||
_mesa_reference_framebuffer(&newCtx->DrawBuffer, drawBuffer);
|
||||
/* fix up the fb fields - these will end up wrong otherwise
|
||||
if the DRIdrawable changes, and someone may rely on them.
|
||||
*/
|
||||
/* What a mess!?! */
|
||||
int i;
|
||||
GLenum buffers[MAX_DRAW_BUFFERS];
|
||||
for(i = 0; i < newCtx->Const.MaxDrawBuffers; i++) {
|
||||
buffers[i] = newCtx->Color.DrawBuffer[i];
|
||||
}
|
||||
_mesa_drawbuffers(newCtx, newCtx->Const.MaxDrawBuffers, buffers, NULL);
|
||||
}
|
||||
if (!newCtx->ReadBuffer || newCtx->ReadBuffer->Name == 0) {
|
||||
_mesa_reference_framebuffer(&newCtx->ReadBuffer, readBuffer);
|
||||
_mesa_ReadBuffer(newCtx->Pixel.ReadBuffer);
|
||||
}
|
||||
|
||||
newCtx->NewState |= _NEW_BUFFERS;
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
#define CONTEXT_H
|
||||
|
||||
|
||||
#include "glapi.h"
|
||||
#include "glapi/glapi.h"
|
||||
#include "imports.h"
|
||||
#include "mtypes.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -33,10 +33,6 @@
|
|||
#include "api_arrayelt.h"
|
||||
#include "api_loopback.h"
|
||||
#include "config.h"
|
||||
#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
|
||||
#include "arbprogram.h"
|
||||
#include "program.h"
|
||||
#endif
|
||||
#include "attrib.h"
|
||||
#include "blend.h"
|
||||
#include "buffers.h"
|
||||
|
|
@ -57,7 +53,7 @@
|
|||
#include "extensions.h"
|
||||
#include "feedback.h"
|
||||
#include "get.h"
|
||||
#include "glapi.h"
|
||||
#include "glapi/glapi.h"
|
||||
#include "hash.h"
|
||||
#include "histogram.h"
|
||||
#include "image.h"
|
||||
|
|
@ -76,18 +72,22 @@
|
|||
#include "texstate.h"
|
||||
#include "mtypes.h"
|
||||
#include "varray.h"
|
||||
#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
|
||||
#include "shader/arbprogram.h"
|
||||
#include "shader/program.h"
|
||||
#endif
|
||||
#if FEATURE_NV_vertex_program || FEATURE_NV_fragment_program
|
||||
#include "nvprogram.h"
|
||||
#include "program.h"
|
||||
#include "shader/nvprogram.h"
|
||||
#include "shader/program.h"
|
||||
#endif
|
||||
#if FEATURE_ATI_fragment_shader
|
||||
#include "atifragshader.h"
|
||||
#include "shader/atifragshader.h"
|
||||
#endif
|
||||
|
||||
#include "math/m_matrix.h"
|
||||
#include "math/m_xform.h"
|
||||
|
||||
#include "dispatch.h"
|
||||
#include "glapi/dispatch.h"
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
|
||||
#include "imports.h"
|
||||
#include "glthread.h"
|
||||
#include "glapi/glthread.h"
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,9 @@ compute_depth_max(struct gl_framebuffer *fb)
|
|||
fb->_DepthMax = 0xffffffff;
|
||||
}
|
||||
fb->_DepthMaxF = (GLfloat) fb->_DepthMax;
|
||||
fb->_MRD = 1.0; /* Minimum resolvable depth value, for polygon offset */
|
||||
|
||||
/* Minimum resolvable depth value, for polygon offset */
|
||||
fb->_MRD = 1.0 / fb->_DepthMaxF;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
#include "glheader.h"
|
||||
#include "imports.h"
|
||||
#include "glthread.h"
|
||||
#include "glapi/glthread.h"
|
||||
#include "hash.h"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3648,11 +3648,13 @@ _mesa_unpack_stencil_span( const GLcontext *ctx, GLuint n,
|
|||
* Try simple cases first
|
||||
*/
|
||||
if (transferOps == 0 &&
|
||||
!ctx->Pixel.MapStencilFlag &&
|
||||
srcType == GL_UNSIGNED_BYTE &&
|
||||
dstType == GL_UNSIGNED_BYTE) {
|
||||
_mesa_memcpy(dest, source, n * sizeof(GLubyte));
|
||||
}
|
||||
else if (transferOps == 0 &&
|
||||
!ctx->Pixel.MapStencilFlag &&
|
||||
srcType == GL_UNSIGNED_INT &&
|
||||
dstType == GL_UNSIGNED_INT &&
|
||||
!srcPacking->SwapBytes) {
|
||||
|
|
@ -3668,19 +3670,17 @@ _mesa_unpack_stencil_span( const GLcontext *ctx, GLuint n,
|
|||
extract_uint_indexes(n, indexes, GL_STENCIL_INDEX, srcType, source,
|
||||
srcPacking);
|
||||
|
||||
if (transferOps) {
|
||||
if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
|
||||
/* shift and offset indexes */
|
||||
shift_and_offset_ci(ctx, n, indexes);
|
||||
}
|
||||
if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
|
||||
/* shift and offset indexes */
|
||||
shift_and_offset_ci(ctx, n, indexes);
|
||||
}
|
||||
|
||||
if (ctx->Pixel.MapStencilFlag) {
|
||||
/* Apply stencil lookup table */
|
||||
GLuint mask = ctx->PixelMaps.StoS.Size - 1;
|
||||
GLuint i;
|
||||
for (i=0;i<n;i++) {
|
||||
indexes[i] = ctx->PixelMaps.StoS.Map[ indexes[i] & mask ];
|
||||
}
|
||||
if (ctx->Pixel.MapStencilFlag) {
|
||||
/* Apply stencil lookup table */
|
||||
const GLuint mask = ctx->PixelMaps.StoS.Size - 1;
|
||||
GLuint i;
|
||||
for (i = 0; i < n; i++) {
|
||||
indexes[i] = ctx->PixelMaps.StoS.Map[ indexes[i] & mask ];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3882,9 +3882,19 @@ _mesa_pack_stencil_span( const GLcontext *ctx, GLuint n,
|
|||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
/**
|
||||
* Unpack a row of depth/z values from memory, returning GLushort, GLuint
|
||||
* or GLfloat values.
|
||||
* The glPixelTransfer (scale/bias) params will be applied.
|
||||
*
|
||||
* \param dstType one of GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, GL_FLOAT
|
||||
* \param depthMax max value for returned GLushort or GLuint values
|
||||
* (ignored for GLfloat).
|
||||
*/
|
||||
void
|
||||
_mesa_unpack_depth_span( const GLcontext *ctx, GLuint n,
|
||||
GLenum dstType, GLvoid *dest, GLfloat depthScale,
|
||||
GLenum dstType, GLvoid *dest, GLuint depthMax,
|
||||
GLenum srcType, const GLvoid *source,
|
||||
const struct gl_pixelstore_attrib *srcPacking )
|
||||
{
|
||||
|
|
@ -3907,7 +3917,9 @@ _mesa_unpack_depth_span( const GLcontext *ctx, GLuint n,
|
|||
}
|
||||
return;
|
||||
}
|
||||
if (srcType == GL_UNSIGNED_SHORT && dstType == GL_UNSIGNED_INT) {
|
||||
if (srcType == GL_UNSIGNED_SHORT
|
||||
&& dstType == GL_UNSIGNED_INT
|
||||
&& depthMax == 0xffffffff) {
|
||||
const GLushort *src = (const GLushort *) source;
|
||||
GLuint *dst = (GLuint *) dest;
|
||||
GLuint i;
|
||||
|
|
@ -3955,7 +3967,7 @@ _mesa_unpack_depth_span( const GLcontext *ctx, GLuint n,
|
|||
break;
|
||||
case GL_UNSIGNED_INT_24_8_EXT: /* GL_EXT_packed_depth_stencil */
|
||||
if (dstType == GL_UNSIGNED_INT &&
|
||||
depthScale == (GLfloat) 0xffffff &&
|
||||
depthMax == 0xffffff &&
|
||||
ctx->Pixel.DepthScale == 1.0 &&
|
||||
ctx->Pixel.DepthBias == 0.0) {
|
||||
const GLuint *src = (const GLuint *) source;
|
||||
|
|
@ -4033,16 +4045,16 @@ _mesa_unpack_depth_span( const GLcontext *ctx, GLuint n,
|
|||
if (dstType == GL_UNSIGNED_INT) {
|
||||
GLuint *zValues = (GLuint *) dest;
|
||||
GLuint i;
|
||||
if (depthScale <= (GLfloat) 0xffffff) {
|
||||
if (depthMax <= 0xffffff) {
|
||||
/* no overflow worries */
|
||||
for (i = 0; i < n; i++) {
|
||||
zValues[i] = (GLuint) (depthValues[i] * depthScale);
|
||||
zValues[i] = (GLuint) (depthValues[i] * (GLfloat) depthMax);
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* need to use double precision to prevent overflow problems */
|
||||
for (i = 0; i < n; i++) {
|
||||
GLdouble z = depthValues[i] * depthScale;
|
||||
GLdouble z = depthValues[i] * (GLfloat) depthMax;
|
||||
if (z >= (GLdouble) 0xffffffff)
|
||||
zValues[i] = 0xffffffff;
|
||||
else
|
||||
|
|
@ -4053,14 +4065,14 @@ _mesa_unpack_depth_span( const GLcontext *ctx, GLuint n,
|
|||
else if (dstType == GL_UNSIGNED_SHORT) {
|
||||
GLushort *zValues = (GLushort *) dest;
|
||||
GLuint i;
|
||||
ASSERT(depthScale <= 65535.0);
|
||||
ASSERT(depthMax <= 0xffff);
|
||||
for (i = 0; i < n; i++) {
|
||||
zValues[i] = (GLushort) (depthValues[i] * depthScale);
|
||||
zValues[i] = (GLushort) (depthValues[i] * (GLfloat) depthMax);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ASSERT(dstType == GL_FLOAT);
|
||||
ASSERT(depthScale == 1.0F);
|
||||
/*ASSERT(depthMax == 1.0F);*/
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 6.5.2
|
||||
* Version: 7.1
|
||||
*
|
||||
* Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -181,7 +181,7 @@ _mesa_pack_stencil_span( const GLcontext *ctx, GLuint n,
|
|||
|
||||
extern void
|
||||
_mesa_unpack_depth_span( const GLcontext *ctx, GLuint n,
|
||||
GLenum dstType, GLvoid *dest, GLfloat depthScale,
|
||||
GLenum dstType, GLvoid *dest, GLuint depthMax,
|
||||
GLenum srcType, const GLvoid *source,
|
||||
const struct gl_pixelstore_attrib *srcPacking );
|
||||
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@
|
|||
#include "glheader.h"
|
||||
#include <GL/internal/glcore.h> /* __GLcontextModes (GLvisual) */
|
||||
#include "config.h" /* Hardwired parameters */
|
||||
#include "glapitable.h"
|
||||
#include "glthread.h"
|
||||
#include "glapi/glapitable.h"
|
||||
#include "glapi/glthread.h"
|
||||
#include "math/m_matrix.h" /* GLmatrix */
|
||||
#include "bitset.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -35,10 +35,10 @@
|
|||
#include "accum.h"
|
||||
#include "api_loopback.h"
|
||||
#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
|
||||
#include "arbprogram.h"
|
||||
#include "shader/arbprogram.h"
|
||||
#endif
|
||||
#if FEATURE_ATI_fragment_shader
|
||||
#include "atifragshader.h"
|
||||
#include "shader/atifragshader.h"
|
||||
#endif
|
||||
#include "attrib.h"
|
||||
#include "blend.h"
|
||||
|
|
@ -85,18 +85,18 @@
|
|||
#include "mtypes.h"
|
||||
#include "varray.h"
|
||||
#if FEATURE_NV_vertex_program
|
||||
#include "nvprogram.h"
|
||||
#include "shader/nvprogram.h"
|
||||
#endif
|
||||
#if FEATURE_NV_fragment_program
|
||||
#include "nvprogram.h"
|
||||
#include "program.h"
|
||||
#include "shader/nvprogram.h"
|
||||
#include "shader/program.h"
|
||||
#include "texenvprogram.h"
|
||||
#endif
|
||||
#if FEATURE_ARB_shader_objects
|
||||
#include "shaders.h"
|
||||
#endif
|
||||
#include "debug.h"
|
||||
#include "dispatch.h"
|
||||
#include "glapi/dispatch.h"
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -28,10 +28,10 @@
|
|||
#include "glheader.h"
|
||||
#include "macros.h"
|
||||
#include "enums.h"
|
||||
#include "prog_parameter.h"
|
||||
#include "prog_instruction.h"
|
||||
#include "prog_print.h"
|
||||
#include "prog_statevars.h"
|
||||
#include "shader/prog_parameter.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
#include "shader/prog_print.h"
|
||||
#include "shader/prog_statevars.h"
|
||||
#include "texenvprogram.h"
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1264,6 +1264,10 @@ _mesa_init_teximage_fields(GLcontext *ctx, GLenum target,
|
|||
* A hardware driver might override this function if, for example, the
|
||||
* max 3D texture size is 512x512x64 (i.e. not a cube).
|
||||
*
|
||||
* Note that width, height, depth == 0 is not an error. However, a
|
||||
* texture with zero width/height/depth will be considered "incomplete"
|
||||
* and texturing will effectively be disabled.
|
||||
*
|
||||
* \param target one of GL_PROXY_TEXTURE_1D, GL_PROXY_TEXTURE_2D,
|
||||
* GL_PROXY_TEXTURE_3D, GL_PROXY_TEXTURE_RECTANGLE_NV,
|
||||
* GL_PROXY_TEXTURE_CUBE_MAP_ARB.
|
||||
|
|
@ -1293,7 +1297,7 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
|
|||
maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
|
||||
if (width < 2 * border || width > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(width - 2 * border) != 1) ||
|
||||
width >0 && _mesa_bitcount(width - 2 * border) != 1) ||
|
||||
level >= ctx->Const.MaxTextureLevels) {
|
||||
/* bad width or level */
|
||||
return GL_FALSE;
|
||||
|
|
@ -1303,10 +1307,10 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
|
|||
maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
|
||||
if (width < 2 * border || width > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(width - 2 * border) != 1) ||
|
||||
width > 0 && _mesa_bitcount(width - 2 * border) != 1) ||
|
||||
height < 2 * border || height > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(height - 2 * border) != 1) ||
|
||||
height > 0 && _mesa_bitcount(height - 2 * border) != 1) ||
|
||||
level >= ctx->Const.MaxTextureLevels) {
|
||||
/* bad width or height or level */
|
||||
return GL_FALSE;
|
||||
|
|
@ -1316,21 +1320,21 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
|
|||
maxSize = 1 << (ctx->Const.Max3DTextureLevels - 1);
|
||||
if (width < 2 * border || width > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(width - 2 * border) != 1) ||
|
||||
width > 0 && _mesa_bitcount(width - 2 * border) != 1) ||
|
||||
height < 2 * border || height > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(height - 2 * border) != 1) ||
|
||||
height > 0 && _mesa_bitcount(height - 2 * border) != 1) ||
|
||||
depth < 2 * border || depth > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(depth - 2 * border) != 1) ||
|
||||
depth > 0 && _mesa_bitcount(depth - 2 * border) != 1) ||
|
||||
level >= ctx->Const.Max3DTextureLevels) {
|
||||
/* bad width or height or depth or level */
|
||||
return GL_FALSE;
|
||||
}
|
||||
return GL_TRUE;
|
||||
case GL_PROXY_TEXTURE_RECTANGLE_NV:
|
||||
if (width < 1 || width > ctx->Const.MaxTextureRectSize ||
|
||||
height < 1 || height > ctx->Const.MaxTextureRectSize ||
|
||||
if (width < 0 || width > ctx->Const.MaxTextureRectSize ||
|
||||
height < 0 || height > ctx->Const.MaxTextureRectSize ||
|
||||
level != 0) {
|
||||
/* bad width or height or level */
|
||||
return GL_FALSE;
|
||||
|
|
@ -1340,10 +1344,10 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
|
|||
maxSize = 1 << (ctx->Const.MaxCubeTextureLevels - 1);
|
||||
if (width < 2 * border || width > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(width - 2 * border) != 1) ||
|
||||
width > 0 && _mesa_bitcount(width - 2 * border) != 1) ||
|
||||
height < 2 * border || height > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(height - 2 * border) != 1) ||
|
||||
height > 0 && _mesa_bitcount(height - 2 * border) != 1) ||
|
||||
level >= ctx->Const.MaxCubeTextureLevels) {
|
||||
/* bad width or height */
|
||||
return GL_FALSE;
|
||||
|
|
@ -1353,7 +1357,7 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
|
|||
maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
|
||||
if (width < 2 * border || width > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(width - 2 * border) != 1) ||
|
||||
width > 0 && _mesa_bitcount(width - 2 * border) != 1) ||
|
||||
level >= ctx->Const.MaxTextureLevels) {
|
||||
/* bad width or level */
|
||||
return GL_FALSE;
|
||||
|
|
@ -1367,10 +1371,10 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
|
|||
maxSize = 1 << (ctx->Const.MaxTextureLevels - 1);
|
||||
if (width < 2 * border || width > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(width - 2 * border) != 1) ||
|
||||
width > 0 && _mesa_bitcount(width - 2 * border) != 1) ||
|
||||
height < 2 * border || height > 2 + maxSize ||
|
||||
(!ctx->Extensions.ARB_texture_non_power_of_two &&
|
||||
_mesa_bitcount(height - 2 * border) != 1) ||
|
||||
height > 0 && _mesa_bitcount(height - 2 * border) != 1) ||
|
||||
level >= ctx->Const.MaxTextureLevels) {
|
||||
/* bad width or height or level */
|
||||
return GL_FALSE;
|
||||
|
|
@ -1472,7 +1476,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
|
|||
if (target == GL_PROXY_TEXTURE_1D || target == GL_TEXTURE_1D) {
|
||||
proxy_target = GL_PROXY_TEXTURE_1D;
|
||||
height = 1;
|
||||
width = 1;
|
||||
depth = 1;
|
||||
}
|
||||
else {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glTexImage1D(target)" );
|
||||
|
|
|
|||
|
|
@ -1077,7 +1077,7 @@ _mesa_texstore_rgba(TEXSTORE_PARAMS)
|
|||
GLboolean
|
||||
_mesa_texstore_z32(TEXSTORE_PARAMS)
|
||||
{
|
||||
const GLfloat depthScale = (GLfloat) 0xffffffff;
|
||||
const GLuint depthScale = 0xffffffff;
|
||||
(void) dims;
|
||||
ASSERT(dstFormat == &_mesa_texformat_z32);
|
||||
ASSERT(dstFormat->TexelBytes == sizeof(GLuint));
|
||||
|
|
@ -1124,7 +1124,7 @@ _mesa_texstore_z32(TEXSTORE_PARAMS)
|
|||
GLboolean
|
||||
_mesa_texstore_z16(TEXSTORE_PARAMS)
|
||||
{
|
||||
const GLfloat depthScale = 65535.0f;
|
||||
const GLuint depthScale = 0xffff;
|
||||
(void) dims;
|
||||
ASSERT(dstFormat == &_mesa_texformat_z16);
|
||||
ASSERT(dstFormat->TexelBytes == sizeof(GLushort));
|
||||
|
|
@ -2319,6 +2319,8 @@ _mesa_texstore_ycbcr(TEXSTORE_PARAMS)
|
|||
GLboolean
|
||||
_mesa_texstore_z24_s8(TEXSTORE_PARAMS)
|
||||
{
|
||||
const GLuint depthScale = 0xffffff;
|
||||
|
||||
ASSERT(dstFormat == &_mesa_texformat_z24_s8);
|
||||
ASSERT(srcFormat == GL_DEPTH_STENCIL_EXT);
|
||||
ASSERT(srcType == GL_UNSIGNED_INT_24_8_EXT);
|
||||
|
|
@ -2357,7 +2359,7 @@ _mesa_texstore_z24_s8(TEXSTORE_PARAMS)
|
|||
_mesa_unpack_depth_span(ctx, srcWidth,
|
||||
GL_UNSIGNED_INT, /* dst type */
|
||||
dstRow, /* dst addr */
|
||||
(GLfloat) 0xffffff, /* depthScale */
|
||||
depthScale,
|
||||
srcType, src, srcPacking);
|
||||
/* get the 8-bit stencil values */
|
||||
_mesa_unpack_stencil_span(ctx, srcWidth,
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
#include "mtypes.h"
|
||||
#include "varray.h"
|
||||
#include "arrayobj.h"
|
||||
#include "dispatch.h"
|
||||
#include "glapi/dispatch.h"
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@
|
|||
#define PRE_LOOPBACK( FUNC )
|
||||
#endif
|
||||
|
||||
#include "dispatch.h"
|
||||
#include "glapioffsets.h"
|
||||
#include "glapi/dispatch.h"
|
||||
#include "glapi/glapioffsets.h"
|
||||
|
||||
static void GLAPIENTRY TAG(ArrayElement)( GLint i )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@
|
|||
*/
|
||||
|
||||
|
||||
#include "glheader.h"
|
||||
#include "config.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/config.h"
|
||||
#include "m_eval.h"
|
||||
|
||||
static GLfloat inv_tab[MAX_EVAL_ORDER];
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
#ifndef _M_EVAL_H
|
||||
#define _M_EVAL_H
|
||||
|
||||
#include "glheader.h"
|
||||
#include "main/glheader.h"
|
||||
|
||||
void _math_init_eval( void );
|
||||
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@
|
|||
#ifndef _M_TRANSLATE_H_
|
||||
#define _M_TRANSLATE_H_
|
||||
|
||||
#include "config.h"
|
||||
#include "mtypes.h" /* hack for GLchan */
|
||||
#include "main/config.h"
|
||||
#include "main/mtypes.h" /* hack for GLchan */
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@
|
|||
* 3. Transformation of a point p by a matrix M is: p' = M * p
|
||||
*/
|
||||
|
||||
#include "glheader.h"
|
||||
#include "macros.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/macros.h"
|
||||
|
||||
#include "m_eval.h"
|
||||
#include "m_matrix.h"
|
||||
|
|
|
|||
|
|
@ -30,10 +30,10 @@
|
|||
* \author Karl Rasche
|
||||
*/
|
||||
|
||||
#include "glheader.h"
|
||||
#include "imports.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/imports.h"
|
||||
#include "shader/grammar/grammar_mesa.h"
|
||||
#include "arbprogparse.h"
|
||||
#include "grammar_mesa.h"
|
||||
#include "program.h"
|
||||
#include "prog_parameter.h"
|
||||
#include "prog_statevars.h"
|
||||
|
|
@ -3573,7 +3573,7 @@ parse_instructions(GLcontext * ctx, const GLubyte * inst,
|
|||
|
||||
/* XXX temporary */
|
||||
LONGSTRING static char core_grammar_text[] =
|
||||
#include "grammar_syn.h"
|
||||
#include "shader/grammar/grammar_syn.h"
|
||||
;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
#include "prog_instruction.h"
|
||||
#include "prog_parameter.h"
|
||||
#include "prog_print.h"
|
||||
#include "slang_library_noise.h"
|
||||
#include "shader/slang/slang_library_noise.h"
|
||||
|
||||
|
||||
/* See comments below for info about this */
|
||||
|
|
|
|||
|
|
@ -43,10 +43,9 @@
|
|||
#include "prog_parameter.h"
|
||||
#include "prog_print.h"
|
||||
#include "prog_statevars.h"
|
||||
#include "shader_api.h"
|
||||
|
||||
#include "slang_compile.h"
|
||||
#include "slang_link.h"
|
||||
#include "shader/shader_api.h"
|
||||
#include "shader/slang/slang_compile.h"
|
||||
#include "shader/slang/slang_link.h"
|
||||
|
||||
|
||||
|
||||
|
|
@ -780,7 +779,7 @@ _mesa_get_programiv(GLcontext *ctx, GLuint program,
|
|||
*params = shProg->Validated;
|
||||
break;
|
||||
case GL_INFO_LOG_LENGTH:
|
||||
*params = shProg->InfoLog ? strlen(shProg->InfoLog) : 0;
|
||||
*params = shProg->InfoLog ? strlen(shProg->InfoLog) + 1 : 0;
|
||||
break;
|
||||
case GL_ATTACHED_SHADERS:
|
||||
*params = shProg->NumShaders;
|
||||
|
|
@ -832,10 +831,10 @@ _mesa_get_shaderiv(GLcontext *ctx, GLuint name, GLenum pname, GLint *params)
|
|||
*params = shader->CompileStatus;
|
||||
break;
|
||||
case GL_INFO_LOG_LENGTH:
|
||||
*params = shader->InfoLog ? strlen(shader->InfoLog) : 0;
|
||||
*params = shader->InfoLog ? strlen(shader->InfoLog) + 1 : 0;
|
||||
break;
|
||||
case GL_SHADER_SOURCE_LENGTH:
|
||||
*params = shader->Source ? strlen((char *) shader->Source) : 0;
|
||||
*params = shader->Source ? strlen((char *) shader->Source) + 1 : 0;
|
||||
break;
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glGetShaderiv(pname)");
|
||||
|
|
|
|||
|
|
@ -28,14 +28,14 @@
|
|||
* \author Brian Paul
|
||||
*/
|
||||
|
||||
#include "imports.h"
|
||||
#include "slang_builtin.h"
|
||||
#include "slang_ir.h"
|
||||
#include "mtypes.h"
|
||||
#include "program.h"
|
||||
#include "prog_instruction.h"
|
||||
#include "prog_parameter.h"
|
||||
#include "prog_statevars.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/mtypes.h"
|
||||
#include "shader/program.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
#include "shader/prog_parameter.h"
|
||||
#include "shader/prog_statevars.h"
|
||||
#include "shader/slang/slang_ir.h"
|
||||
#include "shader/slang/slang_builtin.h"
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
#ifndef SLANG_BUILTIN_H
|
||||
#define SLANG_BUILTIN_H
|
||||
|
||||
#include "prog_parameter.h"
|
||||
#include "shader/prog_parameter.h"
|
||||
#include "slang_utility.h"
|
||||
#include "slang_ir.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 6.5.3
|
||||
* Version: 7.1
|
||||
*
|
||||
* Copyright (C) 2005-2007 Brian Paul All Rights Reserved.
|
||||
*
|
||||
|
|
@ -37,13 +37,13 @@
|
|||
|
||||
|
||||
|
||||
#include "imports.h"
|
||||
#include "macros.h"
|
||||
#include "mtypes.h"
|
||||
#include "program.h"
|
||||
#include "prog_instruction.h"
|
||||
#include "prog_parameter.h"
|
||||
#include "prog_statevars.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/macros.h"
|
||||
#include "main/mtypes.h"
|
||||
#include "shader/program.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
#include "shader/prog_parameter.h"
|
||||
#include "shader/prog_statevars.h"
|
||||
#include "slang_typeinfo.h"
|
||||
#include "slang_codegen.h"
|
||||
#include "slang_compile.h"
|
||||
|
|
@ -2329,7 +2329,8 @@ _slang_gen_field(slang_assemble_ctx * A, slang_operation *oper)
|
|||
n = _slang_gen_swizzle(n, swizzle);
|
||||
return n;
|
||||
}
|
||||
else if (ti.spec.type == SLANG_SPEC_FLOAT) {
|
||||
else if ( ti.spec.type == SLANG_SPEC_FLOAT
|
||||
|| ti.spec.type == SLANG_SPEC_INT) {
|
||||
const GLuint rows = 1;
|
||||
slang_swizzle swz;
|
||||
slang_ir_node *n;
|
||||
|
|
|
|||
|
|
@ -28,11 +28,11 @@
|
|||
* \author Michal Krol
|
||||
*/
|
||||
|
||||
#include "imports.h"
|
||||
#include "context.h"
|
||||
#include "program.h"
|
||||
#include "prog_parameter.h"
|
||||
#include "grammar_mesa.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/context.h"
|
||||
#include "shader/program.h"
|
||||
#include "shader/prog_parameter.h"
|
||||
#include "shader/grammar/grammar_mesa.h"
|
||||
#include "slang_codegen.h"
|
||||
#include "slang_compile.h"
|
||||
#include "slang_preprocess.h"
|
||||
|
|
|
|||
|
|
@ -36,13 +36,13 @@
|
|||
***/
|
||||
|
||||
|
||||
#include "imports.h"
|
||||
#include "context.h"
|
||||
#include "macros.h"
|
||||
#include "program.h"
|
||||
#include "prog_instruction.h"
|
||||
#include "prog_parameter.h"
|
||||
#include "prog_print.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/context.h"
|
||||
#include "main/macros.h"
|
||||
#include "shader/program.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
#include "shader/prog_parameter.h"
|
||||
#include "shader/prog_print.h"
|
||||
#include "slang_builtin.h"
|
||||
#include "slang_emit.h"
|
||||
#include "slang_mem.h"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
#include "context.h"
|
||||
#include "slang_ir.h"
|
||||
#include "slang_mem.h"
|
||||
#include "prog_print.h"
|
||||
#include "shader/prog_print.h"
|
||||
|
||||
|
||||
static const slang_ir_info IrInfo[] = {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#ifndef SLANG_LABEL_H
|
||||
#define SLANG_LABEL_H 1
|
||||
|
||||
#include "imports.h"
|
||||
#include "mtypes.h"
|
||||
#include "prog_instruction.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/mtypes.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
|
||||
|
||||
struct slang_label_
|
||||
|
|
|
|||
|
|
@ -28,16 +28,16 @@
|
|||
* \author Brian Paul
|
||||
*/
|
||||
|
||||
#include "imports.h"
|
||||
#include "context.h"
|
||||
#include "hash.h"
|
||||
#include "macros.h"
|
||||
#include "program.h"
|
||||
#include "prog_instruction.h"
|
||||
#include "prog_parameter.h"
|
||||
#include "prog_print.h"
|
||||
#include "prog_statevars.h"
|
||||
#include "shader_api.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/context.h"
|
||||
#include "main/hash.h"
|
||||
#include "main/macros.h"
|
||||
#include "shader/program.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
#include "shader/prog_parameter.h"
|
||||
#include "shader/prog_print.h"
|
||||
#include "shader/prog_statevars.h"
|
||||
#include "shader/shader_api.h"
|
||||
#include "slang_link.h"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
*/
|
||||
|
||||
#include "imports.h"
|
||||
#include "grammar_mesa.h"
|
||||
#include "shader/grammar/grammar_mesa.h"
|
||||
#include "slang_preprocess.h"
|
||||
|
||||
LONGSTRING static const char *slang_pp_directives_syn =
|
||||
|
|
|
|||
|
|
@ -28,12 +28,12 @@
|
|||
* \author Michal Krol
|
||||
*/
|
||||
|
||||
#include "imports.h"
|
||||
#include "main/imports.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
#include "slang_typeinfo.h"
|
||||
#include "slang_compile.h"
|
||||
#include "slang_log.h"
|
||||
#include "slang_mem.h"
|
||||
#include "prog_instruction.h"
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
|
||||
#include "imports.h"
|
||||
#include "main/imports.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
#include "slang_compile.h"
|
||||
#include "slang_compile_variable.h"
|
||||
#include "slang_mem.h"
|
||||
#include "slang_vartable.h"
|
||||
#include "slang_ir.h"
|
||||
#include "prog_instruction.h"
|
||||
|
||||
|
||||
static int dbg = 0;
|
||||
|
|
|
|||
|
|
@ -23,11 +23,10 @@
|
|||
#include "glheader.h"
|
||||
#include "colormac.h"
|
||||
#include "context.h"
|
||||
#include "atifragshader.h"
|
||||
#include "macros.h"
|
||||
#include "program.h"
|
||||
|
||||
#include "s_atifragshader.h"
|
||||
#include "shader/program.h"
|
||||
#include "shader/atifragshader.h"
|
||||
#include "swrast/s_atifragshader.h"
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
#include "context.h"
|
||||
#include "colormac.h"
|
||||
#include "mtypes.h"
|
||||
#include "prog_statevars.h"
|
||||
#include "teximage.h"
|
||||
#include "swrast.h"
|
||||
#include "shader/prog_statevars.h"
|
||||
#include "s_blend.h"
|
||||
#include "s_context.h"
|
||||
#include "s_lines.h"
|
||||
|
|
|
|||
|
|
@ -43,10 +43,10 @@
|
|||
#ifndef S_CONTEXT_H
|
||||
#define S_CONTEXT_H
|
||||
|
||||
#include "mtypes.h"
|
||||
#include "main/mtypes.h"
|
||||
#include "shader/prog_execute.h"
|
||||
#include "swrast.h"
|
||||
#include "s_span.h"
|
||||
#include "prog_execute.h"
|
||||
|
||||
|
||||
typedef void (*texture_sample_func)(GLcontext *ctx,
|
||||
|
|
|
|||
|
|
@ -484,7 +484,7 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y,
|
|||
}
|
||||
else {
|
||||
/* General case */
|
||||
const GLfloat depthMax = ctx->DrawBuffer->_DepthMaxF;
|
||||
const GLuint depthMax = ctx->DrawBuffer->_DepthMax;
|
||||
GLint skipPixels = 0;
|
||||
|
||||
/* in case width > MAX_WIDTH do the copy in chunks */
|
||||
|
|
@ -695,7 +695,7 @@ draw_depth_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
|
|||
const GLint imgX = x, imgY = y;
|
||||
const GLboolean scaleOrBias
|
||||
= ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0;
|
||||
const GLfloat depthScale = ctx->DrawBuffer->_DepthMaxF;
|
||||
const GLuint depthMax = ctx->DrawBuffer->_DepthMax;
|
||||
const GLuint stencilMask = ctx->Stencil.WriteMask[0];
|
||||
const GLuint stencilType = (STENCIL_BITS == 8) ?
|
||||
GL_UNSIGNED_BYTE : GL_UNSIGNED_SHORT;
|
||||
|
|
@ -783,7 +783,7 @@ draw_depth_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
|
|||
/* general case */
|
||||
GLuint zValues[MAX_WIDTH]; /* 16 or 32-bit Z value storage */
|
||||
_mesa_unpack_depth_span(ctx, width,
|
||||
depthRb->DataType, zValues, depthScale,
|
||||
depthRb->DataType, zValues, depthMax,
|
||||
type, depthStencilSrc, &clippedUnpack);
|
||||
if (zoom) {
|
||||
_swrast_write_zoomed_z_span(ctx, imgX, imgY, width, x,
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@
|
|||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "glheader.h"
|
||||
#include "colormac.h"
|
||||
#include "context.h"
|
||||
#include "prog_instruction.h"
|
||||
#include "texstate.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/colormac.h"
|
||||
#include "main/context.h"
|
||||
#include "main/texstate.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
|
||||
#include "s_fragprog.h"
|
||||
#include "s_span.h"
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 6.5
|
||||
* Version: 7.1
|
||||
*
|
||||
* Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -392,6 +392,23 @@ do_stencil_test( GLcontext *ctx, GLuint face, GLuint n, GLstencil stencil[],
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compute the zpass/zfail masks by comparing the pre- and post-depth test
|
||||
* masks.
|
||||
*/
|
||||
static INLINE void
|
||||
compute_pass_fail_masks(GLuint n, const GLubyte origMask[],
|
||||
const GLubyte newMask[],
|
||||
GLubyte passMask[], GLubyte failMask[])
|
||||
{
|
||||
GLuint i;
|
||||
for (i = 0; i < n; i++) {
|
||||
ASSERT(newMask[i] == 0 || newMask[i] == 1);
|
||||
passMask[i] = origMask[i] & newMask[i];
|
||||
failMask[i] = origMask[i] & (newMask[i] ^ 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Apply stencil and depth testing to the span of pixels.
|
||||
|
|
@ -460,39 +477,24 @@ stencil_and_ztest_span(GLcontext *ctx, SWspan *span, GLuint face)
|
|||
/*
|
||||
* Perform depth buffering, then apply zpass or zfail stencil function.
|
||||
*/
|
||||
GLubyte passmask[MAX_WIDTH], failmask[MAX_WIDTH], oldmask[MAX_WIDTH];
|
||||
GLuint i;
|
||||
GLubyte passMask[MAX_WIDTH], failMask[MAX_WIDTH], origMask[MAX_WIDTH];
|
||||
|
||||
/* save the current mask bits */
|
||||
_mesa_memcpy(oldmask, mask, n * sizeof(GLubyte));
|
||||
_mesa_memcpy(origMask, mask, n * sizeof(GLubyte));
|
||||
|
||||
/* apply the depth test */
|
||||
_swrast_depth_test_span(ctx, span);
|
||||
|
||||
/* Set the stencil pass/fail flags according to result of depth testing.
|
||||
* if oldmask[i] == 0 then
|
||||
* Don't touch the stencil value
|
||||
* else if oldmask[i] and newmask[i] then
|
||||
* Depth test passed
|
||||
* else
|
||||
* assert(oldmask[i] && !newmask[i])
|
||||
* Depth test failed
|
||||
* endif
|
||||
*/
|
||||
for (i=0;i<n;i++) {
|
||||
ASSERT(mask[i] == 0 || mask[i] == 1);
|
||||
passmask[i] = oldmask[i] & mask[i];
|
||||
failmask[i] = oldmask[i] & (mask[i] ^ 1);
|
||||
}
|
||||
compute_pass_fail_masks(n, origMask, mask, passMask, failMask);
|
||||
|
||||
/* apply the pass and fail operations */
|
||||
if (ctx->Stencil.ZFailFunc[face] != GL_KEEP) {
|
||||
apply_stencil_op( ctx, ctx->Stencil.ZFailFunc[face], face,
|
||||
n, stencil, failmask );
|
||||
n, stencil, failMask );
|
||||
}
|
||||
if (ctx->Stencil.ZPassFunc[face] != GL_KEEP) {
|
||||
apply_stencil_op( ctx, ctx->Stencil.ZPassFunc[face], face,
|
||||
n, stencil, passmask );
|
||||
n, stencil, passMask );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -902,6 +904,7 @@ stencil_test_pixels( GLcontext *ctx, GLuint face, GLuint n,
|
|||
static GLboolean
|
||||
stencil_and_ztest_pixels( GLcontext *ctx, SWspan *span, GLuint face )
|
||||
{
|
||||
GLubyte passMask[MAX_WIDTH], failMask[MAX_WIDTH], origMask[MAX_WIDTH];
|
||||
struct gl_framebuffer *fb = ctx->DrawBuffer;
|
||||
struct gl_renderbuffer *rb = fb->_StencilBuffer;
|
||||
const GLuint n = span->end;
|
||||
|
|
@ -916,13 +919,10 @@ stencil_and_ztest_pixels( GLcontext *ctx, SWspan *span, GLuint face )
|
|||
if (!rb->GetPointer(ctx, rb, 0, 0)) {
|
||||
/* No direct access */
|
||||
GLstencil stencil[MAX_WIDTH];
|
||||
GLubyte origMask[MAX_WIDTH];
|
||||
|
||||
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
|
||||
_swrast_get_values(ctx, rb, n, x, y, stencil, sizeof(GLubyte));
|
||||
|
||||
_mesa_memcpy(origMask, mask, n * sizeof(GLubyte));
|
||||
|
||||
(void) do_stencil_test(ctx, face, n, stencil, mask);
|
||||
|
||||
if (ctx->Depth.Test == GL_FALSE) {
|
||||
|
|
@ -930,27 +930,19 @@ stencil_and_ztest_pixels( GLcontext *ctx, SWspan *span, GLuint face )
|
|||
n, stencil, mask);
|
||||
}
|
||||
else {
|
||||
_mesa_memcpy(origMask, mask, n * sizeof(GLubyte));
|
||||
|
||||
_swrast_depth_test_span(ctx, span);
|
||||
|
||||
compute_pass_fail_masks(n, origMask, mask, passMask, failMask);
|
||||
|
||||
if (ctx->Stencil.ZFailFunc[face] != GL_KEEP) {
|
||||
GLubyte failmask[MAX_WIDTH];
|
||||
GLuint i;
|
||||
for (i = 0; i < n; i++) {
|
||||
ASSERT(mask[i] == 0 || mask[i] == 1);
|
||||
failmask[i] = origMask[i] & (mask[i] ^ 1);
|
||||
}
|
||||
apply_stencil_op(ctx, ctx->Stencil.ZFailFunc[face], face,
|
||||
n, stencil, failmask);
|
||||
n, stencil, failMask);
|
||||
}
|
||||
if (ctx->Stencil.ZPassFunc[face] != GL_KEEP) {
|
||||
GLubyte passmask[MAX_WIDTH];
|
||||
GLuint i;
|
||||
for (i = 0; i < n; i++) {
|
||||
ASSERT(mask[i] == 0 || mask[i] == 1);
|
||||
passmask[i] = origMask[i] & mask[i];
|
||||
}
|
||||
apply_stencil_op(ctx, ctx->Stencil.ZPassFunc[face], face,
|
||||
n, stencil, passmask);
|
||||
n, stencil, passMask);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -972,28 +964,21 @@ stencil_and_ztest_pixels( GLcontext *ctx, SWspan *span, GLuint face )
|
|||
ctx->Stencil.ZPassFunc[face], face, mask);
|
||||
}
|
||||
else {
|
||||
GLubyte passmask[MAX_WIDTH], failmask[MAX_WIDTH], oldmask[MAX_WIDTH];
|
||||
GLuint i;
|
||||
|
||||
_mesa_memcpy(oldmask, mask, n * sizeof(GLubyte));
|
||||
_mesa_memcpy(origMask, mask, n * sizeof(GLubyte));
|
||||
|
||||
_swrast_depth_test_span(ctx, span);
|
||||
|
||||
for (i=0;i<n;i++) {
|
||||
ASSERT(mask[i] == 0 || mask[i] == 1);
|
||||
passmask[i] = oldmask[i] & mask[i];
|
||||
failmask[i] = oldmask[i] & (mask[i] ^ 1);
|
||||
}
|
||||
compute_pass_fail_masks(n, origMask, mask, passMask, failMask);
|
||||
|
||||
if (ctx->Stencil.ZFailFunc[face] != GL_KEEP) {
|
||||
apply_stencil_op_to_pixels(ctx, n, x, y,
|
||||
ctx->Stencil.ZFailFunc[face],
|
||||
face, failmask);
|
||||
face, failMask);
|
||||
}
|
||||
if (ctx->Stencil.ZPassFunc[face] != GL_KEEP) {
|
||||
apply_stencil_op_to_pixels(ctx, n, x, y,
|
||||
ctx->Stencil.ZPassFunc[face],
|
||||
face, passmask);
|
||||
face, passMask);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
#ifndef SWRAST_H
|
||||
#define SWRAST_H
|
||||
|
||||
#include "mtypes.h"
|
||||
#include "main/mtypes.h"
|
||||
|
||||
/**
|
||||
* \struct SWvertex
|
||||
|
|
|
|||
|
|
@ -280,26 +280,29 @@ _swsetup_Translate( GLcontext *ctx, const void *vertex, SWvertex *dest )
|
|||
|
||||
/** XXX try to limit these loops someday */
|
||||
for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++)
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_TEX0+i,
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_TEX0 + i,
|
||||
dest->attrib[FRAG_ATTRIB_TEX0 + i] );
|
||||
|
||||
for (i = 0 ; i < ctx->Const.MaxVarying ; i++)
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_GENERIC0+i,
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_GENERIC0 + i,
|
||||
dest->attrib[FRAG_ATTRIB_VAR0 + i] );
|
||||
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_COLOR0, tmp );
|
||||
/* XXX need float color FRAG_ATTRIB_COL0?? */
|
||||
UNCLAMPED_FLOAT_TO_RGBA_CHAN( dest->color, tmp );
|
||||
if (ctx->Visual.rgbMode) {
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_COLOR0,
|
||||
dest->attrib[FRAG_ATTRIB_COL0] );
|
||||
UNCLAMPED_FLOAT_TO_RGBA_CHAN( dest->color, tmp );
|
||||
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_COLOR1, tmp );
|
||||
COPY_4V(dest->attrib[FRAG_ATTRIB_COL1], tmp);
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_COLOR1,
|
||||
dest->attrib[FRAG_ATTRIB_COL1]);
|
||||
}
|
||||
else {
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_COLOR_INDEX, tmp );
|
||||
dest->attrib[FRAG_ATTRIB_CI][0] = tmp[0];
|
||||
}
|
||||
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_FOG, tmp );
|
||||
dest->attrib[FRAG_ATTRIB_FOGC][0] = tmp[0];
|
||||
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_COLOR_INDEX, tmp );
|
||||
dest->attrib[FRAG_ATTRIB_CI][0] = tmp[0];
|
||||
|
||||
/* XXX See _tnl_get_attr about pointsize ... */
|
||||
_tnl_get_attr( ctx, vertex, _TNL_ATTRIB_POINTSIZE, tmp );
|
||||
dest->pointSize = tmp[0];
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ static void TAG(triangle)(GLcontext *ctx, GLuint e0, GLuint e1, GLuint e2 )
|
|||
SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts;
|
||||
SWvertex *v[3];
|
||||
GLfloat z[3];
|
||||
GLfloat offset;
|
||||
GLfloat offset, oz0, oz1, oz2;
|
||||
GLenum mode = GL_FILL;
|
||||
GLuint facing = 0;
|
||||
GLchan saved_color[3][4];
|
||||
|
|
@ -142,12 +142,16 @@ static void TAG(triangle)(GLcontext *ctx, GLuint e0, GLuint e1, GLuint e2 )
|
|||
}
|
||||
}
|
||||
|
||||
if (IND & SS_OFFSET_BIT)
|
||||
{
|
||||
offset = ctx->Polygon.OffsetUnits * ctx->DrawBuffer->_MRD;
|
||||
if (IND & SS_OFFSET_BIT) {
|
||||
const GLfloat max = ctx->DrawBuffer->_DepthMaxF;
|
||||
/* save original Z values (restored later) */
|
||||
z[0] = v[0]->attrib[FRAG_ATTRIB_WPOS][2];
|
||||
z[1] = v[1]->attrib[FRAG_ATTRIB_WPOS][2];
|
||||
z[2] = v[2]->attrib[FRAG_ATTRIB_WPOS][2];
|
||||
/* Note that Z values are already scaled to [0,65535] (for example)
|
||||
* so no MRD value is used here.
|
||||
*/
|
||||
offset = ctx->Polygon.OffsetUnits;
|
||||
if (cc * cc > 1e-16) {
|
||||
const GLfloat ez = z[0] - z[2];
|
||||
const GLfloat fz = z[1] - z[2];
|
||||
|
|
@ -155,35 +159,33 @@ static void TAG(triangle)(GLcontext *ctx, GLuint e0, GLuint e1, GLuint e2 )
|
|||
const GLfloat dzdx = FABSF((ey * fz - ez * fy) * oneOverArea);
|
||||
const GLfloat dzdy = FABSF((ez * fx - ex * fz) * oneOverArea);
|
||||
offset += MAX2(dzdx, dzdy) * ctx->Polygon.OffsetFactor;
|
||||
/* Unfortunately, we need to clamp to prevent negative Zs below.
|
||||
* Technically, we should do the clamping per-fragment.
|
||||
*/
|
||||
offset = MAX2(offset, -v[0]->attrib[FRAG_ATTRIB_WPOS][2]);
|
||||
offset = MAX2(offset, -v[1]->attrib[FRAG_ATTRIB_WPOS][2]);
|
||||
offset = MAX2(offset, -v[2]->attrib[FRAG_ATTRIB_WPOS][2]);
|
||||
}
|
||||
/* new Z values */
|
||||
oz0 = CLAMP(v[0]->attrib[FRAG_ATTRIB_WPOS][2] + offset, 0.0, max);
|
||||
oz1 = CLAMP(v[1]->attrib[FRAG_ATTRIB_WPOS][2] + offset, 0.0, max);
|
||||
oz2 = CLAMP(v[2]->attrib[FRAG_ATTRIB_WPOS][2] + offset, 0.0, max);
|
||||
}
|
||||
}
|
||||
|
||||
if (mode == GL_POINT) {
|
||||
if ((IND & SS_OFFSET_BIT) && ctx->Polygon.OffsetPoint) {
|
||||
v[0]->attrib[FRAG_ATTRIB_WPOS][2] += offset;
|
||||
v[1]->attrib[FRAG_ATTRIB_WPOS][2] += offset;
|
||||
v[2]->attrib[FRAG_ATTRIB_WPOS][2] += offset;
|
||||
v[0]->attrib[FRAG_ATTRIB_WPOS][2] = oz0;
|
||||
v[1]->attrib[FRAG_ATTRIB_WPOS][2] = oz1;
|
||||
v[2]->attrib[FRAG_ATTRIB_WPOS][2] = oz2;
|
||||
}
|
||||
_swsetup_render_point_tri( ctx, e0, e1, e2, facing );
|
||||
} else if (mode == GL_LINE) {
|
||||
if ((IND & SS_OFFSET_BIT) && ctx->Polygon.OffsetLine) {
|
||||
v[0]->attrib[FRAG_ATTRIB_WPOS][2] += offset;
|
||||
v[1]->attrib[FRAG_ATTRIB_WPOS][2] += offset;
|
||||
v[2]->attrib[FRAG_ATTRIB_WPOS][2] += offset;
|
||||
v[0]->attrib[FRAG_ATTRIB_WPOS][2] = oz0;
|
||||
v[1]->attrib[FRAG_ATTRIB_WPOS][2] = oz1;
|
||||
v[2]->attrib[FRAG_ATTRIB_WPOS][2] = oz2;
|
||||
}
|
||||
_swsetup_render_line_tri( ctx, e0, e1, e2, facing );
|
||||
} else {
|
||||
if ((IND & SS_OFFSET_BIT) && ctx->Polygon.OffsetFill) {
|
||||
v[0]->attrib[FRAG_ATTRIB_WPOS][2] += offset;
|
||||
v[1]->attrib[FRAG_ATTRIB_WPOS][2] += offset;
|
||||
v[2]->attrib[FRAG_ATTRIB_WPOS][2] += offset;
|
||||
v[0]->attrib[FRAG_ATTRIB_WPOS][2] = oz0;
|
||||
v[1]->attrib[FRAG_ATTRIB_WPOS][2] = oz1;
|
||||
v[2]->attrib[FRAG_ATTRIB_WPOS][2] = oz2;
|
||||
}
|
||||
_swrast_Triangle( ctx, v[0], v[1], v[2] );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,12 +26,12 @@
|
|||
*/
|
||||
|
||||
|
||||
#include "glheader.h"
|
||||
#include "imports.h"
|
||||
#include "context.h"
|
||||
#include "macros.h"
|
||||
#include "mtypes.h"
|
||||
#include "light.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/context.h"
|
||||
#include "main/macros.h"
|
||||
#include "main/mtypes.h"
|
||||
#include "main/light.h"
|
||||
|
||||
#include "tnl.h"
|
||||
#include "t_context.h"
|
||||
|
|
|
|||
|
|
@ -49,8 +49,8 @@
|
|||
#ifndef _T_CONTEXT_H
|
||||
#define _T_CONTEXT_H
|
||||
|
||||
#include "glheader.h"
|
||||
#include "mtypes.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/mtypes.h"
|
||||
|
||||
#include "math/m_matrix.h"
|
||||
#include "math/m_vector.h"
|
||||
|
|
|
|||
|
|
@ -25,11 +25,11 @@
|
|||
* Keith Whitwell <keith@tungstengraphics.com>
|
||||
*/
|
||||
|
||||
#include "glheader.h"
|
||||
#include "context.h"
|
||||
#include "imports.h"
|
||||
#include "state.h"
|
||||
#include "mtypes.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/context.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/state.h"
|
||||
#include "main/mtypes.h"
|
||||
|
||||
#include "t_context.h"
|
||||
#include "t_pipeline.h"
|
||||
|
|
|
|||
|
|
@ -35,16 +35,16 @@
|
|||
#include "context.h"
|
||||
#include "macros.h"
|
||||
#include "imports.h"
|
||||
#include "prog_instruction.h"
|
||||
#include "prog_statevars.h"
|
||||
#include "prog_execute.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
#include "shader/prog_statevars.h"
|
||||
#include "shader/prog_execute.h"
|
||||
#include "swrast/s_context.h"
|
||||
#include "swrast/s_texfilter.h"
|
||||
|
||||
#include "tnl.h"
|
||||
#include "t_context.h"
|
||||
#include "t_pipeline.h"
|
||||
|
||||
#include "swrast/s_context.h"
|
||||
#include "swrast/s_texfilter.h"
|
||||
|
||||
/**
|
||||
* XXX the texture sampling code in this module is a bit of a hack.
|
||||
|
|
|
|||
|
|
@ -33,11 +33,11 @@
|
|||
#include "glheader.h"
|
||||
#include "macros.h"
|
||||
#include "enums.h"
|
||||
#include "program.h"
|
||||
#include "prog_instruction.h"
|
||||
#include "prog_parameter.h"
|
||||
#include "prog_print.h"
|
||||
#include "prog_statevars.h"
|
||||
#include "shader/program.h"
|
||||
#include "shader/prog_instruction.h"
|
||||
#include "shader/prog_parameter.h"
|
||||
#include "shader/prog_print.h"
|
||||
#include "shader/prog_statevars.h"
|
||||
#include "t_context.h" /* NOTE: very light dependency on this */
|
||||
#include "t_vp_build.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
#ifndef _TNL_H
|
||||
#define _TNL_H
|
||||
|
||||
#include "mtypes.h"
|
||||
#include "main/mtypes.h"
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
#ifndef _VBO_H
|
||||
#define _VBO_H
|
||||
|
||||
#include "mtypes.h"
|
||||
#include "main/mtypes.h"
|
||||
|
||||
struct _mesa_prim {
|
||||
GLuint mode:8;
|
||||
|
|
|
|||
|
|
@ -25,11 +25,11 @@
|
|||
* Keith Whitwell <keith@tungstengraphics.com>
|
||||
*/
|
||||
|
||||
#include "mtypes.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/mtypes.h"
|
||||
#include "main/api_arrayelt.h"
|
||||
#include "vbo.h"
|
||||
#include "vbo_context.h"
|
||||
#include "imports.h"
|
||||
#include "api_arrayelt.h"
|
||||
|
||||
/* Reach out and grab this to use as the default:
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -26,14 +26,14 @@
|
|||
*/
|
||||
|
||||
|
||||
#include "api_arrayelt.h"
|
||||
#include "glheader.h"
|
||||
#include "imports.h"
|
||||
#include "context.h"
|
||||
#include "macros.h"
|
||||
#include "mtypes.h"
|
||||
#include "dlist.h"
|
||||
#include "vtxfmt.h"
|
||||
#include "main/api_arrayelt.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/imports.h"
|
||||
#include "main/context.h"
|
||||
#include "main/macros.h"
|
||||
#include "main/mtypes.h"
|
||||
#include "main/dlist.h"
|
||||
#include "main/vtxfmt.h"
|
||||
|
||||
#include "vbo_context.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#ifndef __VBO_EXEC_H__
|
||||
#define __VBO_EXEC_H__
|
||||
|
||||
#include "mtypes.h"
|
||||
#include "main/mtypes.h"
|
||||
#include "vbo.h"
|
||||
#include "vbo_attrib.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -30,16 +30,16 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
* Keith Whitwell <keith@tungstengraphics.com>
|
||||
*/
|
||||
|
||||
#include "glheader.h"
|
||||
#include "context.h"
|
||||
#include "macros.h"
|
||||
#include "vtxfmt.h"
|
||||
#include "dlist.h"
|
||||
#include "state.h"
|
||||
#include "light.h"
|
||||
#include "api_arrayelt.h"
|
||||
#include "api_noop.h"
|
||||
#include "dispatch.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/context.h"
|
||||
#include "main/macros.h"
|
||||
#include "main/vtxfmt.h"
|
||||
#include "main/dlist.h"
|
||||
#include "main/state.h"
|
||||
#include "main/light.h"
|
||||
#include "main/api_arrayelt.h"
|
||||
#include "main/api_noop.h"
|
||||
#include "glapi/dispatch.h"
|
||||
|
||||
#include "vbo_context.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -25,12 +25,12 @@
|
|||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include "glheader.h"
|
||||
#include "context.h"
|
||||
#include "state.h"
|
||||
#include "api_validate.h"
|
||||
#include "api_noop.h"
|
||||
#include "dispatch.h"
|
||||
#include "main/glheader.h"
|
||||
#include "main/context.h"
|
||||
#include "main/state.h"
|
||||
#include "main/api_validate.h"
|
||||
#include "main/api_noop.h"
|
||||
#include "glapi/dispatch.h"
|
||||
|
||||
#include "vbo_context.h"
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue