Mesa (master): scons: export drawllvm after actually checking that llvm is present

2010-02-09 Thread Zack Rusin
Module: Mesa
Branch: master
Commit: 08e2eab8a430402c12a551c539bbc68f1f857def
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=08e2eab8a430402c12a551c539bbc68f1f857def

Author: Zack Rusin 
Date:   Wed Feb 10 00:07:51 2010 -0500

scons: export drawllvm after actually checking that llvm is present

---

 SConstruct |   13 ++---
 1 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/SConstruct b/SConstruct
index fa67d14..2e00ec4 100644
--- a/SConstruct
+++ b/SConstruct
@@ -83,6 +83,11 @@ machine = env['machine']
 platform = env['platform']
 drawllvm = 'llvmpipe' in env['drivers']
 
+# LLVM support in the Draw module
+if drawllvm:
+env.Tool('llvm')
+if not env.has_key('LLVM_VERSION'):
+   drawllvm = False
 
 # derived options
 x86 = machine == 'x86'
@@ -168,13 +173,7 @@ if dri:
 
 # LLVM support in the Draw module
 if drawllvm:
-   # See also http://www.scons.org/wiki/UsingPkgConfig
-# currently  --ldflags --libsdisabled since the driver will force the 
correct linkage
-env.Tool('llvm')
-if not env.has_key('LLVM_VERSION'):
-   drawllvm = False
-   else:
-   env.Append(CPPDEFINES = ['DRAW_LLVM'])
+env.Append(CPPDEFINES = ['DRAW_LLVM'])
 
 # libGL
 if platform in ('linux', 'freebsd', 'darwin'):

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): egl_dri2: Only allocate config if we're going to keep it

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: c19dab7c5929bc70633002111bbb2b496a90899e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c19dab7c5929bc70633002111bbb2b496a90899e

Author: Kristian Høgsberg 
Date:   Tue Feb  9 21:01:04 2010 -0500

egl_dri2: Only allocate config if we're going to keep it

Small optimization.

---

 src/egl/drivers/dri2/egl_dri2.c |   67 ++-
 1 files changed, 31 insertions(+), 36 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 08e7e01..5d36c49 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -107,7 +107,7 @@ EGLint dri2_to_egl_attribute_map[] = {
EGL_RED_SIZE,   /* __DRI_ATTRIB_RED_SIZE */
EGL_GREEN_SIZE, /* __DRI_ATTRIB_GREEN_SIZE */
EGL_BLUE_SIZE,  /* __DRI_ATTRIB_BLUE_SIZE */
-   0,  /* __DRI_ATTRIB_LUMINANCE_SIZE */
+   EGL_LUMINANCE_SIZE, /* __DRI_ATTRIB_LUMINANCE_SIZE */
EGL_ALPHA_SIZE, /* __DRI_ATTRIB_ALPHA_SIZE */
0,  /* __DRI_ATTRIB_ALPHA_MASK_SIZE */
EGL_DEPTH_SIZE, /* __DRI_ATTRIB_DEPTH_SIZE */
@@ -157,24 +157,17 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig 
*dri_config, int id,
 {
struct dri2_egl_config *conf;
struct dri2_egl_display *dri2_dpy;
+   _EGLConfig base;
unsigned int attrib, value, double_buffer;
EGLint key, bind_to_texture_rgb, bind_to_texture_rgba;
int i;
 
dri2_dpy = disp->DriverData;
-   conf = malloc(sizeof *conf);
-   if (conf == NULL)
-  return;
-
-   conf->dri_config = dri_config;
-   _eglInitConfig(&conf->base, disp, id);
+   _eglInitConfig(&base, disp, id);

i = 0;
while (dri2_dpy->core->indexConfigAttrib(dri_config, i++, &attrib, &value)) 
{
   switch (attrib) {
-  case 0:
-break;
-
   case __DRI_ATTRIB_RENDER_TYPE:
 if (value & __DRI_ATTRIB_RGBA_BIT)
value = EGL_RGB_BUFFER;
@@ -182,7 +175,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig 
*dri_config, int id,
value = EGL_LUMINANCE_BUFFER;
 else
/* not valid */;
-_eglSetConfigKey(&conf->base, EGL_COLOR_BUFFER_TYPE, value);
+_eglSetConfigKey(&base, EGL_COLOR_BUFFER_TYPE, value);
 break;  
 
   case __DRI_ATTRIB_CONFIG_CAVEAT:
@@ -192,7 +185,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig 
*dri_config, int id,
 value = EGL_SLOW_CONFIG;
 else
value = EGL_NONE;
-_eglSetConfigKey(&conf->base, EGL_CONFIG_CAVEAT, value);
+_eglSetConfigKey(&base, EGL_CONFIG_CAVEAT, value);
  break;
 
   case __DRI_ATTRIB_BIND_TO_TEXTURE_RGB:
@@ -210,7 +203,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig 
*dri_config, int id,
   default:
 key = dri2_to_egl_attribute_map[attrib];
 if (key != 0)
-   _eglSetConfigKey(&conf->base, key, value);
+   _eglSetConfigKey(&base, key, value);
 break;
   }
}
@@ -222,44 +215,45 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig 
*dri_config, int id,
 * we ignore all double buffer configs and manipulate the buffer we
 * return in the getBuffer callback to get the behaviour we want. */
 
-   if (double_buffer) {
-  free(conf);
+   if (double_buffer)
   return;
-   }
-
-   /* EGL_SWAP_BEHAVIOR_PRESERVED_BIT */
 
if (visual != NULL) {
-  if (depth != _eglGetConfigKey(&conf->base, EGL_BUFFER_SIZE)) {
-free(conf);
+  if (depth != _eglGetConfigKey(&base, EGL_BUFFER_SIZE))
 return;
-  }
 
-  _eglSetConfigKey(&conf->base, EGL_SURFACE_TYPE,
-  EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT);
-  _eglSetConfigKey(&conf->base, EGL_NATIVE_VISUAL_ID, visual->visual_id);
-  _eglSetConfigKey(&conf->base, EGL_NATIVE_VISUAL_TYPE, visual->_class);
+  _eglSetConfigKey(&base, EGL_SURFACE_TYPE,
+  EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT |
+  EGL_SWAP_BEHAVIOR_PRESERVED_BIT);
+
+  _eglSetConfigKey(&base, EGL_NATIVE_VISUAL_ID, visual->visual_id);
+  _eglSetConfigKey(&base, EGL_NATIVE_VISUAL_TYPE, visual->_class);
} else {
-  _eglSetConfigKey(&conf->base, EGL_SURFACE_TYPE,
+  _eglSetConfigKey(&base, EGL_SURFACE_TYPE,
   EGL_PIXMAP_BIT | EGL_PBUFFER_BIT);
}
 
-   _eglSetConfigKey(&conf->base, EGL_BIND_TO_TEXTURE_RGB, bind_to_texture_rgb);
-   if (_eglGetConfigKey(&conf->base, EGL_ALPHA_SIZE) > 0)
-  _eglSetConfigKey(&conf->base,
+   _eglSetConfigKey(&base, EGL_NATIVE_RENDERABLE, EGL_TRUE);
+   _eglSetConfigKey(&base, EGL_BIND_TO_TEXTURE_RGB, bind_to_texture_rgb);
+   if (_eglGetConfigKey(&base, EGL_ALPHA_SIZE) > 0)
+  _eglSetConfigKey(&base,
   EGL_BIND_TO_TEXTURE_RGBA, bind_to_texture_rgba);
 
/* EGL_OPENGL_ES_BIT, EGL_OPENVG_BIT, EGL_OPENGL_ES2

Mesa (master): egl_dri2: Initialize config attributes with visual id and class from X

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: c3c1a7e1d9357a6ba5b8092b3b0b9c873737e53d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c3c1a7e1d9357a6ba5b8092b3b0b9c873737e53d

Author: Kristian Høgsberg 
Date:   Tue Feb  9 20:49:40 2010 -0500

egl_dri2: Initialize config attributes with visual id and class from X

---

 src/egl/drivers/dri2/egl_dri2.c |   74 ++
 1 files changed, 58 insertions(+), 16 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index a1a89e9..08e7e01 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -87,7 +87,6 @@ struct dri2_egl_surface
__DRIbuffer  buffers[5];
int  buffer_count;
xcb_xfixes_region_t  region;
-   int  have_back;
int  have_fake_front;
int  swap_interval;
 };
@@ -153,7 +152,8 @@ EGLint dri2_to_egl_attribute_map[] = {
 };
 
 static void
-dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id)
+dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
+   int depth, xcb_visualtype_t *visual)
 {
struct dri2_egl_config *conf;
struct dri2_egl_display *dri2_dpy;
@@ -215,21 +215,39 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig 
*dri_config, int id)
   }
}
 
-   /* EGL_SWAP_BEHAVIOR_PRESERVED_BIT */
+   /* In EGL, double buffer or not isn't a config attribute.  Pixmaps
+* surfaces are always single buffered, pbuffer surfaces are always
+* back buffers and windows can be either, selected by passing an
+* attribute at window surface construction time.  To support this
+* we ignore all double buffer configs and manipulate the buffer we
+* return in the getBuffer callback to get the behaviour we want. */
 
-   /* FIXME: Figure out how to get the visual ID and types */
if (double_buffer) {
+  free(conf);
+  return;
+   }
+
+   /* EGL_SWAP_BEHAVIOR_PRESERVED_BIT */
+
+   if (visual != NULL) {
+  if (depth != _eglGetConfigKey(&conf->base, EGL_BUFFER_SIZE)) {
+free(conf);
+return;
+  }
+
   _eglSetConfigKey(&conf->base, EGL_SURFACE_TYPE,
   EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT);
-  _eglSetConfigKey(&conf->base, EGL_NATIVE_VISUAL_ID, 0x21);
-  _eglSetConfigKey(&conf->base, EGL_NATIVE_VISUAL_TYPE,
-  XCB_VISUAL_CLASS_TRUE_COLOR);
+  _eglSetConfigKey(&conf->base, EGL_NATIVE_VISUAL_ID, visual->visual_id);
+  _eglSetConfigKey(&conf->base, EGL_NATIVE_VISUAL_TYPE, visual->_class);
} else {
   _eglSetConfigKey(&conf->base, EGL_SURFACE_TYPE,
   EGL_PIXMAP_BIT | EGL_PBUFFER_BIT);
}
+
_eglSetConfigKey(&conf->base, EGL_BIND_TO_TEXTURE_RGB, bind_to_texture_rgb);
-   _eglSetConfigKey(&conf->base, EGL_BIND_TO_TEXTURE_RGBA, 
bind_to_texture_rgba);
+   if (_eglGetConfigKey(&conf->base, EGL_ALPHA_SIZE) > 0)
+  _eglSetConfigKey(&conf->base,
+  EGL_BIND_TO_TEXTURE_RGBA, bind_to_texture_rgba);
 
/* EGL_OPENGL_ES_BIT, EGL_OPENVG_BIT, EGL_OPENGL_ES2_BIT */
_eglSetConfigKey(&conf->base, EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT);
@@ -261,7 +279,6 @@ dri2_process_buffers(struct dri2_egl_surface *dri2_surf,
 
dri2_surf->buffer_count = count;
dri2_surf->have_fake_front = 0;
-   dri2_surf->have_back = 0;
 
/* This assumes the DRI2 buffer attachment tokens matches the
 * __DRIbuffer tokens. */
@@ -271,10 +288,14 @@ dri2_process_buffers(struct dri2_egl_surface *dri2_surf,
   dri2_surf->buffers[i].pitch = buffers[i].pitch;
   dri2_surf->buffers[i].cpp = buffers[i].cpp;
   dri2_surf->buffers[i].flags = buffers[i].flags;
+
+  /* We only use the DRI drivers single buffer configs.  This
+   * means that if we try to render to a window, DRI2 will give us
+   * the fake front buffer, which we'll use as a back buffer.
+   * Note that EGL doesn't require that several clients rendering
+   * to the same window must see the same aux buffers. */
   if (dri2_surf->buffers[i].attachment == __DRI_BUFFER_FAKE_FRONT_LEFT)
  dri2_surf->have_fake_front = 1;
-  if (dri2_surf->buffers[i].attachment == __DRI_BUFFER_BACK_LEFT)
- dri2_surf->have_back = 1;
}
 
if (dri2_surf->region != XCB_NONE)
@@ -448,7 +469,9 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
xcb_generic_error_t *error;
drm_magic_t magic;
xcb_screen_iterator_t s;
-   int i;
+   xcb_depth_iterator_t d;
+   xcb_visualtype_t *visuals;
+   int i, j, id;
 
dri2_dpy = malloc(sizeof *dri2_dpy);
if (!dri2_dpy)
@@ -608,8 +631,27 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
if (!dri2_bind_extensions(dri2_dpy, dri2_core_extensions, extensions))
   goto cleanup_dri_screen;
 
-   for (i = 0; driver_configs[i]; i++)
-  dri2_add_config(disp, driver_configs[i], i + 1);
+   s = xcb_setup_roots_iterator(x

Mesa (master): eglinfo: Also print visual type, assuming X visual types

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: 368bb3dc2b640f862b857b2329499cad34a78846
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=368bb3dc2b640f862b857b2329499cad34a78846

Author: Kristian Høgsberg 
Date:   Tue Feb  9 19:59:33 2010 -0500

eglinfo: Also print visual type, assuming X visual types

This may not make a lot of sense for non-X EGL, but for EGL under X
it's very useful.

---

 progs/egl/eglinfo.c |   15 ++-
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/progs/egl/eglinfo.c b/progs/egl/eglinfo.c
index 9664667..37bc22e 100644
--- a/progs/egl/eglinfo.c
+++ b/progs/egl/eglinfo.c
@@ -37,6 +37,10 @@
 #define MAX_MODES 1000
 #define MAX_SCREENS 10
 
+/* These are X visual types, so if you're running eglinfo under
+ * something not X, they probably don't make sense. */
+static const char *vnames[] = { "SG", "GS", "SC", "PC", "TC", "DC" };
+
 /**
  * Print table of all available configurations.
  */
@@ -49,15 +53,15 @@ PrintConfigs(EGLDisplay d)
eglGetConfigs(d, configs, MAX_CONFIGS, &numConfigs);
 
printf("Configurations:\n");
-   printf(" bf lv colorbuffer dp st  msvis cav bi  renderable  
supported\n");
-   printf("  id sz  l  r  g  b  a th cl ns bid eat nd gl es es2 vg 
surfaces \n");
+   printf(" bf lv colorbuffer dp st  msvis   cav bi  renderable  
supported\n");
+   printf("  id sz  l  r  g  b  a th cl ns bid   eat nd gl es es2 vg 
surfaces \n");

printf("-\n");
for (i = 0; i < numConfigs; i++) {
   EGLint id, size, level;
   EGLint red, green, blue, alpha;
   EGLint depth, stencil;
   EGLint renderable, surfaces;
-  EGLint vid, caveat, bindRgb, bindRgba;
+  EGLint vid, vtype, caveat, bindRgb, bindRgba;
   EGLint samples, sampleBuffers;
   char surfString[100] = "";
 
@@ -72,6 +76,7 @@ PrintConfigs(EGLDisplay d)
   eglGetConfigAttrib(d, configs[i], EGL_DEPTH_SIZE, &depth);
   eglGetConfigAttrib(d, configs[i], EGL_STENCIL_SIZE, &stencil);
   eglGetConfigAttrib(d, configs[i], EGL_NATIVE_VISUAL_ID, &vid);
+  eglGetConfigAttrib(d, configs[i], EGL_NATIVE_VISUAL_TYPE, &vtype);
 
   eglGetConfigAttrib(d, configs[i], EGL_CONFIG_CAVEAT, &caveat);
   eglGetConfigAttrib(d, configs[i], EGL_BIND_TO_TEXTURE_RGB, &bindRgb);
@@ -95,11 +100,11 @@ PrintConfigs(EGLDisplay d)
   if (strlen(surfString) > 0)
  surfString[strlen(surfString) - 1] = 0;
 
-  printf("0x%02x %2d %2d %2d %2d %2d %2d %2d %2d %2d%2d 0x%03x ",
+  printf("0x%02x %2d %2d %2d %2d %2d %2d %2d %2d %2d%2d 0x%02x%s ",
  id, size, level,
  red, green, blue, alpha,
  depth, stencil,
- samples, sampleBuffers, vid);
+ samples, sampleBuffers, vid, vtype < 6 ? vnames[vtype] : "--");
   printf("  %c  %c  %c  %c  %c   %c %s\n",
  (caveat != EGL_NONE) ? 'y' : ' ',
  (bindRgba) ? 'a' : (bindRgb) ? 'y' : ' ',

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): egl_dri2: Allow pbuffer and pixmap surfaces for all configs

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: 360faf80ca763e195425ee7cadfee64002c8cd98
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=360faf80ca763e195425ee7cadfee64002c8cd98

Author: Kristian Høgsberg 
Date:   Tue Feb  9 16:06:23 2010 -0500

egl_dri2: Allow pbuffer and pixmap surfaces for all configs

---

 src/egl/drivers/dri2/egl_dri2.c |   15 +++
 1 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 04d698e..a1a89e9 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -217,20 +217,19 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig 
*dri_config, int id)
 
/* EGL_SWAP_BEHAVIOR_PRESERVED_BIT */
 
+   /* FIXME: Figure out how to get the visual ID and types */
if (double_buffer) {
-  /* FIXME: Figure out how to get the visual ID and types */
-  _eglSetConfigKey(&conf->base, EGL_SURFACE_TYPE, EGL_WINDOW_BIT);
+  _eglSetConfigKey(&conf->base, EGL_SURFACE_TYPE,
+  EGL_WINDOW_BIT | EGL_PIXMAP_BIT | EGL_PBUFFER_BIT);
   _eglSetConfigKey(&conf->base, EGL_NATIVE_VISUAL_ID, 0x21);
   _eglSetConfigKey(&conf->base, EGL_NATIVE_VISUAL_TYPE,
   XCB_VISUAL_CLASS_TRUE_COLOR);
} else {
-  _eglSetConfigKey(&conf->base,
-  EGL_SURFACE_TYPE, EGL_PIXMAP_BIT | EGL_PBUFFER_BIT);
-  _eglSetConfigKey(&conf->base,
-  EGL_BIND_TO_TEXTURE_RGB, bind_to_texture_rgb);
-  _eglSetConfigKey(&conf->base,
-  EGL_BIND_TO_TEXTURE_RGBA, bind_to_texture_rgba);
+  _eglSetConfigKey(&conf->base, EGL_SURFACE_TYPE,
+  EGL_PIXMAP_BIT | EGL_PBUFFER_BIT);
}
+   _eglSetConfigKey(&conf->base, EGL_BIND_TO_TEXTURE_RGB, bind_to_texture_rgb);
+   _eglSetConfigKey(&conf->base, EGL_BIND_TO_TEXTURE_RGBA, 
bind_to_texture_rgba);
 
/* EGL_OPENGL_ES_BIT, EGL_OPENVG_BIT, EGL_OPENGL_ES2_BIT */
_eglSetConfigKey(&conf->base, EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): st/xorg: fix a silly offset bug in xv

2010-02-09 Thread Zack Rusin
Module: Mesa
Branch: mesa_7_7_branch
Commit: 2d3262d47d57d71a55e5c61d4910c1f38cb0bb8c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2d3262d47d57d71a55e5c61d4910c1f38cb0bb8c

Author: Zack Rusin 
Date:   Tue Feb  9 21:12:57 2010 -0500

st/xorg: fix a silly offset bug in xv

we were multiplying the difference in the wrong direction.

---

 src/gallium/state_trackers/xorg/xorg_xv.c |   11 +--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_xv.c 
b/src/gallium/state_trackers/xorg/xorg_xv.c
index 5f6d749..eb5ce88 100644
--- a/src/gallium/state_trackers/xorg/xorg_xv.c
+++ b/src/gallium/state_trackers/xorg/xorg_xv.c
@@ -389,6 +389,9 @@ draw_yuv(struct xorg_xv_port_priv *port,
 {
struct pipe_texture **textures = port->yuv[port->current_set];
 
+   /*debug_printf("  draw_yuv([%d, %d, %d ,%d], [%d, %d, %d, %d])\n",
+src_x, src_y, src_w, src_h,
+dst_x, dst_y, dst_w, dst_h);*/
renderer_draw_yuv(port->r,
  src_x, src_y, src_w, src_h,
  dst_x, dst_y, dst_w, dst_h,
@@ -490,6 +493,9 @@ display_video(ScrnInfoPtr pScrn, struct xorg_xv_port_priv 
*pPriv, int id,
exaMoveInPixmap(pPixmap);
dst = exaGetPixmapDriverPrivate(pPixmap);
 
+   /*debug_printf("display_video([%d, %d, %d, %d], [%d, %d, %d, %d])\n",
+ src_x, src_y, src_w, src_h, dstX, dstY, dst_w, dst_h);*/
+
if (dst && !dst->tex) {
xorg_exa_set_shared_usage(pPixmap);
pScrn->pScreen->ModifyPixmapHeader(pPixmap, 0, 0, 0, 0, 0, NULL);
@@ -540,8 +546,9 @@ display_video(ScrnInfoPtr pScrn, struct xorg_xv_port_priv 
*pPriv, int id,
   offset_w = dst_w - w;
   offset_h = dst_h - h;
 
-  draw_yuv(pPriv, src_x + offset_x*diff_x, src_y + offset_y*diff_y,
-   src_w - offset_w*diff_x, src_h - offset_h*diff_x,
+  draw_yuv(pPriv,
+   src_x + offset_x*diff_x, src_y + offset_y*diff_y,
+   src_w - offset_w*diff_x, src_h - offset_h*diff_y,
x, y, w, h);
 
   pbox++;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Fix printf formatings to match te values.

2010-02-09 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 77e6fb17d96ed9d9b3c2f52999e93da12a466405
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=77e6fb17d96ed9d9b3c2f52999e93da12a466405

Author: Pauli Nieminen 
Date:   Wed Feb 10 03:20:02 2010 +0200

radeon: Fix printf formatings to match te values.

---

 src/mesa/drivers/dri/radeon/radeon_fbo.c |2 +-
 src/mesa/drivers/dri/radeon/radeon_texture.c |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c 
b/src/mesa/drivers/dri/radeon/radeon_fbo.c
index 01fe933..56dcc50 100644
--- a/src/mesa/drivers/dri/radeon/radeon_fbo.c
+++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c
@@ -530,7 +530,7 @@ radeon_render_texture(GLcontext * ctx,
GLuint imageOffset;
 
   radeon_print(RADEON_TEXTURE, RADEON_TRACE,
-   "%s(%p, fb %p, rrb %p, att att)\n",
+   "%s(%p, fb %p, rrb %p, att %p)\n",
__func__, ctx, fb, rrb, att);
 
(void) fb;
diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c 
b/src/mesa/drivers/dri/radeon/radeon_texture.c
index 9179a3f..9b9d90b 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -284,7 +284,7 @@ void radeonGenerateMipmap(GLcontext* ctx, GLenum target, 
struct gl_texture_objec
 
radeon_print(RADEON_TEXTURE, RADEON_TRACE,
"%s(%p, target %s, tex %p)\n",
-   __func__, _mesa_lookup_enum_by_nr(target),
+   __func__, ctx, _mesa_lookup_enum_by_nr(target),
texObj);
 
if (bo && radeon_bo_is_referenced_by_cs(bo, rmesa->cmdbuf.cs)) {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Define EXT_framebuffer_object constants to match hw.

2010-02-09 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 42026a8ccf4f02d4648d65763e18d8bf98eb9bfd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=42026a8ccf4f02d4648d65763e18d8bf98eb9bfd

Author: Pauli Nieminen 
Date:   Wed Feb 10 03:00:12 2010 +0200

radeon: Define EXT_framebuffer_object constants to match hw.

This hides the assertion failure in glean/fbo test. Underlying
problem when same texture is set twice to different attachments
will cause assertion.

---

 src/mesa/drivers/dri/r200/r200_context.c |2 ++
 src/mesa/drivers/dri/r300/r300_context.c |3 +++
 src/mesa/drivers/dri/r600/r600_context.c |2 ++
 src/mesa/drivers/dri/radeon/radeon_context.c |2 ++
 4 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_context.c 
b/src/mesa/drivers/dri/r200/r200_context.c
index 8986191..6ecd46e 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -360,6 +360,7 @@ GLboolean r200CreateContext( const __GLcontextModes 
*glVisual,
ctx->Const.Max3DTextureLevels = 9;
ctx->Const.MaxCubeTextureLevels = 12;
ctx->Const.MaxTextureRectSize = 2048;
+   ctx->Const.MaxRenderbufferSize = 2048;
 
ctx->Const.MaxTextureMaxAnisotropy = 16.0;
 
@@ -390,6 +391,7 @@ GLboolean r200CreateContext( const __GLcontextModes 
*glVisual,
ctx->Const.VertexProgram.MaxNativeAddressRegs = 1;
 
ctx->Const.MaxDrawBuffers = 1;
+   ctx->Const.MaxColorAttachments = 1;
 
_mesa_set_mvp_with_dp4( ctx, GL_TRUE );
 
diff --git a/src/mesa/drivers/dri/r300/r300_context.c 
b/src/mesa/drivers/dri/r300/r300_context.c
index 7c21efb..fe2ed22 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -345,11 +345,13 @@ static void r300InitConstValues(GLcontext *ctx, 
radeonScreenPtr screen)
ctx->Const.MaxTextureLevels = 13;
ctx->Const.MaxCubeTextureLevels = 13;
ctx->Const.MaxTextureRectSize = 4096;
+   ctx->Const.MaxRenderbufferSize = 4096;
}
else {
ctx->Const.MaxTextureLevels = 12;
ctx->Const.MaxCubeTextureLevels = 12;
ctx->Const.MaxTextureRectSize = 2048;
+   ctx->Const.MaxRenderbufferSize = 2048;
}
 
ctx->Const.MinPointSize = 1.0;
@@ -363,6 +365,7 @@ static void r300InitConstValues(GLcontext *ctx, 
radeonScreenPtr screen)
ctx->Const.MaxLineWidthAA = R300_LINESIZE_MAX;
 
ctx->Const.MaxDrawBuffers = 1;
+   ctx->Const.MaxColorAttachments = 1;
 
/* currently bogus data */
if (r300->options.hw_tcl_enabled) {
diff --git a/src/mesa/drivers/dri/r600/r600_context.c 
b/src/mesa/drivers/dri/r600/r600_context.c
index 5b7d7c2..f575e74 100644
--- a/src/mesa/drivers/dri/r600/r600_context.c
+++ b/src/mesa/drivers/dri/r600/r600_context.c
@@ -270,6 +270,8 @@ static void r600InitConstValues(GLcontext *ctx, 
radeonScreenPtr screen)
ctx->Const.MaxLineWidthAA = 0x / 8.0;
 
ctx->Const.MaxDrawBuffers = 1; /* hw supports 8 */
+   ctx->Const.MaxColorAttachments = 1;
+   ctx->Const.MaxRenderbufferSize = 4096;
 
/* 256 for reg-based consts, inline consts also supported */
ctx->Const.VertexProgram.MaxInstructions = 8192; /* in theory no limit 
*/
diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c 
b/src/mesa/drivers/dri/radeon/radeon_context.c
index 475e93b..4625af1 100644
--- a/src/mesa/drivers/dri/radeon/radeon_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_context.c
@@ -317,6 +317,8 @@ r100CreateContext( const __GLcontextModes *glVisual,
rmesa->boxes = 0;
 
ctx->Const.MaxDrawBuffers = 1;
+   ctx->Const.MaxColorAttachments = 1;
+   ctx->Const.MaxRenderbufferSize = 2048;
 
_mesa_set_mvp_with_dp4( ctx, GL_TRUE );
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: move all limit/ constant assertions into check_context_limits()

2010-02-09 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 4bce2fb30e9cfb58831016e0bdda73abedd0a078
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4bce2fb30e9cfb58831016e0bdda73abedd0a078

Author: Brian Paul 
Date:   Tue Feb  9 18:05:42 2010 -0700

mesa: move all limit/constant assertions into check_context_limits()

---

 src/mesa/main/context.c |   60 +++---
 1 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index 591aa11..2165af2 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -495,12 +495,6 @@ _mesa_init_constants(GLcontext *ctx)
 {
assert(ctx);
 
-   assert(MAX_TEXTURE_LEVELS >= MAX_3D_TEXTURE_LEVELS);
-   assert(MAX_TEXTURE_LEVELS >= MAX_CUBE_TEXTURE_LEVELS);
-
-   /* Max texture size should be <= max viewport size (render to texture) */
-   assert((1 << (MAX_TEXTURE_LEVELS - 1)) <= MAX_WIDTH);
-
/* Constants, may be overriden (usually only reduced) by device drivers */
ctx->Const.MaxTextureLevels = MAX_TEXTURE_LEVELS;
ctx->Const.Max3DTextureLevels = MAX_3D_TEXTURE_LEVELS;
@@ -571,26 +565,6 @@ _mesa_init_constants(GLcontext *ctx)
 
/* GL_EXT_provoking_vertex */
ctx->Const.QuadsFollowProvokingVertexConvention = GL_TRUE;
-
-   /* sanity checks */
-   ASSERT(ctx->Const.MaxTextureUnits == MIN2(ctx->Const.MaxTextureImageUnits,
- ctx->Const.MaxTextureCoordUnits));
-   ASSERT(ctx->Const.FragmentProgram.MaxLocalParams <= 
MAX_PROGRAM_LOCAL_PARAMS);
-   ASSERT(ctx->Const.VertexProgram.MaxLocalParams <= MAX_PROGRAM_LOCAL_PARAMS);
-   ASSERT(ctx->Const.MaxCombinedTextureImageUnits <= 
MAX_COMBINED_TEXTURE_IMAGE_UNITS);
-   ASSERT(ctx->Const.MaxTextureCoordUnits <= MAX_COMBINED_TEXTURE_IMAGE_UNITS);
-   ASSERT(MAX_COMBINED_TEXTURE_IMAGE_UNITS <= 32); /* GLbitfield size limit */
-
-   ASSERT(MAX_NV_FRAGMENT_PROGRAM_TEMPS <= MAX_PROGRAM_TEMPS);
-   ASSERT(MAX_NV_VERTEX_PROGRAM_TEMPS <= MAX_PROGRAM_TEMPS);
-   ASSERT(MAX_NV_VERTEX_PROGRAM_INPUTS <= VERT_ATTRIB_MAX);
-   ASSERT(MAX_NV_VERTEX_PROGRAM_OUTPUTS <= VERT_RESULT_MAX);
-
-   /* check that we don't exceed the size of various bitfields */
-   ASSERT(VERT_RESULT_MAX <=
- (8 * sizeof(ctx->VertexProgram._Current->Base.OutputsWritten)));
-   ASSERT(FRAG_ATTRIB_MAX <=
- (8 * sizeof(ctx->FragmentProgram._Current->Base.InputsRead)));
 }
 
 
@@ -601,17 +575,36 @@ _mesa_init_constants(GLcontext *ctx)
 static void
 check_context_limits(GLcontext *ctx)
 {
-   /* Many context limits/constants are limited by the size of
-* internal arrays.
-*/
+   /* check that we don't exceed the size of various bitfields */
+   assert(VERT_RESULT_MAX <=
+ (8 * sizeof(ctx->VertexProgram._Current->Base.OutputsWritten)));
+   assert(FRAG_ATTRIB_MAX <=
+ (8 * sizeof(ctx->FragmentProgram._Current->Base.InputsRead)));
+
+   assert(MAX_COMBINED_TEXTURE_IMAGE_UNITS <= 8 * sizeof(GLbitfield));
+
+   /* shader-related checks */
+   assert(ctx->Const.FragmentProgram.MaxLocalParams <= 
MAX_PROGRAM_LOCAL_PARAMS);
+   assert(ctx->Const.VertexProgram.MaxLocalParams <= MAX_PROGRAM_LOCAL_PARAMS);
+
+   assert(MAX_NV_FRAGMENT_PROGRAM_TEMPS <= MAX_PROGRAM_TEMPS);
+   assert(MAX_NV_VERTEX_PROGRAM_TEMPS <= MAX_PROGRAM_TEMPS);
+   assert(MAX_NV_VERTEX_PROGRAM_INPUTS <= VERT_ATTRIB_MAX);
+   assert(MAX_NV_VERTEX_PROGRAM_OUTPUTS <= VERT_RESULT_MAX);
+
+   /* Texture unit checks */
assert(ctx->Const.MaxTextureImageUnits <= MAX_TEXTURE_IMAGE_UNITS);
assert(ctx->Const.MaxTextureCoordUnits <= MAX_TEXTURE_COORD_UNITS);
assert(ctx->Const.MaxTextureUnits <= MAX_TEXTURE_IMAGE_UNITS);
assert(ctx->Const.MaxTextureUnits <= MAX_TEXTURE_COORD_UNITS);
-
+   assert(ctx->Const.MaxTextureUnits == MIN2(ctx->Const.MaxTextureImageUnits,
+ ctx->Const.MaxTextureCoordUnits));
+   assert(ctx->Const.MaxCombinedTextureImageUnits <= 
MAX_COMBINED_TEXTURE_IMAGE_UNITS);
+   assert(ctx->Const.MaxTextureCoordUnits <= MAX_COMBINED_TEXTURE_IMAGE_UNITS);
/* number of coord units cannot be greater than number of image units */
assert(ctx->Const.MaxTextureCoordUnits <= ctx->Const.MaxTextureImageUnits);
 
+   /* Texture size checks */
assert(ctx->Const.MaxTextureLevels <= MAX_TEXTURE_LEVELS);
assert(ctx->Const.Max3DTextureLevels <= MAX_3D_TEXTURE_LEVELS);
assert(ctx->Const.MaxCubeTextureLevels <= MAX_CUBE_TEXTURE_LEVELS);
@@ -622,6 +615,13 @@ check_context_limits(GLcontext *ctx)
assert((1 << (ctx->Const.MaxCubeTextureLevels - 1)) <= MAX_WIDTH);
assert((1 << (ctx->Const.Max3DTextureLevels - 1)) <= MAX_WIDTH);
 
+   /* Texture level checks */
+   assert(MAX_TEXTURE_LEVELS >= MAX_3D_TEXTURE_LEVELS);
+   assert(MAX_TEXTURE_LEVELS >= MAX_CUBE_TEXTURE_LEVELS);
+
+   /* Max texture size should be <= max viewport size (render to texture) */
+   assert((1 << (MAX_TEXTURE_LEVELS - 1)) <= MAX_WIDTH);
+
assert(ctx->Const.MaxViewportWidth <= MAX_WIDT

Mesa (master): Drop incorrectly revived files during the ' gallium-nopointsizeminmax' merge.

2010-02-09 Thread Francisco Jerez
Module: Mesa
Branch: master
Commit: 96100f39be32a2c5148f8ace35c22b6dcc30f75f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=96100f39be32a2c5148f8ace35c22b6dcc30f75f

Author: Francisco Jerez 
Date:   Wed Feb 10 00:36:22 2010 +0100

Drop incorrectly revived files during the 'gallium-nopointsizeminmax' merge.

---

 src/gallium/drivers/nv10/nv10_state.c |  590 -
 src/gallium/drivers/nv20/nv20_state.c |  583 
 2 files changed, 0 insertions(+), 1173 deletions(-)

diff --git a/src/gallium/drivers/nv10/nv10_state.c 
b/src/gallium/drivers/nv10/nv10_state.c
deleted file mode 100644
index 6f674d6..000
--- a/src/gallium/drivers/nv10/nv10_state.c
+++ /dev/null
@@ -1,590 +0,0 @@
-#include "draw/draw_context.h"
-#include "pipe/p_state.h"
-#include "pipe/p_defines.h"
-#include "pipe/p_shader_tokens.h"
-#include "pipe/p_inlines.h"
-
-#include "tgsi/tgsi_parse.h"
-
-#include "nv10_context.h"
-#include "nv10_state.h"
-
-static void *
-nv10_blend_state_create(struct pipe_context *pipe,
-   const struct pipe_blend_state *cso)
-{
-   struct nv10_blend_state *cb;
-
-   cb = MALLOC(sizeof(struct nv10_blend_state));
-
-   cb->b_enable = cso->blend_enable ? 1 : 0;
-   cb->b_srcfunc = ((nvgl_blend_func(cso->alpha_src_factor)<<16) |
-(nvgl_blend_func(cso->rgb_src_factor)));
-   cb->b_dstfunc = ((nvgl_blend_func(cso->alpha_dst_factor)<<16) |
-(nvgl_blend_func(cso->rgb_dst_factor)));
-
-   cb->c_mask = (((cso->colormask & PIPE_MASK_A) ? (0x01<<24) : 0) |
- ((cso->colormask & PIPE_MASK_R) ? (0x01<<16) : 0) |
- ((cso->colormask & PIPE_MASK_G) ? (0x01<< 8) : 0) |
- ((cso->colormask & PIPE_MASK_B) ? (0x01<< 0) : 0));
-
-   cb->d_enable = cso->dither ? 1 : 0;
-
-   return (void *)cb;
-}
-
-static void
-nv10_blend_state_bind(struct pipe_context *pipe, void *blend)
-{
-   struct nv10_context *nv10 = nv10_context(pipe);
-
-   nv10->blend = (struct nv10_blend_state*)blend;
-
-   nv10->dirty |= NV10_NEW_BLEND;
-}
-
-static void
-nv10_blend_state_delete(struct pipe_context *pipe, void *hwcso)
-{
-   FREE(hwcso);
-}
-
-
-static INLINE unsigned
-wrap_mode(unsigned wrap) {
-   unsigned ret;
-
-   switch (wrap) {
-   case PIPE_TEX_WRAP_REPEAT:
-   ret = NV10TCL_TX_FORMAT_WRAP_S_REPEAT;
-   break;
-   case PIPE_TEX_WRAP_MIRROR_REPEAT:
-   ret = NV10TCL_TX_FORMAT_WRAP_S_MIRRORED_REPEAT;
-   break;
-   case PIPE_TEX_WRAP_CLAMP_TO_EDGE:
-   ret = NV10TCL_TX_FORMAT_WRAP_S_CLAMP_TO_EDGE;
-   break;
-   case PIPE_TEX_WRAP_CLAMP_TO_BORDER:
-   ret = NV10TCL_TX_FORMAT_WRAP_S_CLAMP_TO_BORDER;
-   break;
-   case PIPE_TEX_WRAP_CLAMP:
-   ret = NV10TCL_TX_FORMAT_WRAP_S_CLAMP;
-   break;
-   case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE:
-   case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER:
-   case PIPE_TEX_WRAP_MIRROR_CLAMP:
-   default:
-   NOUVEAU_ERR("unknown wrap mode: %d\n", wrap);
-   ret = NV10TCL_TX_FORMAT_WRAP_S_REPEAT;
-   break;
-   }
-
-   return ret >> NV10TCL_TX_FORMAT_WRAP_S_SHIFT;
-}
-
-static void *
-nv10_sampler_state_create(struct pipe_context *pipe,
- const struct pipe_sampler_state *cso)
-{
-   struct nv10_sampler_state *ps;
-   uint32_t filter = 0;
-
-   ps = MALLOC(sizeof(struct nv10_sampler_state));
-
-   ps->wrap = ((wrap_mode(cso->wrap_s) << NV10TCL_TX_FORMAT_WRAP_S_SHIFT) |
-   (wrap_mode(cso->wrap_t) << NV10TCL_TX_FORMAT_WRAP_T_SHIFT));
-
-   ps->en = 0;
-   if (cso->max_anisotropy > 1.0) {
-   /* no idea, binary driver sets it, works without it.. meh.. */
-   ps->wrap |= (1 << 5);
-
-/* if (cso->max_anisotropy >= 16.0) {
-   ps->en |= NV10TCL_TX_ENABLE_ANISO_16X;
-   } else
-   if (cso->max_anisotropy >= 12.0) {
-   ps->en |= NV10TCL_TX_ENABLE_ANISO_12X;
-   } else
-   if (cso->max_anisotropy >= 10.0) {
-   ps->en |= NV10TCL_TX_ENABLE_ANISO_10X;
-   } else
-   if (cso->max_anisotropy >= 8.0) {
-   ps->en |= NV10TCL_TX_ENABLE_ANISO_8X;
-   } else
-   if (cso->max_anisotropy >= 6.0) {
-   ps->en |= NV10TCL_TX_ENABLE_ANISO_6X;
-   } else
-   if (cso->max_anisotropy >= 4.0) {
-   ps->en |= NV10TCL_TX_ENABLE_ANISO_4X;
-   } else {
-   ps->en |= NV10TCL_TX_ENABLE_ANISO_2X;
-   }*/
-   }
-
-   switch (cso->mag_img_filter) {
-   case PIPE_TEX_FILTER_LINEAR:
-   filter |= NV10TCL_TX_FILTER_MAGNIFY_L

Mesa (master): r300g: One less assert.

2010-02-09 Thread Corbin Simpson
Module: Mesa
Branch: master
Commit: dbc13401915b345df584a621b1b2aaa9030bfac5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dbc13401915b345df584a621b1b2aaa9030bfac5

Author: Corbin Simpson 
Date:   Tue Feb  9 13:58:53 2010 -0800

r300g: One less assert.

This entire codepath needs to be cleaned to be more pliant towards
shader failure.

---

 src/gallium/drivers/r300/r300_tgsi_to_rc.c |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_tgsi_to_rc.c 
b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
index a88a947..1c82fcc 100644
--- a/src/gallium/drivers/r300/r300_tgsi_to_rc.c
+++ b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
@@ -146,7 +146,6 @@ static unsigned translate_opcode(unsigned opcode)
 }
 
 debug_printf("r300: Unknown TGSI/RC opcode: %i\n", opcode);
-assert(0);
 return RC_OPCODE_ILLEGAL_OPCODE;
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r300g: Don't write non-existent bit on non-r500.

2010-02-09 Thread Corbin Simpson
Module: Mesa
Branch: master
Commit: 8c85002951e29462a7c2852b4b59fe0d438da137
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c85002951e29462a7c2852b4b59fe0d438da137

Author: Corbin Simpson 
Date:   Tue Feb  9 13:53:30 2010 -0800

r300g: Don't write non-existent bit on non-r500.

Might help with compiz being funky with MRTs.

---

 src/gallium/drivers/r300/r300_emit.c |   15 +++
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_emit.c 
b/src/gallium/drivers/r300/r300_emit.c
index ae83511..de6ba65 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -381,6 +381,7 @@ void r500_emit_fs_constant_buffer(struct r300_context* r300,
 void r300_emit_fb_state(struct r300_context* r300, void* state)
 {
 struct pipe_framebuffer_state* fb = (struct pipe_framebuffer_state*)state;
+struct r300_screen* r300screen = r300_screen(r300->context.screen);
 struct r300_texture* tex;
 struct pipe_surface* surf;
 int i;
@@ -399,10 +400,16 @@ void r300_emit_fb_state(struct r300_context* r300, void* 
state)
 
 /* Set the number of colorbuffers. */
 if (fb->nr_cbufs > 1) {
-OUT_CS_REG(R300_RB3D_CCTL,
-R300_RB3D_CCTL_NUM_MULTIWRITES(fb->nr_cbufs) |
-R300_RB3D_CCTL_INDEPENDENT_COLOR_CHANNEL_MASK_ENABLE |
-R300_RB3D_CCTL_INDEPENDENT_COLORFORMAT_ENABLE_ENABLE);
+if (r300screen->caps->is_r500) {
+OUT_CS_REG(R300_RB3D_CCTL,
+R300_RB3D_CCTL_NUM_MULTIWRITES(fb->nr_cbufs) |
+R300_RB3D_CCTL_INDEPENDENT_COLORFORMAT_ENABLE_ENABLE |
+R300_RB3D_CCTL_INDEPENDENT_COLOR_CHANNEL_MASK_ENABLE);
+} else {
+OUT_CS_REG(R300_RB3D_CCTL,
+R300_RB3D_CCTL_NUM_MULTIWRITES(fb->nr_cbufs) |
+R300_RB3D_CCTL_INDEPENDENT_COLORFORMAT_ENABLE_ENABLE);
+}
 } else {
 OUT_CS_REG(R300_RB3D_CCTL, 0x0);
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r300g: Correct colorbuffer measurements.

2010-02-09 Thread Corbin Simpson
Module: Mesa
Branch: master
Commit: 67b60b99348f50ead92e617a5085422da9d8c022
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=67b60b99348f50ead92e617a5085422da9d8c022

Author: Corbin Simpson 
Date:   Tue Feb  9 13:50:54 2010 -0800

r300g: Correct colorbuffer measurements.

Also clarify changes from pointminmax.

---

 src/gallium/drivers/r300/r300_screen.c  |4 ++-
 src/gallium/drivers/r300/r300_state.c   |   41 +--
 src/gallium/drivers/r300/r300_texture.c |1 -
 3 files changed, 36 insertions(+), 10 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_screen.c 
b/src/gallium/drivers/r300/r300_screen.c
index da4ec54..13cd04a 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -186,8 +186,10 @@ static float r300_get_paramf(struct pipe_screen* pscreen, 
int param)
  * rendering limits. 2048 pixels should be enough for anybody. */
 if (r300screen->caps->is_r500) {
 return 4096.0f;
+} else if (r300screen->caps->is_r400) {
+return 4021.0f;
 } else {
-return 2048.0f;
+return 2560.0f;
 }
 case PIPE_CAP_MAX_TEXTURE_ANISOTROPY:
 return 16.0f;
diff --git a/src/gallium/drivers/r300/r300_state.c 
b/src/gallium/drivers/r300/r300_state.c
index d07e908..5fe9285 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -493,6 +493,8 @@ static void
const struct pipe_framebuffer_state* state)
 {
 struct r300_context* r300 = r300_context(pipe);
+struct r300_screen* r300screen = r300_screen(pipe->screen);
+unsigned max_width, max_height;
 uint32_t zbuffer_bpp = 0;
 
 r300->fb_state.size = (10 * state->nr_cbufs) +
@@ -505,6 +507,20 @@ static void
 return;
 }
 
+if (r300screen->caps->is_r500) {
+max_width = max_height = 4096;
+} else if (r300screen->caps->is_r400) {
+max_width = max_height = 4021;
+} else {
+max_width = max_height = 2560;
+}
+
+if (state->width > max_width || state->height > max_height) {
+debug_printf("r300: Implementation error: Render targets are too "
+"big in %s, refusing to bind framebuffer state!\n", __FUNCTION__);
+return;
+}
+
 if (r300->draw) {
 draw_flush(r300->draw);
 }
@@ -607,6 +623,7 @@ static void r300_set_polygon_stipple(struct pipe_context* 
pipe,
 static void* r300_create_rs_state(struct pipe_context* pipe,
   const struct pipe_rasterizer_state* state)
 {
+struct r300_screen* r300screen = r300_screen(pipe->screen);
 struct r300_rs_state* rs = CALLOC_STRUCT(r300_rs_state);
 
 /* Copy rasterizer state for Draw. */
@@ -621,20 +638,28 @@ static void* r300_create_rs_state(struct pipe_context* 
pipe,
 /* If bypassing TCL, or if no TCL engine is present, turn off the HW TCL.
  * Else, enable HW TCL and force Draw's TCL off. */
 if (state->bypass_vs_clip_and_viewport ||
-!r300_screen(pipe->screen)->caps->has_tcl) {
+!r300screen->caps->has_tcl) {
 rs->vap_control_status |= R300_VAP_TCL_BYPASS;
 }
 
 rs->point_size = pack_float_16_6x(state->point_size) |
 (pack_float_16_6x(state->point_size) << R300_POINTSIZE_X_SHIFT);
 
-/* set hw limits - clamping done by state tracker in vs or point_size
-   XXX always need to emit this? */
-rs->point_minmax =
-((int)(0.0 * 6.0) <<
- R300_GA_POINT_MINMAX_MIN_SHIFT) |
-((int)(4096.0 * 6.0) <<
- R300_GA_POINT_MINMAX_MAX_SHIFT);
+/* Point minimum and maximum sizes. This register has to be emitted,
+ * and it'd be a step backwards to put it in invariant state. */
+if (r300screen->caps->is_r500) {
+rs->point_minmax =
+((int)(0.0 * 6.0) << R300_GA_POINT_MINMAX_MIN_SHIFT) |
+((int)(4096.0 * 6.0) << R300_GA_POINT_MINMAX_MAX_SHIFT);
+} else if (r300screen->caps->is_r500) {
+rs->point_minmax =
+((int)(0.0 * 6.0) << R300_GA_POINT_MINMAX_MIN_SHIFT) |
+((int)(4021.0 * 6.0) << R300_GA_POINT_MINMAX_MAX_SHIFT);
+} else {
+rs->point_minmax =
+((int)(0.0 * 6.0) << R300_GA_POINT_MINMAX_MIN_SHIFT) |
+((int)(2560.0 * 6.0) << R300_GA_POINT_MINMAX_MAX_SHIFT);
+}
 
 rs->line_control = pack_float_16_6x(state->line_width) |
 R300_GA_LINE_CNTL_END_TYPE_COMP;
diff --git a/src/gallium/drivers/r300/r300_texture.c 
b/src/gallium/drivers/r300/r300_texture.c
index 67bf8ce..417a573 100644
--- a/src/gallium/drivers/r300/r300_texture.c
+++ b/src/gallium/drivers/r300/r300_texture.c
@@ -80,7 +80,6 @@ static void r300_setup_texture_state(struct r300_screen* 
screen, struct r300_tex
 state->format2 |= R500_TXHEIGHT_BIT11;
 }
 }
-asse

Mesa (master): r300g: Be ever-so-slightly more useful on bad shaders.

2010-02-09 Thread Corbin Simpson
Module: Mesa
Branch: master
Commit: 5a27a77d009b44dcd2eb35c3b66bd88cf5005d24
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a27a77d009b44dcd2eb35c3b66bd88cf5005d24

Author: Corbin Simpson 
Date:   Tue Feb  9 13:50:38 2010 -0800

r300g: Be ever-so-slightly more useful on bad shaders.

---

 src/gallium/drivers/r300/r300_tgsi_to_rc.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_tgsi_to_rc.c 
b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
index 941ec17..a88a947 100644
--- a/src/gallium/drivers/r300/r300_tgsi_to_rc.c
+++ b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
@@ -29,6 +29,7 @@
 #include "tgsi/tgsi_scan.h"
 #include "tgsi/tgsi_util.h"
 
+#include "util/u_debug.h"
 
 static unsigned translate_opcode(unsigned opcode)
 {
@@ -144,7 +145,8 @@ static unsigned translate_opcode(unsigned opcode)
 case TGSI_OPCODE_KIL: return RC_OPCODE_KIL;
 }
 
-fprintf(stderr, "Unknown opcode: %i\n", opcode);
+debug_printf("r300: Unknown TGSI/RC opcode: %i\n", opcode);
+assert(0);
 return RC_OPCODE_ILLEGAL_OPCODE;
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): egl_dri2: Implement eglBindTexImage()

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: bba5a98dfde705d898ada1c8eac41cc7c6275fe2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bba5a98dfde705d898ada1c8eac41cc7c6275fe2

Author: Kristian Høgsberg 
Date:   Tue Feb  9 15:49:28 2010 -0500

egl_dri2: Implement eglBindTexImage()

---

 src/egl/drivers/dri2/egl_dri2.c |   85 ++
 1 files changed, 76 insertions(+), 9 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index b43e911..04d698e 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -58,15 +58,16 @@ struct dri2_egl_driver
 
 struct dri2_egl_display
 {
-   xcb_connection_t *conn;
-   int   dri2_major;
-   int   dri2_minor;
-   __DRIscreen  *dri_screen;
-   void *driver;
-   __DRIcoreExtension   *core;
-   __DRIdri2Extension   *dri2;
-   __DRI2flushExtension *flush;
-   int   fd;
+   xcb_connection_t *conn;
+   int   dri2_major;
+   int   dri2_minor;
+   __DRIscreen  *dri_screen;
+   void *driver;
+   __DRIcoreExtension   *core;
+   __DRIdri2Extension   *dri2;
+   __DRI2flushExtension *flush;
+   __DRItexBufferExtension  *tex_buffer;
+   int   fd;
 
__DRIdri2LoaderExtension  loader_extension;
const __DRIextension *extensions[2];
@@ -389,6 +390,7 @@ static struct dri2_extension_match dri2_driver_extensions[] 
= {
 
 static struct dri2_extension_match dri2_core_extensions[] = {
{ __DRI2_FLUSH, 1, offsetof(struct dri2_egl_display, flush) },
+   { __DRI_TEX_BUFFER, 2, offsetof(struct dri2_egl_display, tex_buffer) },
{ NULL }
 };
 
@@ -964,6 +966,69 @@ dri2_copy_buffers(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *surf,
return EGL_TRUE;
 }
 
+static EGLBoolean
+dri2_bind_tex_image(_EGLDriver *drv,
+   _EGLDisplay *disp, _EGLSurface *surf, EGLint buffer)
+{
+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
+   struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
+   struct dri2_egl_context *dri2_ctx;
+   _EGLContext *ctx;
+   GLint format, target;
+
+   ctx = _eglGetCurrentContext();
+   dri2_ctx = dri2_egl_context(ctx);
+
+   if (buffer != EGL_BACK_BUFFER) {
+  _eglError(EGL_BAD_PARAMETER, "eglBindTexImage");
+  return EGL_FALSE;
+   }
+
+   /* We allow binding pixmaps too... Not conformat, but we can do it
+* for free and it's useful for X compositors.  Supposedly there's
+* a EGL_NOKIA_texture_from_pixmap extension that allows that, but
+* I couldn't find it at this time. */
+   if (dri2_surf->base.Type & (EGL_PBUFFER_BIT | EGL_PIXMAP_BIT) == 0) {
+  _eglError(EGL_BAD_SURFACE, "eglBindTexImage");
+  return EGL_FALSE;
+   }
+
+   switch (dri2_surf->base.TextureFormat) {
+   case EGL_TEXTURE_RGB:
+  format = __DRI_TEXTURE_FORMAT_RGB;
+  break;
+   case EGL_TEXTURE_RGBA:
+  format = __DRI_TEXTURE_FORMAT_RGBA;
+  break;
+   default:
+  _eglError(EGL_BAD_MATCH, "eglBindTexImage");
+  return EGL_FALSE;
+   }
+
+   switch (dri2_surf->base.TextureTarget) {
+   case EGL_TEXTURE_2D:
+  target = GL_TEXTURE_2D;
+  break;
+   default:
+  _eglError(EGL_BAD_PARAMETER, "eglBindTexImage");
+  return EGL_FALSE;
+   }
+
+   (*dri2_dpy->tex_buffer->setTexBuffer2)(dri2_ctx->dri_context,
+ target, format,
+ dri2_surf->dri_drawable);
+
+   return dri2_surf->base.BoundToTexture = EGL_TRUE;
+}
+
+static EGLBoolean
+dri2_release_tex_image(_EGLDriver *drv,
+  _EGLDisplay *disp, _EGLSurface *surf, EGLint buffer)
+{
+   return EGL_TRUE;
+}
+
+
 /**
  * This is the main entrypoint into the driver, called by libEGL.
  * Create a new _EGLDriver object and init its dispatch table.
@@ -991,6 +1056,8 @@ _eglMain(const char *args)
dri2_drv->base.API.WaitClient = dri2_wait_client;
dri2_drv->base.API.WaitNative = dri2_wait_native;
dri2_drv->base.API.CopyBuffers = dri2_copy_buffers;
+   dri2_drv->base.API.BindTexImage = dri2_bind_tex_image;
+   dri2_drv->base.API.ReleaseTexImage = dri2_release_tex_image;
 
dri2_drv->base.Name = "DRI2";
dri2_drv->base.Unload = dri2_unload;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): configure.ac: Enable egl demos when --enable-egl is passed

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: 1ebc5681545786c247aacec8198a0fccef93b5d8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1ebc5681545786c247aacec8198a0fccef93b5d8

Author: Kristian Høgsberg 
Date:   Tue Feb  9 15:54:59 2010 -0500

configure.ac: Enable egl demos when --enable-egl is passed

---

 configure.ac |4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/configure.ac b/configure.ac
index a273a16..27405bb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -924,6 +924,10 @@ if test "x$enable_egl" = xyes; then
 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS dri2"
 fi
 fi
+
+if test "$with_demos" = yes; then
+PROGRAM_DIRS="$PROGRAM_DIRS egl"
+fi
 fi
 AC_SUBST([EGL_LIB_DEPS])
 AC_SUBST([EGL_DRIVERS_DIRS])

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): xeglgears: Add test case for eglBindTexImage()

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: ab487f7ffab6fc00f29c140d4f30c5ca2e008f9b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab487f7ffab6fc00f29c140d4f30c5ca2e008f9b

Author: Kristian Høgsberg 
Date:   Tue Feb  9 15:52:30 2010 -0500

xeglgears: Add test case for eglBindTexImage()

---

 progs/egl/xeglgears.c |   99 +
 1 files changed, 75 insertions(+), 24 deletions(-)

diff --git a/progs/egl/xeglgears.c b/progs/egl/xeglgears.c
index 9fdf474..efb63ef 100644
--- a/progs/egl/xeglgears.c
+++ b/progs/egl/xeglgears.c
@@ -237,6 +237,7 @@ gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat 
width,
 static void
 draw(void)
 {
+   glClearColor(0.2, 0.2, 0.2, 0.2);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
glPushMatrix();
@@ -319,8 +320,6 @@ init(void)
glEndList();
 
glEnable(GL_NORMALIZE);
-
-   glClearColor(0.2, 0.2, 0.2, 0.0);
 }
 
 
@@ -529,6 +528,43 @@ egl_manager_destroy(struct egl_manager *eman)
free(eman);
 }
 
+enum { GEARS_WINDOW, GEARS_PIXMAP, GEARS_PBUFFER_COPY, GEARS_PBUFFER_TEXTURE };
+
+static void
+texture_gears(struct egl_manager *eman)
+{
+   static const GLint verts[12] =
+  { -5, -6, -10,  5, -6, -10,  -5, 4, 10,  5, 4, 10 };
+   static const GLint tex_coords[8] = { 0, 0,  1, 0,  0, 1,  1, 1 };
+   static const GLuint indices[4] = { 0, 1, 2, 3 };
+
+   eglMakeCurrent(eman->dpy, eman->pix, eman->pix, eman->ctx);
+
+   glClearColor(0, 0, 0, 0);
+   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+   glEnable(GL_TEXTURE_2D);
+   glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT);
+   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+   
+   glEnableClientState(GL_VERTEX_ARRAY);
+   glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+   glVertexPointer(3, GL_INT, 0, verts);
+   glTexCoordPointer(2, GL_INT, 0, tex_coords);
+
+   eglBindTexImage(eman->dpy, eman->pbuf, EGL_BACK_BUFFER);
+
+   glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_INT, indices);
+
+   glDisableClientState(GL_VERTEX_ARRAY);
+   glDisableClientState(GL_COLOR_ARRAY);
+   glDisable(GL_TEXTURE_2D);
+
+   eglReleaseTexImage(eman->dpy, eman->pbuf, EGL_BACK_BUFFER);
+}
+
 static void
 event_loop(struct egl_manager *eman, EGLint surface_type, EGLint w, EGLint h)
 {
@@ -597,17 +633,25 @@ event_loop(struct egl_manager *eman, EGLint surface_type, 
EGLint w, EGLint h)
  if (angle > 3600.0)
  angle -= 3600.0;
 
+if (surface_type == GEARS_PBUFFER_TEXTURE)
+eglMakeCurrent(eman->dpy, eman->pbuf, eman->pbuf, eman->ctx);
+
  draw();
  switch (surface_type) {
- case EGL_WINDOW_BIT:
+ case GEARS_WINDOW:
 eglSwapBuffers(eman->dpy, eman->win);
 break;
- case EGL_PBUFFER_BIT:
-eglWaitClient();
-if (!eglCopyBuffers(eman->dpy, eman->pbuf, eman->xpix))
-   break;
+ case GEARS_PBUFFER_TEXTURE:
+ case GEARS_PBUFFER_COPY:
+   if (surface_type == GEARS_PBUFFER_TEXTURE) {
+  texture_gears(eman);
+   } else {
+  if (!eglCopyBuffers(eman->dpy, eman->pbuf, eman->xpix))
+ break;
+   }
+   eglWaitClient();
 /* fall through */
- case EGL_PIXMAP_BIT:
+ case GEARS_PIXMAP:
 eglWaitClient();
 for (x = 0; x < w; x += orig_w) {
for (y = 0; y < h; y += orig_h) {
@@ -645,7 +689,8 @@ usage(void)
printf("  -fullscreen run in fullscreen mode\n");
printf("  -info   display OpenGL renderer info\n");
printf("  -pixmap use pixmap surface\n");
-   printf("  -pbufferuse pbuffer surface\n");
+   printf("  -pbuffer-copy   use pbuffer surface and 
eglCopyBuffers\n");
+   printf("  -pbuffer-textureuse pbuffer surface and 
eglBindTexImage\n");
 }
  
 
@@ -657,7 +702,7 @@ main(int argc, char *argv[])
char *dpyName = NULL;
struct egl_manager *eman;
EGLint attribs[] = {
-  EGL_SURFACE_TYPE, 0, /* filled later */
+  EGL_SURFACE_TYPE, EGL_WINDOW_BIT, /* may be changed later */
   EGL_RED_SIZE, 1,
   EGL_GREEN_SIZE, 1,
   EGL_BLUE_SIZE, 1,
@@ -666,7 +711,7 @@ main(int argc, char *argv[])
   EGL_NONE
};
char win_title[] = "xeglgears (window/pixmap/pbuffer)";
-   EGLint surface_type = EGL_WINDOW_BIT;
+   EGLint surface_type = GEARS_WINDOW;
GLboolean printInfo = GL_FALSE;
GLboolean fullscreen = GL_FALSE;
EGLBoolean ret;
@@ -684,10 +729,16 @@ main(int argc, char *argv[])
  fullscreen = GL_TRUE;
   }
   else if (strcmp(argv[i], "-pixmap") == 0) {
- surface_type = EGL_PIXMAP_BIT;
+ surface_type = GEARS_PIXMAP;
+attribs[1] = EGL_PIXMAP_BIT;
   }
-  else if (strcmp

Mesa (master): dri_interface: Introduce DRI tokens for the texBuffer texture formats

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: debf00e5fc3828f63e0f99d72c7fa6cd6ce012c5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=debf00e5fc3828f63e0f99d72c7fa6cd6ce012c5

Author: Kristian Høgsberg 
Date:   Tue Feb  9 15:26:14 2010 -0500

dri_interface: Introduce DRI tokens for the texBuffer texture formats

This used to take GLX tokens, but the DRI interface can't depend on GLX
defines.  We fix this by introducing DRI tokens that have the same value
as the GLX texture format tokens.

---

 include/GL/internal/dri_interface.h   |7 +++
 include/GL/internal/glcore.h  |4 
 src/gallium/state_trackers/dri/dri_drawable.c |2 +-
 src/mesa/drivers/dri/intel/intel_tex_image.c  |8 
 src/mesa/drivers/dri/r200/r200_texstate.c |8 
 src/mesa/drivers/dri/r300/r300_texstate.c |8 
 src/mesa/drivers/dri/r600/r600_texstate.c |6 +++---
 src/mesa/drivers/dri/radeon/radeon_texstate.c |8 
 8 files changed, 27 insertions(+), 24 deletions(-)

diff --git a/include/GL/internal/dri_interface.h 
b/include/GL/internal/dri_interface.h
index ec6238f..58540d6 100644
--- a/include/GL/internal/dri_interface.h
+++ b/include/GL/internal/dri_interface.h
@@ -230,6 +230,13 @@ struct __DRItexOffsetExtensionRec {
 };
 
 
+/* Valid values for format in the setTexBuffer2 function below.  These
+ * values match the GLX tokens for compatibility reasons, but we
+ * define them here since the DRI interface can't depend on GLX. */
+#define __DRI_TEXTURE_FORMAT_NONE0x20D8
+#define __DRI_TEXTURE_FORMAT_RGB 0x20D9
+#define __DRI_TEXTURE_FORMAT_RGBA0x20DA
+
 #define __DRI_TEX_BUFFER "DRI_TexBuffer"
 #define __DRI_TEX_BUFFER_VERSION 2
 struct __DRItexBufferExtensionRec {
diff --git a/include/GL/internal/glcore.h b/include/GL/internal/glcore.h
index 18f6576..547b111 100644
--- a/include/GL/internal/glcore.h
+++ b/include/GL/internal/glcore.h
@@ -178,8 +178,4 @@ typedef struct __GLcontextModesRec {
 #define GLX_TEXTURE_2D_BIT_EXT 0x0002
 #define GLX_TEXTURE_RECTANGLE_BIT_EXT  0x0004
 
-#define GLX_TEXTURE_FORMAT_NONE_EXT0x20D8
-#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
-#define GLX_TEXTURE_FORMAT_RGBA_EXT0x20DA
-
 #endif /* __gl_core_h_ */
diff --git a/src/gallium/state_trackers/dri/dri_drawable.c 
b/src/gallium/state_trackers/dri/dri_drawable.c
index f7ed660..ff21f2f 100644
--- a/src/gallium/state_trackers/dri/dri_drawable.c
+++ b/src/gallium/state_trackers/dri/dri_drawable.c
@@ -268,7 +268,7 @@ void dri2_set_tex_buffer2(__DRIcontext *pDRICtx, GLint 
target,
 void dri2_set_tex_buffer(__DRIcontext *pDRICtx, GLint target,
  __DRIdrawable *dPriv)
 {
-   dri2_set_tex_buffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
+   dri2_set_tex_buffer2(pDRICtx, target, __DRI_TEXTURE_FORMAT_RGBA, dPriv);
 }
 
 void
diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c 
b/src/mesa/drivers/dri/intel/intel_tex_image.c
index 6402141..d63292e 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_image.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_image.c
@@ -728,7 +728,7 @@ intelSetTexOffset(__DRIcontext *pDRICtx, GLint texname,
 
 void
 intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
-  GLint glx_texture_format,
+  GLint texture_format,
   __DRIdrawable *dPriv)
 {
struct gl_framebuffer *fb = dPriv->driverPrivate;
@@ -758,7 +758,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
if (rb->region == NULL)
   return;
 
-   if (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT)
+   if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
   internalFormat = GL_RGB;
else
   internalFormat = GL_RGBA;
@@ -788,7 +788,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
 
intelImage->face = target_to_face(target);
intelImage->level = level;
-   if (glx_texture_format == GLX_TEXTURE_FORMAT_RGB_EXT)
+   if (texture_format == __DRI_TEXTURE_FORMAT_RGB)
   texImage->TexFormat = MESA_FORMAT_XRGB;
else
   texImage->TexFormat = MESA_FORMAT_ARGB;
@@ -808,7 +808,7 @@ intelSetTexBuffer(__DRIcontext *pDRICtx, GLint target, 
__DRIdrawable *dPriv)
/* The old interface didn't have the format argument, so copy our
 * implementation's behavior at the time.
 */
-   intelSetTexBuffer2(pDRICtx, target, GLX_TEXTURE_FORMAT_RGBA_EXT, dPriv);
+   intelSetTexBuffer2(pDRICtx, target, __DRI_TEXTURE_FORMAT_RGBA, dPriv);
 }
 
 
diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c 
b/src/mesa/drivers/dri/r200/r200_texstate.c
index 458de08..9ccf30c 100644
--- a/src/mesa/drivers/dri/r200/r200_texstate.c
+++ b/src/mesa/drivers/dri/r200/r200_texstate.c
@@ -764,7 +764,7 @@ void r200SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
}
 }
 
-void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint 
glx_texture_format,
+void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLi

Mesa (master): egl_dri2: Use a helper function for looking up and binding extensions

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: 8c593d3ea9fa137290480e73aeebcf807c920f50
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c593d3ea9fa137290480e73aeebcf807c920f50

Author: Kristian Høgsberg 
Date:   Tue Feb  9 10:57:43 2010 -0500

egl_dri2: Use a helper function for looking up and binding extensions

---

 src/egl/drivers/dri2/egl_dri2.c |   79 +-
 1 files changed, 52 insertions(+), 27 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 9237889..b43e911 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -375,6 +375,56 @@ static const char dri_driver_format[] = "%.*s/%.*s_dri.so";
 
 static const char dri_driver_path[] = DEFAULT_DRIVER_DIR;
 
+struct dri2_extension_match {
+   const char *name;
+   int version;
+   int offset;
+};
+
+static struct dri2_extension_match dri2_driver_extensions[] = {
+   { __DRI_CORE, 1, offsetof(struct dri2_egl_display, core) },
+   { __DRI_DRI2, 1, offsetof(struct dri2_egl_display, dri2) },
+   { NULL }
+};
+
+static struct dri2_extension_match dri2_core_extensions[] = {
+   { __DRI2_FLUSH, 1, offsetof(struct dri2_egl_display, flush) },
+   { NULL }
+};
+
+static EGLBoolean
+dri2_bind_extensions(struct dri2_egl_display *dri2_dpy,
+struct dri2_extension_match *matches,
+const __DRIextension **extensions)
+{
+   int i, j, ret = EGL_TRUE;
+   void *field;
+
+   for (i = 0; extensions[i]; i++) {
+  _eglLog(_EGL_DEBUG, "DRI2: found extension `%s'", extensions[i]->name);
+  for (j = 0; matches[j].name; j++) {
+if (strcmp(extensions[i]->name, matches[j].name) == 0 &&
+extensions[i]->version >= matches[j].version) {
+   field = ((char *) dri2_dpy + matches[j].offset);
+   *(const __DRIextension **) field = extensions[i];
+   _eglLog(_EGL_INFO, "DRI2: found extension %s version %d",
+   extensions[i]->name, extensions[i]->version);
+}
+  }
+   }
+   
+   for (j = 0; matches[j].name; j++) {
+  field = ((char *) dri2_dpy + matches[j].offset);
+  if (*(const __DRIextension **) field == NULL) {
+_eglLog(_EGL_FATAL, "DRI2: did not find extension %s version %d",
+matches[j].name, matches[j].version);
+ret = EGL_FALSE;
+  }
+   }
+
+   return ret;
+}
+
 /**
  * Called via eglInitialize(), GLX_drv->API.Initialize().
  */
@@ -497,24 +547,8 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
   goto cleanup_driver;
}
 
-   for (i = 0; extensions[i]; i++) {
-  _eglLog(_EGL_DEBUG, "DRI2: found driver extension `%s'",
- extensions[i]->name);
-  if (strcmp(extensions[i]->name, __DRI_CORE) == 0)
-dri2_dpy->core = (__DRIcoreExtension *) extensions[i];
-  if (strcmp(extensions[i]->name, __DRI_DRI2) == 0)
-dri2_dpy->dri2 = (__DRIdri2Extension *) extensions[i];
-   }
-
-   if (dri2_dpy->core == NULL) {
-  _eglLog(_EGL_FATAL, "DRI2: driver has no core extension");
-  goto cleanup_driver;
-   }
-
-   if (dri2_dpy->dri2 == NULL) {
-  _eglLog(_EGL_FATAL, "DRI2: driver has no dri2 extension");
+   if (!dri2_bind_extensions(dri2_dpy, dri2_driver_extensions, extensions))
   goto cleanup_driver;
-   }
 
snprintf(path, sizeof path, "%.*s",
xcb_dri2_connect_device_name_length (connect),
@@ -570,17 +604,8 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
}
 
extensions = dri2_dpy->core->getExtensions(dri2_dpy->dri_screen);
-   for (i = 0; extensions[i]; i++) {
-  _eglLog(_EGL_DEBUG, "DRI2: found core extension `%s'",
- extensions[i]->name);
-  if ((strcmp(extensions[i]->name, __DRI2_FLUSH) == 0))
-dri2_dpy->flush = (__DRI2flushExtension *) extensions[i];
-   }
-
-   if (dri2_dpy->flush == NULL) {
-  _eglLog(_EGL_FATAL, "DRI2: driver doesn't support the flush extension");
+   if (!dri2_bind_extensions(dri2_dpy, dri2_core_extensions, extensions))
   goto cleanup_dri_screen;
-   }
 
for (i = 0; driver_configs[i]; i++)
   dri2_add_config(disp, driver_configs[i], i + 1);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): vmware: Update vmwgfx_drm.h to kernel version.

2010-02-09 Thread Thomas Hellstrom
Module: Mesa
Branch: mesa_7_7_branch
Commit: 3470d821baf5ffb9ab2e01edba5efe71e23088f1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3470d821baf5ffb9ab2e01edba5efe71e23088f1

Author: Thomas Hellstrom 
Date:   Tue Feb  9 22:54:15 2010 +0100

vmware: Update vmwgfx_drm.h to kernel version.

Signed-off-by: Thomas Hellstrom 

---

 src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h |8 
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h 
b/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h
index 1457966..47914bd 100644
--- a/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h
+++ b/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h
@@ -260,15 +260,23 @@ union drm_vmw_surface_reference_arg {
  * to the nearest kernel tick.
  * @fence_rep: User-space address of a struct drm_vmw_fence_rep cast to an
  * uint64_t.
+ * @version: Allows expanding the execbuf ioctl parameters without breaking
+ * backwards compatibility, since user-space will always tell the kernel
+ * which version it uses.
+ * @flags: Execbuf flags. None currently.
  *
  * Argument to the DRM_VMW_EXECBUF Ioctl.
  */
 
+#define DRM_VMW_EXECBUF_VERSION 0
+
 struct drm_vmw_execbuf_arg {
uint64_t commands;
uint32_t command_size;
uint32_t throttle_us;
uint64_t fence_rep;
+uint32_t version;
+uint32_t flags;
 };
 
 /**

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (refs/head/gallium-dynamicstencilref): docs: fix up documentation for stencil ref value changes

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: refs/head/gallium-dynamicstencilref
Commit: 98f8c4d0bb702c69fcddb504ddb702abc3aacc06
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=98f8c4d0bb702c69fcddb504ddb702abc3aacc06

Author: Roland Scheidegger 
Date:   Tue Feb  9 21:48:43 2010 +0100

docs: fix up documentation for stencil ref value changes

Also fix and clarify depth/stencil/alpha documentation a bit.

---

 src/gallium/docs/source/context.rst |5 +++--
 src/gallium/docs/source/cso/dsa.rst |   15 +--
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/gallium/docs/source/context.rst 
b/src/gallium/docs/source/context.rst
index a766957..9080add 100644
--- a/src/gallium/docs/source/context.rst
+++ b/src/gallium/docs/source/context.rst
@@ -49,8 +49,9 @@ Non-CSO State
 
 These pieces of state are too small, variable, and/or trivial to have CSO
 objects. They all follow simple, one-method binding calls, e.g.
-``set_edgeflags``.
-
+``set_blend_color``.
+* ``set_stencil_ref`` sets the stencil front and back reference values
+  which are used as comparison values in stencil test.
 * ``set_blend_color``
 * ``set_clip_state``
 * ``set_polygon_stipple``
diff --git a/src/gallium/docs/source/cso/dsa.rst 
b/src/gallium/docs/source/cso/dsa.rst
index 12abaa9..1bbe381 100644
--- a/src/gallium/docs/source/cso/dsa.rst
+++ b/src/gallium/docs/source/cso/dsa.rst
@@ -11,9 +11,9 @@ they are all stored in one structure.
 
 During actual execution, the order of operations done on fragments is always:
 
+* Alpha
 * Stencil
 * Depth
-* Alpha
 
 Depth Members
 -
@@ -28,15 +28,18 @@ func
 Stencil Members
 ---
 
-XXX document valuemask, writemask
-
 enabled
 Whether the stencil test is enabled. For the second stencil, whether the
-two-sided stencil is enabled.
+two-sided stencil is enabled. If two-sided stencil is disabled, the other
+fields for the second array member are not valid.
 func
 The stencil test function. One of PIPE_FUNC.
-ref_value
-Stencil test reference value; used for certain functions.
+valuemask
+Stencil test value mask; this is ANDed with the value in the stencil
+buffer and the reference value before doing the stencil comparison test.
+writemask
+Stencil test writemask; this controls which bits of the stencil buffer
+are written.
 fail_op
 The operation to carry out if the stencil test fails. One of
 PIPE_STENCIL_OP.

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium/auxiliary: add -D__STDC_CONSTANT_MACROS

2010-02-09 Thread Brian Paul
Module: Mesa
Branch: master
Commit: ed46e90f05195350c6861e9d3a4315cce86a9b3c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ed46e90f05195350c6861e9d3a4315cce86a9b3c

Author: Brian Paul 
Date:   Tue Feb  9 13:10:05 2010 -0700

gallium/auxiliary: add -D__STDC_CONSTANT_MACROS

Not sure why this is needed now, after the gallivm re-org.

---

 src/gallium/auxiliary/Makefile |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile
index 02c65a9..507ca6e 100644
--- a/src/gallium/auxiliary/Makefile
+++ b/src/gallium/auxiliary/Makefile
@@ -166,6 +166,9 @@ CPP_SOURCES += \
 endif
 
 
+LIBRARY_DEFINES += -D__STDC_CONSTANT_MACROS
+
+
 include ../Makefile.template
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): llvmpipe: lp_tile_surface.c isn't committed yet

2010-02-09 Thread Brian Paul
Module: Mesa
Branch: master
Commit: aa4ed6a0e61d4d1997c3602a1813eb14f41146f2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=aa4ed6a0e61d4d1997c3602a1813eb14f41146f2

Author: Brian Paul 
Date:   Tue Feb  9 13:07:58 2010 -0700

llvmpipe: lp_tile_surface.c isn't committed yet

---

 src/gallium/drivers/llvmpipe/Makefile |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/Makefile 
b/src/gallium/drivers/llvmpipe/Makefile
index e880042..be38a43 100644
--- a/src/gallium/drivers/llvmpipe/Makefile
+++ b/src/gallium/drivers/llvmpipe/Makefile
@@ -37,7 +37,6 @@ C_SOURCES = \
lp_surface.c \
lp_tex_sample_llvm.c \
lp_texture.c \
-   lp_tile_surface.c \
lp_tile_soa.c
 
 CPP_SOURCES = \

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): llvmpipe: remove .s rule (already in Makefile.template)

2010-02-09 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 822d951b5d3e07db0dd5cd609ebe2e9a7750f027
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=822d951b5d3e07db0dd5cd609ebe2e9a7750f027

Author: Brian Paul 
Date:   Tue Feb  9 13:08:23 2010 -0700

llvmpipe: remove .s rule (already in Makefile.template)

---

 src/gallium/drivers/llvmpipe/Makefile |5 -
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/Makefile 
b/src/gallium/drivers/llvmpipe/Makefile
index be38a43..3173251 100644
--- a/src/gallium/drivers/llvmpipe/Makefile
+++ b/src/gallium/drivers/llvmpipe/Makefile
@@ -48,11 +48,6 @@ lp_tile_soa.c: lp_tile_soa.py 
../../auxiliary/util/u_format_parse.py ../../auxil
python lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@
 
 
-# to make a .s file to inspect assembly code
-.c.s:
-   $(CC) -S $(INCLUDES) $(DEFINES) $(CFLAGS) $(LIBRARY_DEFINES) $<
-
-
 testprogs := lp_test_format\
 lp_test_blend  \
 lp_test_conv

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon: Add some debug output for fbo support

2010-02-09 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 4767d27ee32cc30ee00ab5265ecbb8eeefcab8c9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4767d27ee32cc30ee00ab5265ecbb8eeefcab8c9

Author: Pauli Nieminen 
Date:   Tue Feb  9 21:37:19 2010 +0200

radeon: Add some debug output for fbo support

---

 src/mesa/drivers/dri/radeon/radeon_common.h  |7 +++
 src/mesa/drivers/dri/radeon/radeon_fbo.c |   53 ++
 src/mesa/drivers/dri/radeon/radeon_span.c|8 
 src/mesa/drivers/dri/radeon/radeon_texture.c |   12 ++
 4 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_common.h 
b/src/mesa/drivers/dri/radeon/radeon_common.h
index f31f08e..cd01c99 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.h
+++ b/src/mesa/drivers/dri/radeon/radeon_common.h
@@ -48,6 +48,9 @@ void radeon_check_front_buffer_rendering(GLcontext *ctx);
 static inline struct radeon_renderbuffer *radeon_renderbuffer(struct 
gl_renderbuffer *rb)
 {
struct radeon_renderbuffer *rrb = (struct radeon_renderbuffer *)rb;
+   radeon_print(RADEON_MEMORY, RADEON_TRACE,
+   "%s(rb %p)\n",
+   __func__, rb);
if (rrb && rrb->base.ClassID == RADEON_RB_CLASS)
return rrb;
else
@@ -56,6 +59,10 @@ static inline struct radeon_renderbuffer 
*radeon_renderbuffer(struct gl_renderbu
 
 static inline struct radeon_renderbuffer *radeon_get_renderbuffer(struct 
gl_framebuffer *fb, int att_index)
 {
+   radeon_print(RADEON_MEMORY, RADEON_TRACE,
+   "%s(fb %p, index %d)\n",
+   __func__, fb, att_index);
+
if (att_index >= 0)
return 
radeon_renderbuffer(fb->Attachment[att_index].Renderbuffer);
else
diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c 
b/src/mesa/drivers/dri/radeon/radeon_fbo.c
index e780b9e..01fe933 100644
--- a/src/mesa/drivers/dri/radeon/radeon_fbo.c
+++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c
@@ -29,6 +29,7 @@
 #include "main/imports.h"
 #include "main/macros.h"
 #include "main/mtypes.h"
+#include "main/enums.h"
 #include "main/fbobject.h"
 #include "main/framebuffer.h"
 #include "main/renderbuffer.h"
@@ -56,6 +57,10 @@ radeon_delete_renderbuffer(struct gl_renderbuffer *rb)
 {
   struct radeon_renderbuffer *rrb = radeon_renderbuffer(rb);
 
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(rb %p, rrb %p) \n",
+   __func__, rb, rrb);
+
   ASSERT(rrb);
 
   if (rrb && rrb->bo) {
@@ -68,6 +73,10 @@ static void *
 radeon_get_pointer(GLcontext *ctx, struct gl_renderbuffer *rb,
   GLint x, GLint y)
 {
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, rb %p) \n",
+   __func__, ctx, rb);
+
   return NULL;
 }
 
@@ -85,6 +94,10 @@ radeon_alloc_renderbuffer_storage(GLcontext * ctx, struct 
gl_renderbuffer *rb,
   GLboolean software_buffer = GL_FALSE;
   int cpp;
 
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, rb %p) \n",
+   __func__, ctx, rb);
+
ASSERT(rb->Name != 0);
   switch (internalFormat) {
case GL_R3_G3_B2:
@@ -200,6 +213,10 @@ radeon_alloc_window_storage(GLcontext * ctx, struct 
gl_renderbuffer *rb,
rb->Width = width;
rb->Height = height;
rb->InternalFormat = internalFormat;
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, rb %p) \n",
+   __func__, ctx, rb);
+
 
return GL_TRUE;
 }
@@ -212,6 +229,10 @@ radeon_resize_buffers(GLcontext *ctx, struct 
gl_framebuffer *fb,
  struct radeon_framebuffer *radeon_fb = (struct radeon_framebuffer*)fb;
int i;
 
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, fb %p) \n",
+   __func__, ctx, fb);
+
_mesa_resize_framebuffer(ctx, fb, width, height);
 
fb->Initialized = GL_TRUE; /* XXX remove someday */
@@ -252,6 +273,11 @@ radeon_create_renderbuffer(gl_format format, __DRIdrawable 
*driDrawPriv)
 struct radeon_renderbuffer *rrb;
 
 rrb = CALLOC_STRUCT(radeon_renderbuffer);
+
+radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s( rrb %p ) \n",
+   __func__, rrb);
+
 if (!rrb)
return NULL;
 
@@ -331,6 +357,11 @@ radeon_new_renderbuffer(GLcontext * ctx, GLuint name)
   struct radeon_renderbuffer *rrb;
 
   rrb = CALLOC_STRUCT(radeon_renderbuffer);
+
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, rrb %p) \n",
+   __func__, ctx, rrb);
+
   if (!rrb)
 return NULL;
 
@@ -348,6 +379,11 @@ static void
 radeon_bind_framebuffer(GLcontext * ctx, GLenum target,
struct gl_framebuffer *fb, struct gl_framebuffer 
*fbread)
 {
+  radeon_print(RADEON_TEXTURE, RADEON_TRACE,
+   "%s(%p, fb %p, target %s) \n",
+   __func__, ctx, fb,
+   _mesa_lookup_enum_by_nr(target));
+
if (target == GL_FRAMEBUFFER_EXT || target == GL_DRAW_FRAMEBUFFER_EXT) {
   radeon_draw_buffer(ctx, fb

Mesa (master): r200: Fix UMS notto emit stp.

2010-02-09 Thread Pauli Nieminen
Module: Mesa
Branch: master
Commit: 9e587dbd78bdcf8608bce7cb3dcd05d9527b641e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e587dbd78bdcf8608bce7cb3dcd05d9527b641e

Author: Pauli Nieminen 
Date:   Mon Feb  8 11:49:10 2010 +0200

r200: Fix UMS notto emit stp.

Polgon stipples are handled by kernel in UMS. Mark the
state as never to be emited for UMS.

---

 src/mesa/drivers/dri/r200/r200_state_init.c |5 -
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r200/r200_state_init.c 
b/src/mesa/drivers/dri/r200/r200_state_init.c
index e06437b..1606553 100644
--- a/src/mesa/drivers/dri/r200/r200_state_init.c
+++ b/src/mesa/drivers/dri/r200/r200_state_init.c
@@ -894,7 +894,10 @@ void r200InitState( r200ContextPtr rmesa )
   }
}
 
-   ALLOC_STATE( stp, polygon_stipple, STP_STATE_SIZE, "STP/stp", 0 );
+   if (rmesa->radeon.radeonScreen->kernel_mm)
+  ALLOC_STATE( stp, polygon_stipple, STP_STATE_SIZE, "STP/stp", 0 );
+   else
+  ALLOC_STATE( stp, never, STP_STATE_SIZE, "STP/stp", 0 );
 
for (i = 0; i < 6; i++)
   if (rmesa->radeon.radeonScreen->kernel_mm)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): st/mesa: fix wrong initialization of MaxPointSize

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: master
Commit: dd7be07c9685012b3e9fdfbaa13dc638abf6a9d1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dd7be07c9685012b3e9fdfbaa13dc638abf6a9d1

Author: Roland Scheidegger 
Date:   Mon Feb  8 18:48:08 2010 +0100

st/mesa: fix wrong initialization of MaxPointSize

---

 src/mesa/state_tracker/st_extensions.c |4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index 7684ccd..cf31a0c 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -114,6 +114,10 @@ void st_init_limits(struct st_context *st)
   = _maxf(1.0f, screen->get_paramf(screen, PIPE_CAP_MAX_POINT_WIDTH));
c->MaxPointSizeAA
   = _maxf(1.0f, screen->get_paramf(screen, PIPE_CAP_MAX_POINT_WIDTH_AA));
+   /* called after _mesa_create_context/_mesa_init_point, fix default user
+* settable max point size up
+*/
+   st->ctx->Point.MaxSize = MAX2(c->MaxPointSize, c->MaxPointSizeAA);
/* these are not queryable. Note that GL basically mandates a 1.0 minimum
 * for non-aa sizes, but we can go down to 0.0 for aa points.
 */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium: add point size clamp to implementation limits in vertex shader

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: master
Commit: 2c326e72664e65166c68b027b26aaf373f3be36d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2c326e72664e65166c68b027b26aaf373f3be36d

Author: Roland Scheidegger 
Date:   Thu Feb  4 19:23:09 2010 +0100

gallium: add point size clamp to implementation limits in vertex shader

The point size min/max registers (unused by mesa state tracker) were removed
since most hardware couldn't do much with them. However, we don't want to have
to rely on hw to do point size clamping correctly to implementation
dependent limits, hence have to do that in the vertex shader. This should also
solve a potential problem with (non-AA) points smaller than 1.0 which according
to OGL still have size 1.0.
Note that OGL point rendering is odd, in particular point sprites are rasterized
differently to points. Some hardware might support those different modes, but in
any case the different clamping values used for smooth/multisampled/sprite
enabled points might help a bit for hw which rasterizes points the same as point
sprites.
Also tweak mesa's ff to vertex shader translation so don't have to clamp twice 
in
case of point attenuation.

---

 src/mesa/main/ffvertex_prog.c|2 +-
 src/mesa/shader/prog_statevars.c |   64 ++
 src/mesa/shader/prog_statevars.h |2 +
 src/mesa/state_tracker/st_extensions.c   |5 ++
 src/mesa/state_tracker/st_mesa_to_tgsi.c |   36 +
 5 files changed, 108 insertions(+), 1 deletions(-)

diff --git a/src/mesa/main/ffvertex_prog.c b/src/mesa/main/ffvertex_prog.c
index 2d1db29..867a552 100644
--- a/src/mesa/main/ffvertex_prog.c
+++ b/src/mesa/main/ffvertex_prog.c
@@ -1496,7 +1496,7 @@ static void build_texture_transform( struct tnl_program 
*p )
 static void build_atten_pointsize( struct tnl_program *p )
 {
struct ureg eye = get_eye_position_z(p);
-   struct ureg state_size = register_param1(p, STATE_POINT_SIZE);
+   struct ureg state_size = register_param2(p, STATE_INTERNAL, 
STATE_POINT_SIZE_CLAMPED);
struct ureg state_attenuation = register_param1(p, STATE_POINT_ATTENUATION);
struct ureg out = register_output(p, VERT_RESULT_PSIZ);
struct ureg ut = get_temp(p);
diff --git a/src/mesa/shader/prog_statevars.c b/src/mesa/shader/prog_statevars.c
index 058d4bb..460ecd4 100644
--- a/src/mesa/shader/prog_statevars.c
+++ b/src/mesa/shader/prog_statevars.c
@@ -444,6 +444,61 @@ _mesa_fetch_state(GLcontext *ctx, const gl_state_index 
state[],
  value[3] = (GLfloat)(ctx->Fog.Density * ONE_DIV_SQRT_LN2);
  return;
 
+  case STATE_POINT_SIZE_CLAMPED:
+ {
+   /* this includes implementation dependent limits, to avoid
+* another potentially necessary clamp.
+* Note: for sprites, point smooth (point AA) is ignored
+* and we'll clamp to MinPointSizeAA and MaxPointSize, because we
+* expect drivers will want to say their minimum for AA size is 0.0
+* but for non-AA it's 1.0 (because normal points with size below 
1.0
+* need to get rounded up to 1.0, hence never disappear). GL does
+* not specify max clamp size for sprites, other than it needs to be
+* at least as large as max AA size, hence use non-AA size there.
+*/
+GLfloat minImplSize;
+GLfloat maxImplSize;
+if (ctx->Point.PointSprite) {
+   minImplSize = ctx->Const.MinPointSizeAA;
+   maxImplSize = ctx->Const.MaxPointSize;
+}
+else if (ctx->Point.SmoothFlag || ctx->Multisample._Enabled) {
+   minImplSize = ctx->Const.MinPointSizeAA;
+   maxImplSize = ctx->Const.MaxPointSizeAA;
+}
+else {
+   minImplSize = ctx->Const.MinPointSize;
+   maxImplSize = ctx->Const.MaxPointSize;
+}
+value[0] = ctx->Point.Size;
+value[1] = ctx->Point.MinSize >= minImplSize ? ctx->Point.MinSize 
: minImplSize;
+value[2] = ctx->Point.MaxSize <= maxImplSize ? ctx->Point.MaxSize 
: maxImplSize;
+value[3] = ctx->Point.Threshold;
+ }
+ return;
+  case STATE_POINT_SIZE_IMPL_CLAMP:
+ {
+   /* for implementation clamp only in vs */
+GLfloat minImplSize;
+GLfloat maxImplSize;
+if (ctx->Point.PointSprite) {
+   minImplSize = ctx->Const.MinPointSizeAA;
+   maxImplSize = ctx->Const.MaxPointSize;
+}
+else if (ctx->Point.SmoothFlag || ctx->Multisample._Enabled) {
+   minImplSize = ctx->Const.MinPointSizeAA;
+   maxImplSize = ctx->Const.MaxPointSizeAA;
+}
+else {
+   minImplSize = ctx->Const.MinPointSize;
+   maxImplSize = ctx->Const.MaxPointSize;
+}
+value[0] = ctx->Point.Size;
+value[1] = minImplSize;
+

Mesa (master): Merge branch 'gallium-nopointsizeminmax'

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: master
Commit: 653a83445f94620673f747a4ace6847a2c7fdb4d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=653a83445f94620673f747a4ace6847a2c7fdb4d

Author: Roland Scheidegger 
Date:   Tue Feb  9 19:32:21 2010 +0100

Merge branch 'gallium-nopointsizeminmax'

Conflicts:
src/gallium/drivers/nv10/nv10_state.c
src/gallium/drivers/nv20/nv20_state.c
src/gallium/drivers/nv50/nv50_program.c

---



___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): docs: clean up TGSI_SEMANTIC_PSIZE description

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: master
Commit: 8091e73cc2142945c297191a9b746be71360ef26
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8091e73cc2142945c297191a9b746be71360ef26

Author: Roland Scheidegger 
Date:   Wed Feb  3 18:27:32 2010 +0100

docs: clean up TGSI_SEMANTIC_PSIZE description

there was some confusion between point size state and point size output.

---

 src/gallium/docs/source/tgsi.rst |6 ++
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst
index ebee490..ef06844 100644
--- a/src/gallium/docs/source/tgsi.rst
+++ b/src/gallium/docs/source/tgsi.rst
@@ -1231,10 +1231,8 @@ TGSI_SEMANTIC_PSIZE
 """
 
 PSIZE, or point size, is used to specify point sizes per-vertex. It should
-be in ``(p, n, x, f)`` format, where ``p`` is the point size, ``n`` is the 
minimum
-size, ``x`` is the maximum size, and ``f`` is the fade threshold.
-
-XXX this is arb_vp. is this what we actually do? should double-check...
+be in ``(s, 0, 0, 1)`` format, where ``s`` is the (possibly clamped) point 
size.
+Only the first component matters when writing from the vertex shader.
 
 When using this semantic, be sure to set the appropriate state in the
 :ref:`rasterizer` first.

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium: add point_quad_rasterization bit to rasterizer state

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: master
Commit: 68f93ea3eb83cfad014b8ec93cec3564c1aa9833
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=68f93ea3eb83cfad014b8ec93cec3564c1aa9833

Author: Roland Scheidegger 
Date:   Thu Feb  4 21:35:28 2010 +0100

gallium: add point_quad_rasterization bit to rasterizer state

This determines if points should be rasterized according to GL point rules
or as normal quads (GL point sprites / d3d points / d3d point sprites).

---

 src/gallium/auxiliary/draw/draw_pipe_wide_point.c |1 +
 src/gallium/docs/source/cso/rasterizer.rst|   14 --
 src/gallium/drivers/nv30/nv30_state.c |2 +-
 src/gallium/drivers/nv40/nv40_state.c |2 +-
 src/gallium/drivers/nv50/nv50_state.c |2 +-
 src/gallium/drivers/softpipe/sp_video_context.c   |1 +
 src/gallium/drivers/svga/svga_pipe_rasterizer.c   |1 +
 src/gallium/drivers/trace/tr_dump_state.c |1 +
 src/gallium/include/pipe/p_state.h|1 +
 src/mesa/state_tracker/st_atom_rasterizer.c   |3 ++-
 10 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_pipe_wide_point.c 
b/src/gallium/auxiliary/draw/draw_pipe_wide_point.c
index d9d4d2a..fdabce7 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_wide_point.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_wide_point.c
@@ -128,6 +128,7 @@ static void set_texcoords(const struct widepoint_stage 
*wide,
 static void widepoint_point( struct draw_stage *stage,
  struct prim_header *header )
 {
+   /* XXX should take point_quad_rasterization into account? */
const struct widepoint_stage *wide = widepoint_stage(stage);
const unsigned pos = draw_current_shader_position_output(stage->draw);
const boolean sprite = (boolean) 
stage->draw->rasterizer->sprite_coord_enable;
diff --git a/src/gallium/docs/source/cso/rasterizer.rst 
b/src/gallium/docs/source/cso/rasterizer.rst
index 721229d..00d65fc 100644
--- a/src/gallium/docs/source/cso/rasterizer.rst
+++ b/src/gallium/docs/source/cso/rasterizer.rst
@@ -85,8 +85,10 @@ point_size
 sprite_coord_enable
 Specifies if a coord has its texture coordinates replaced or not. This
 is a packed bitfield containing the enable for all coords - if all are 0
-point sprites are effectively disabled. If any coord is non-zero,
-point_smooth should be disabled.
+point sprites are effectively disabled, though points may still be
+rendered slightly different according to point_quad_rasterization.
+If any coord is non-zero, point_smooth should be disabled, and
+point_quad_rasterization enabled.
 If enabled, the four vertices of the resulting quad will be assigned
 texture coordinates, according to sprite_coord_mode.
 sprite_coord_mode
@@ -103,6 +105,14 @@ sprite_coord_mode
 Note that when geometry shaders are available, this state could be
 removed.  A special geometry shader defined by the state tracker could
 convert the incoming points into quads with the proper texture coords.
+point_quad_rasterization
+This determines if points should be rasterized as quads or points.
+d3d always uses quad rasterization for points, regardless if point sprites
+are enabled or not, but OGL has different rules. If 
point_quad_rasterization
+is set, point_smooth should be disabled, and points will be rendered as
+squares even if multisample is enabled.
+sprite_coord_enable should be zero if point_quad_rasterization is not
+enabled.
 
 scissor
 Whether the scissor test is enabled.
diff --git a/src/gallium/drivers/nv30/nv30_state.c 
b/src/gallium/drivers/nv30/nv30_state.c
index ab9fc52..66096de 100644
--- a/src/gallium/drivers/nv30/nv30_state.c
+++ b/src/gallium/drivers/nv30/nv30_state.c
@@ -391,7 +391,7 @@ nv30_rasterizer_state_create(struct pipe_context *pipe,
}
 
so_method(so, rankine, NV34TCL_POINT_SPRITE, 1);
-   if (cso->sprite_coord_enable) {
+   if (cso->point_quad_rasterization) {
unsigned psctl = (1 << 0), i;
 
for (i = 0; i < 8; i++) {
diff --git a/src/gallium/drivers/nv40/nv40_state.c 
b/src/gallium/drivers/nv40/nv40_state.c
index a5c5e29..5084c48 100644
--- a/src/gallium/drivers/nv40/nv40_state.c
+++ b/src/gallium/drivers/nv40/nv40_state.c
@@ -401,7 +401,7 @@ nv40_rasterizer_state_create(struct pipe_context *pipe,
}
 
so_method(so, curie, NV40TCL_POINT_SPRITE, 1);
-   if (cso->sprite_coord_enable) {
+   if (cso->point_quad_rasterization) {
unsigned psctl = (1 << 0), i;
 
for (i = 0; i < 8; i++) {
diff --git a/src/gallium/drivers/nv50/nv50_state.c 
b/src/gallium/drivers/nv50/nv50_state.c
index cbe2f34..f19a21d 100644
--- a/src/gallium/drivers/nv50/nv50_state.c
+++ b/src/gallium/drivers/nv50/nv50_state.c
@@ -318,7 +318,7 @@ nv50_rasterizer_state_create(struct pipe_context *pipe,
so_data  (so, fui(cso->point_size

Mesa (master): docs: fix point sprite documentation

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: master
Commit: c2b85e335dd798facb8ec43a4bb00fe0e05cf863
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c2b85e335dd798facb8ec43a4bb00fe0e05cf863

Author: Roland Scheidegger 
Date:   Wed Feb  3 17:39:47 2010 +0100

docs: fix point sprite documentation

---

 src/gallium/docs/source/cso/rasterizer.rst |   19 ++-
 1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/gallium/docs/source/cso/rasterizer.rst 
b/src/gallium/docs/source/cso/rasterizer.rst
index 89c3c06..721229d 100644
--- a/src/gallium/docs/source/cso/rasterizer.rst
+++ b/src/gallium/docs/source/cso/rasterizer.rst
@@ -82,17 +82,18 @@ point_size_per_vertex
 Whether vertices have a point size element.
 point_size
 The size of points, if not specified per-vertex.
-point_sprite
-Whether points are drawn as sprites (textured quads). This is mutually
-exclusive with point_smooth. Note that sprite_coord_mode set to
-PIPE_SPRITE_COORD_NONE for all coords and point_sprite enabled is basically
-equivalent to point_sprite disabled.
+sprite_coord_enable
+Specifies if a coord has its texture coordinates replaced or not. This
+is a packed bitfield containing the enable for all coords - if all are 0
+point sprites are effectively disabled. If any coord is non-zero,
+point_smooth should be disabled.
+If enabled, the four vertices of the resulting quad will be assigned
+texture coordinates, according to sprite_coord_mode.
 sprite_coord_mode
 Specifies how the value for each shader output should be computed when
-drawing sprites.  If PIPE_SPRITE_COORD_NONE, don't change the vertex
-shader output.  Otherwise, the four vertices of the resulting quad will
-be assigned texture coordinates.  For PIPE_SPRITE_COORD_LOWER_LEFT, the
-lower left vertex will have coordinate (0,0,0,1).
+drawing sprites, for each coord which has sprite_coord_enable set.
+For PIPE_SPRITE_COORD_LOWER_LEFT, the lower left vertex will have
+coordinate (0,0,0,1).
 For PIPE_SPRITE_COORD_UPPER_LEFT, the upper-left vertex will have
 coordinate (0,0,0,1).
 This state is needed by the 'draw' module because that's where each

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium: clean up point sprite rasterizer state

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: master
Commit: 4a4daa75a85db22cd37ebd533ebbccb427e07077
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4a4daa75a85db22cd37ebd533ebbccb427e07077

Author: Roland Scheidegger 
Date:   Wed Feb  3 17:25:14 2010 +0100

gallium: clean up point sprite rasterizer state

Don't need sprite coord origin per coord.
Also, don't need separate sprite enable bit - if all coords have it diabled,
then there are no point sprites (technically, there's a distinction in pre-GL3,
but it only differs in having more leniency in clamping to max size, something
the state tracker would need to handle and the hardware won't bother anyway).
Also, use packed field for the per-coord enables.
All in all, should save 3 dwords in rasterizer state (from 10 down to 7).

---

 src/gallium/auxiliary/draw/draw_pipe_validate.c|6 ++--
 src/gallium/auxiliary/draw/draw_pipe_wide_point.c  |   16 +++-
 src/gallium/docs/source/cso/rasterizer.rst |7 -
 src/gallium/drivers/i965/brw_sf.c  |   17 +++--
 src/gallium/drivers/i965/brw_sf_state.c|2 +-
 src/gallium/drivers/nv10/nv10_state.c  |4 +-
 src/gallium/drivers/nv20/nv20_state.c  |4 +-
 src/gallium/drivers/nv30/nv30_state.c  |4 +-
 src/gallium/drivers/nv40/nv40_state.c  |4 +-
 src/gallium/drivers/nv50/nv50_program.c|   14 --
 src/gallium/drivers/nv50/nv50_state.c  |2 +-
 src/gallium/drivers/softpipe/sp_video_context.c|3 +-
 src/gallium/drivers/svga/svga_pipe_rasterizer.c|2 +-
 src/gallium/drivers/trace/tr_dump_state.c  |5 +--
 src/gallium/include/pipe/p_defines.h   |5 +--
 src/gallium/include/pipe/p_state.h |4 +-
 .../state_trackers/python/retrace/interpreter.py   |2 +-
 src/mesa/state_tracker/st_atom_rasterizer.c|   25 ++-
 18 files changed, 64 insertions(+), 62 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_pipe_validate.c 
b/src/gallium/auxiliary/draw/draw_pipe_validate.c
index bea90e5..ac29634 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_validate.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_validate.c
@@ -105,7 +105,7 @@ draw_need_pipeline(const struct draw_context *draw,
  return TRUE;
 
   /* point sprites */
-  if (rasterizer->point_sprite && draw->pipeline.point_sprite)
+  if (rasterizer->sprite_coord_enable && draw->pipeline.point_sprite)
  return TRUE;
}
 
@@ -165,7 +165,7 @@ static struct draw_stage *validate_pipeline( struct 
draw_stage *stage )
  && !draw->rasterizer->line_smooth);
 
/* drawing large points? */
-   if (draw->rasterizer->point_sprite && draw->pipeline.point_sprite)
+   if (draw->rasterizer->sprite_coord_enable && draw->pipeline.point_sprite)
   wide_points = TRUE;
else if (draw->rasterizer->point_smooth && draw->pipeline.aapoint)
   wide_points = FALSE;
@@ -197,7 +197,7 @@ static struct draw_stage *validate_pipeline( struct 
draw_stage *stage )
   precalc_flat = 1;
}
 
-   if (wide_points || draw->rasterizer->point_sprite) {
+   if (wide_points || draw->rasterizer->sprite_coord_enable) {
   draw->pipeline.wide_point->next = next;
   next = draw->pipeline.wide_point;
}
diff --git a/src/gallium/auxiliary/draw/draw_pipe_wide_point.c 
b/src/gallium/auxiliary/draw/draw_pipe_wide_point.c
index f723e65..d9d4d2a 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_wide_point.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_wide_point.c
@@ -69,8 +69,9 @@ struct widepoint_stage {
float ybias;
 
uint texcoord_slot[PIPE_MAX_SHADER_OUTPUTS];
-   uint texcoord_mode[PIPE_MAX_SHADER_OUTPUTS];
+   uint texcoord_enable[PIPE_MAX_SHADER_OUTPUTS];
uint num_texcoords;
+   uint texcoord_mode;
 
int psize_slot;
 
@@ -96,10 +97,10 @@ static void set_texcoords(const struct widepoint_stage 
*wide,
 {
uint i;
for (i = 0; i < wide->num_texcoords; i++) {
-  if (wide->texcoord_mode[i] != PIPE_SPRITE_COORD_NONE) {
+  if (wide->texcoord_enable[i]) {
  uint j = wide->texcoord_slot[i];
  v->data[j][0] = tc[0];
- if (wide->texcoord_mode[i] == PIPE_SPRITE_COORD_LOWER_LEFT)
+ if (wide->texcoord_mode == PIPE_SPRITE_COORD_LOWER_LEFT)
 v->data[j][1] = 1.0f - tc[1];
  else
 v->data[j][1] = tc[1];
@@ -129,7 +130,7 @@ static void widepoint_point( struct draw_stage *stage,
 {
const struct widepoint_stage *wide = widepoint_stage(stage);
const unsigned pos = draw_current_shader_position_output(stage->draw);
-   const boolean sprite = (boolean) stage->draw->rasterizer->point_sprite;
+   const boolean sprite = (boolean) 
stage->draw->rasterizer->sprite_coord_enable;
float half_size;
float left_adj, right_adj, bot_adj, top_adj;
 
@@ -222,21 +223,22 @@ static void widepoint_first_point( struct draw_stage 
*stage,
 
/* XXX we won't

Mesa (master): gallium: remove point_size_min and point_size_max from rasterizer state

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: master
Commit: a407636efb6c32cee81b9a1525dbc804aacd957b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a407636efb6c32cee81b9a1525dbc804aacd957b

Author: Roland Scheidegger 
Date:   Tue Jan 12 15:54:13 2010 +0100

gallium: remove point_size_min and point_size_max from rasterizer state

The state tracker is responsible for clamping to any graphics API enforced
size min/max limits for both the static point_size setting as well as per
vertex point size (in the vertex shader).
Note that mesa state tracker didn't actually use these values.

---

 src/gallium/auxiliary/draw/draw_pipe_wide_point.c |   11 ---
 src/gallium/docs/source/cso/rasterizer.rst|4 
 src/gallium/drivers/i965/brw_sf_state.c   |4 +---
 src/gallium/drivers/r300/r300_state.c |8 +---
 src/gallium/drivers/svga/svga_context.h   |3 +--
 src/gallium/drivers/svga/svga_pipe_rasterizer.c   |2 --
 src/gallium/drivers/svga/svga_screen.c|2 +-
 src/gallium/drivers/svga/svga_state_rss.c |5 +++--
 src/gallium/drivers/trace/tr_dump_state.c |2 --
 src/gallium/include/pipe/p_state.h|2 --
 src/mesa/state_tracker/st_atom_rasterizer.c   |3 ---
 11 files changed, 11 insertions(+), 35 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_pipe_wide_point.c 
b/src/gallium/auxiliary/draw/draw_pipe_wide_point.c
index 8dc50c0..f723e65 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_wide_point.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_wide_point.c
@@ -64,8 +64,6 @@ struct widepoint_stage {
struct draw_stage stage;
 
float half_point_size;
-   float point_size_min;
-   float point_size_max;
 
float xbias;
float ybias;
@@ -151,13 +149,6 @@ static void widepoint_point( struct draw_stage *stage,
/* point size is either per-vertex or fixed size */
if (wide->psize_slot >= 0) {
   half_size = header->v[0]->data[wide->psize_slot][0];
-
-  /* XXX: temporary -- do this in the vertex shader??
-   */
-  half_size = CLAMP(half_size,
-wide->point_size_min,
-wide->point_size_max);
-  
   half_size *= 0.5f; 
}
else {
@@ -222,8 +213,6 @@ static void widepoint_first_point( struct draw_stage *stage,
struct draw_context *draw = stage->draw;
 
wide->half_point_size = 0.5f * draw->rasterizer->point_size;
-   wide->point_size_min = draw->rasterizer->point_size_min;
-   wide->point_size_max = draw->rasterizer->point_size_max;
wide->xbias = 0.0;
wide->ybias = 0.0;
 
diff --git a/src/gallium/docs/source/cso/rasterizer.rst 
b/src/gallium/docs/source/cso/rasterizer.rst
index 4d8e170..5ffd600 100644
--- a/src/gallium/docs/source/cso/rasterizer.rst
+++ b/src/gallium/docs/source/cso/rasterizer.rst
@@ -82,10 +82,6 @@ point_size_per_vertex
 Whether vertices have a point size element.
 point_size
 The size of points, if not specified per-vertex.
-point_size_min
-The minimum size of points.
-point_size_max
-The maximum size of points.
 point_sprite
 Whether points are drawn as sprites (textured quads)
 sprite_coord_mode
diff --git a/src/gallium/drivers/i965/brw_sf_state.c 
b/src/gallium/drivers/i965/brw_sf_state.c
index 25dc2b5..663a688 100644
--- a/src/gallium/drivers/i965/brw_sf_state.c
+++ b/src/gallium/drivers/i965/brw_sf_state.c
@@ -126,9 +126,7 @@ sf_unit_populate_key(struct brw_context *brw, struct 
brw_sf_unit_key *key)
key->point_sprite = rast->point_sprite;
key->point_attenuated = rast->point_size_per_vertex;
 
-   key->point_size = CLAMP(rast->point_size, 
-  rast->point_size_min, 
-  rast->point_size_max);
+   key->point_size = rast->point_size;
 }
 
 static enum pipe_error
diff --git a/src/gallium/drivers/r300/r300_state.c 
b/src/gallium/drivers/r300/r300_state.c
index 78764dd..435e613 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -618,10 +618,12 @@ static void* r300_create_rs_state(struct pipe_context* 
pipe,
 rs->point_size = pack_float_16_6x(state->point_size) |
 (pack_float_16_6x(state->point_size) << R300_POINTSIZE_X_SHIFT);
 
-rs->point_minmax =
-((int)(state->point_size_min * 6.0) <<
+/* set hw limits - clamping done by state tracker in vs or point_size
+   XXX always need to emit this? */
+rs->point_minmax =
+((int)(0.0 * 6.0) <<
  R300_GA_POINT_MINMAX_MIN_SHIFT) |
-((int)(state->point_size_max * 6.0) <<
+((int)(4096.0 * 6.0) <<
  R300_GA_POINT_MINMAX_MAX_SHIFT);
 
 rs->line_control = pack_float_16_6x(state->line_width) |
diff --git a/src/gallium/drivers/svga/svga_context.h 
b/src/gallium/drivers/svga/svga_context.h
index 66259fd..e2a9603 100644
--- a/src/gallium/drivers/svga/svga_context.h
+++ b/src/gallium/drivers/svga/svga_context.h
@@ -37,6 +37,7 @@
 
 
 #define SVGA_TEX_

Mesa (master): docs: fix typo: s/osdemo/osdemos/

2010-02-09 Thread Brian Paul
Module: Mesa
Branch: master
Commit: b0613d87672ea08bb3b9cd56dee714fe413b670e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b0613d87672ea08bb3b9cd56dee714fe413b670e

Author: Brian Paul 
Date:   Tue Feb  9 11:21:41 2010 -0700

docs: fix typo: s/osdemo/osdemos/

(cherry picked from commit 0371956d66cdc8a1629753fca9cb3cdc49b0d145)

---

 docs/osmesa.html |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/docs/osmesa.html b/docs/osmesa.html
index 629d054..525da4d 100644
--- a/docs/osmesa.html
+++ b/docs/osmesa.html
@@ -26,7 +26,7 @@ more information about the API functions.
 
 
 
-There are several examples of OSMesa in the progs/osdemo/
+There are several examples of OSMesa in the progs/osdemos/
 directory.
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): docs: fix typo: s/osdemo/osdemos/

2010-02-09 Thread Brian Paul
Module: Mesa
Branch: mesa_7_7_branch
Commit: 0371956d66cdc8a1629753fca9cb3cdc49b0d145
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0371956d66cdc8a1629753fca9cb3cdc49b0d145

Author: Brian Paul 
Date:   Tue Feb  9 11:21:15 2010 -0700

docs: fix typo: s/osdemo/osdemos/

---

 docs/osmesa.html |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/docs/osmesa.html b/docs/osmesa.html
index 629d054..525da4d 100644
--- a/docs/osmesa.html
+++ b/docs/osmesa.html
@@ -26,7 +26,7 @@ more information about the API functions.
 
 
 
-There are several examples of OSMesa in the progs/osdemo/
+There are several examples of OSMesa in the progs/osdemos/
 directory.
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (gallium-nopointsizeminmax): st/mesa: fix wrong initialization of MaxPointSize

2010-02-09 Thread Roland Scheidegger
Module: Mesa
Branch: gallium-nopointsizeminmax
Commit: dd7be07c9685012b3e9fdfbaa13dc638abf6a9d1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dd7be07c9685012b3e9fdfbaa13dc638abf6a9d1

Author: Roland Scheidegger 
Date:   Mon Feb  8 18:48:08 2010 +0100

st/mesa: fix wrong initialization of MaxPointSize

---

 src/mesa/state_tracker/st_extensions.c |4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index 7684ccd..cf31a0c 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -114,6 +114,10 @@ void st_init_limits(struct st_context *st)
   = _maxf(1.0f, screen->get_paramf(screen, PIPE_CAP_MAX_POINT_WIDTH));
c->MaxPointSizeAA
   = _maxf(1.0f, screen->get_paramf(screen, PIPE_CAP_MAX_POINT_WIDTH_AA));
+   /* called after _mesa_create_context/_mesa_init_point, fix default user
+* settable max point size up
+*/
+   st->ctx->Point.MaxSize = MAX2(c->MaxPointSize, c->MaxPointSizeAA);
/* these are not queryable. Note that GL basically mandates a 1.0 minimum
 * for non-aa sizes, but we can go down to 0.0 for aa points.
 */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium: Adding the %.s rule to generate asm code

2010-02-09 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: a8f4904fb33f4fe5da560f85ecf003601e0ec06a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a8f4904fb33f4fe5da560f85ecf003601e0ec06a

Author: Chris Li 
Date:   Fri Feb  5 21:25:17 2010 -0800

gallium: Adding the %.s rule to generate asm code

Signed-off-by: José Fonseca 

---

 src/gallium/Makefile.template |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/gallium/Makefile.template b/src/gallium/Makefile.template
index 35f603a..5d9d2db 100644
--- a/src/gallium/Makefile.template
+++ b/src/gallium/Makefile.template
@@ -53,6 +53,9 @@ install:
 
 # RULES #
 
+%.s: %.c
+   $(CC) -S $(INCLUDES) $(DEFINES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
+
 %.o: %.c
$(CC) -c $(INCLUDES) $(DEFINES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): llvmpipe: Make llvm unit test depend on libllvmpipe.a

2010-02-09 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 8b6ec94aec2d0f18a862fd50bfeb2cc89a0d23d3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b6ec94aec2d0f18a862fd50bfeb2cc89a0d23d3

Author: Chris Li 
Date:   Fri Feb  5 19:41:32 2010 -0800

llvmpipe: Make llvm unit test depend on libllvmpipe.a

Signed-off-by: José Fonseca 

---

 src/gallium/drivers/llvmpipe/Makefile |5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/Makefile 
b/src/gallium/drivers/llvmpipe/Makefile
index 7e7b620..e880042 100644
--- a/src/gallium/drivers/llvmpipe/Makefile
+++ b/src/gallium/drivers/llvmpipe/Makefile
@@ -60,8 +60,7 @@ testprogs := lp_test_format   \
 
 LIBS += $(GL_LIB_DEPS) -L. -lllvmpipe -L../../auxiliary/ -lgallium
 
-$(testprogs): lp_test_% : lp_test_%.o lp_test_main.o
-   $(LD) $^ -o $@ -Wl,--start-group  $(LIBS) -Wl,--end-group
-
+$(testprogs): lp_test_% : lp_test_%.o lp_test_main.o libllvmpipe.a
+   $(LD) $(filter %.o,$^) -o $@ -Wl,--start-group  $(LIBS) -Wl,--end-group
 
 default: $(testprogs)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium: Using the proper pattern rules for Makefile template.

2010-02-09 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 62d1e40e0d672cc84708cd8a99f26ee5917c6aef
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=62d1e40e0d672cc84708cd8a99f26ee5917c6aef

Author: Chris Li 
Date:   Fri Feb  5 21:22:39 2010 -0800

gallium: Using the proper pattern rules for Makefile template.

The .o.c rule is consider obsolete.

Signed-off-by: José Fonseca 

---

 src/gallium/Makefile.template |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/gallium/Makefile.template b/src/gallium/Makefile.template
index 1364235..35f603a 100644
--- a/src/gallium/Makefile.template
+++ b/src/gallium/Makefile.template
@@ -53,13 +53,13 @@ install:
 
 # RULES #
 
-.c.o:
+%.o: %.c
$(CC) -c $(INCLUDES) $(DEFINES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
 
-.cpp.o:
+%.o: %.cpp
$(CXX) -c $(INCLUDES) $(DEFINES) $(CXXFLAGS) $(LIBRARY_DEFINES) $< -o $@
 
-.S.o:
+%.o: %.S
$(CC) -c $(INCLUDES) $(DEFINES) $(CFLAGS) $(LIBRARY_DEFINES)  $< -o $@
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): vmware/core: Use correct flags in scanout code

2010-02-09 Thread Jakob Bornecrantz
Module: Mesa
Branch: master
Commit: 6a4cd124af9175832e506888e504d9195bf614b7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6a4cd124af9175832e506888e504d9195bf614b7

Author: Jakob Bornecrantz 
Date:   Sat Feb  6 01:29:47 2010 +0100

vmware/core: Use correct flags in scanout code

---

 .../winsys/drm/vmware/core/vmw_screen_ioctl.c  |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c 
b/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c
index f2de2c3..5d81fa8 100644
--- a/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c
+++ b/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c
@@ -176,12 +176,12 @@ vmw_ioctl_surface_create(struct vmw_winsys_screen *vws,
 
memset(&s_arg, 0, sizeof(s_arg));
if (vws->use_old_scanout_flag &&
-   (req->flags & SVGA3D_SURFACE_HINT_SCANOUT)) {
-  req->flags = (uint32_t) (flags & ~SVGA3D_SURFACE_HINT_SCANOUT);
+   (flags & SVGA3D_SURFACE_HINT_SCANOUT)) {
+  req->flags = (uint32_t) flags;
   req->scanout = false;
-   } else if (req->flags & SVGA3D_SURFACE_HINT_SCANOUT) {
+   } else if (flags & SVGA3D_SURFACE_HINT_SCANOUT) {
   req->flags = (uint32_t) (flags & ~SVGA3D_SURFACE_HINT_SCANOUT);
-  req->scanout = false;
+  req->scanout = true;
} else {
   req->flags = (uint32_t) flags;
   req->scanout = false;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): vmware/core: Support drm interface version 1.0.0

2010-02-09 Thread Jakob Bornecrantz
Module: Mesa
Branch: master
Commit: 6ef1d6040738f5a3d93644a782ee7b600b8420b6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ef1d6040738f5a3d93644a782ee7b600b8420b6

Author: Jakob Bornecrantz 
Date:   Sat Feb  6 01:30:29 2010 +0100

vmware/core: Support drm interface version 1.0.0

---

 .../winsys/drm/vmware/core/vmw_screen_dri.c|2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c 
b/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c
index b7c02f6..1dcbc41 100644
--- a/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c
+++ b/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c
@@ -50,7 +50,7 @@ static struct dri1_api_version ddx_compat = { 0, 0, 0 };
 static struct dri1_api_version dri_required = { 4, 0, 0 };
 static struct dri1_api_version dri_compat = { 4, 0, 0 };
 static struct dri1_api_version drm_required = { 0, 1, 0 };
-static struct dri1_api_version drm_compat = { 0, 0, 0 };
+static struct dri1_api_version drm_compat = { 1, 0, 0 };
 static struct dri1_api_version drm_scanout = { 0, 9, 0 };
 
 static boolean

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): vmware/core: Handle new scanout field

2010-02-09 Thread Jakob Bornecrantz
Module: Mesa
Branch: master
Commit: 6ffb6318a05f0e6405645a155cd32e5cfbdbc2ff
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ffb6318a05f0e6405645a155cd32e5cfbdbc2ff

Author: Jakob Bornecrantz 
Date:   Sat Feb  6 01:21:36 2010 +0100

vmware/core: Handle new scanout field

---

 src/gallium/winsys/drm/vmware/core/vmw_screen.c|5 -
 src/gallium/winsys/drm/vmware/core/vmw_screen.h|4 +++-
 .../winsys/drm/vmware/core/vmw_screen_dri.c|   12 +++-
 .../winsys/drm/vmware/core/vmw_screen_ioctl.c  |   18 +-
 4 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/core/vmw_screen.c 
b/src/gallium/winsys/drm/vmware/core/vmw_screen.c
index 911eec5..6cc9b38 100644
--- a/src/gallium/winsys/drm/vmware/core/vmw_screen.c
+++ b/src/gallium/winsys/drm/vmware/core/vmw_screen.c
@@ -37,13 +37,16 @@
  * module.
  */
 struct vmw_winsys_screen *
-vmw_winsys_create( int fd )
+vmw_winsys_create( int fd, boolean use_old_scanout_flag )
 {
struct vmw_winsys_screen *vws = CALLOC_STRUCT(vmw_winsys_screen);
if (!vws)
   goto out_no_vws;
 
vws->ioctl.drm_fd = fd;
+   vws->use_old_scanout_flag = use_old_scanout_flag;
+   debug_printf("%s: use_old_scanout_flag == %s\n", __FUNCTION__,
+   use_old_scanout_flag ? "true" : "false");
 
if (!vmw_ioctl_init(vws))
   goto out_no_ioctl;
diff --git a/src/gallium/winsys/drm/vmware/core/vmw_screen.h 
b/src/gallium/winsys/drm/vmware/core/vmw_screen.h
index f1d6986..d3f2c2c 100644
--- a/src/gallium/winsys/drm/vmware/core/vmw_screen.h
+++ b/src/gallium/winsys/drm/vmware/core/vmw_screen.h
@@ -52,6 +52,8 @@ struct vmw_winsys_screen
 {
struct svga_winsys_screen base;
 
+   boolean use_old_scanout_flag;
+
struct {
   volatile uint32_t *fifo_map;
   uint64_t last_fence;
@@ -131,7 +133,7 @@ boolean vmw_winsys_screen_init_svga(struct 
vmw_winsys_screen *vws);
 void vmw_ioctl_cleanup(struct vmw_winsys_screen *vws);
 void vmw_pools_cleanup(struct vmw_winsys_screen *vws);
 
-struct vmw_winsys_screen *vmw_winsys_create(int fd);
+struct vmw_winsys_screen *vmw_winsys_create(int fd, boolean 
use_old_scanout_flag);
 void vmw_winsys_destroy(struct vmw_winsys_screen *sws);
 
 
diff --git a/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c 
b/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c
index 917b49f..b7c02f6 100644
--- a/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c
+++ b/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c
@@ -51,6 +51,7 @@ static struct dri1_api_version dri_required = { 4, 0, 0 };
 static struct dri1_api_version dri_compat = { 4, 0, 0 };
 static struct dri1_api_version drm_required = { 0, 1, 0 };
 static struct dri1_api_version drm_compat = { 0, 0, 0 };
+static struct dri1_api_version drm_scanout = { 0, 9, 0 };
 
 static boolean
 vmw_dri1_check_version(const struct dri1_api_version *cur,
@@ -85,6 +86,7 @@ vmw_drm_create_screen(struct drm_api *drm_api,
struct vmw_winsys_screen *vws;
struct pipe_screen *screen;
struct dri1_create_screen_arg *dri1;
+   boolean use_old_scanout_flag = FALSE;
 
if (!arg || arg->mode == DRM_CREATE_NORMAL) {
   struct dri1_api_version drm_ver;
@@ -96,11 +98,16 @@ vmw_drm_create_screen(struct drm_api *drm_api,
 
   drm_ver.major = ver->version_major;
   drm_ver.minor = ver->version_minor;
+  drm_ver.patch_level = 0; /* ??? */
 
   drmFreeVersion(ver);
   if (!vmw_dri1_check_version(&drm_ver, &drm_required,
  &drm_compat, "vmwgfx drm driver"))
 return NULL;
+
+  if (!vmw_dri1_check_version(&drm_ver, &drm_scanout,
+ &drm_compat, "use old scanout field (not a 
error)"))
+ use_old_scanout_flag = TRUE;
}
 
if (arg != NULL) {
@@ -118,6 +125,9 @@ vmw_drm_create_screen(struct drm_api *drm_api,
 if (!vmw_dri1_check_version(&dri1->drm_version, &drm_required,
 &drm_compat, "vmwgfx drm driver"))
return NULL;
+if (!vmw_dri1_check_version(&dri1->drm_version, &drm_scanout,
+&drm_compat, "use old scanout field (not a 
error)"))
+   use_old_scanout_flag = TRUE;
 dri1->api = &dri1_api_hooks;
 break;
   default:
@@ -125,7 +135,7 @@ vmw_drm_create_screen(struct drm_api *drm_api,
   }
}
 
-   vws = vmw_winsys_create( fd );
+   vws = vmw_winsys_create( fd, use_old_scanout_flag );
if (!vws)
   goto out_no_vws;
 
diff --git a/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c 
b/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c
index ccd0b41..f2de2c3 100644
--- a/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c
+++ b/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c
@@ -57,6 +57,12 @@ struct vmw_region
uint32_t size;
 };
 
+/* XXX: This isn't a real hardware flag, but just a hack for kernel to
+ * know about primary surfaces. In newer versions of th

Mesa (master): vmware/core: Update header to latest version

2010-02-09 Thread Jakob Bornecrantz
Module: Mesa
Branch: master
Commit: a9d61c286d27733d347f81ac7cfae3665accae92
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a9d61c286d27733d347f81ac7cfae3665accae92

Author: Jakob Bornecrantz 
Date:   Sat Feb  6 00:56:24 2010 +0100

vmware/core: Update header to latest version

---

 src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h |   12 +---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h 
b/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h
index 681d6b5..1457966 100644
--- a/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h
+++ b/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h
@@ -68,7 +68,8 @@
 #define DRM_VMW_PARAM_NUM_FREE_STREAMS 1
 #define DRM_VMW_PARAM_3D   2
 #define DRM_VMW_PARAM_FIFO_OFFSET  3
-
+#define DRM_VMW_PARAM_HW_CAPS  4
+#define DRM_VMW_PARAM_FIFO_CAPS5
 
 /**
  * struct drm_vmw_getparam_arg
@@ -138,6 +139,8 @@ struct drm_vmw_context_arg {
  * The size of the array should equal the total number of mipmap levels.
  * @shareable: Boolean whether other clients (as identified by file 
descriptors)
  * may reference this surface.
+ * @scanout: Boolean whether the surface is intended to be used as a
+ * scanout.
  *
  * Input data to the DRM_VMW_CREATE_SURFACE Ioctl.
  * Output data from the DRM_VMW_REF_SURFACE Ioctl.
@@ -149,7 +152,7 @@ struct drm_vmw_surface_create_req {
uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES];
uint64_t size_addr;
int32_t shareable;
-   uint32_t pad64;
+   int32_t scanout;
 };
 
 /**
@@ -252,6 +255,9 @@ union drm_vmw_surface_reference_arg {
  *
  * @commands: User-space address of a command buffer cast to an uint64_t.
  * @command-size: Size in bytes of the command buffer.
+ * @throttle-us: Sleep until software is less than @throttle_us
+ * microseconds ahead of hardware. The driver may round this value
+ * to the nearest kernel tick.
  * @fence_rep: User-space address of a struct drm_vmw_fence_rep cast to an
  * uint64_t.
  *
@@ -261,7 +267,7 @@ union drm_vmw_surface_reference_arg {
 struct drm_vmw_execbuf_arg {
uint64_t commands;
uint32_t command_size;
-   uint32_t pad64;
+   uint32_t throttle_us;
uint64_t fence_rep;
 };
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): vmware/core: Remove old ioctl structs not used

2010-02-09 Thread Jakob Bornecrantz
Module: Mesa
Branch: master
Commit: 7afcfa06831beb28d0a80b777ae701f68f0e202f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7afcfa06831beb28d0a80b777ae701f68f0e202f

Author: Jakob Bornecrantz 
Date:   Fri Jan 29 17:11:36 2010 +0100

vmware/core: Remove old ioctl structs not used

Leftover that was never used in this driver

---

 src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h |   43 ---
 1 files changed, 0 insertions(+), 43 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h 
b/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h
index 2be7e12..681d6b5 100644
--- a/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h
+++ b/src/gallium/winsys/drm/vmware/core/vmwgfx_drm.h
@@ -87,49 +87,6 @@ struct drm_vmw_getparam_arg {
 
 /*/
 /**
- * DRM_VMW_EXTENSION - Query device extensions.
- */
-
-/**
- * struct drm_vmw_extension_rep
- *
- * @exists: The queried extension exists.
- * @driver_ioctl_offset: Ioctl number of the first ioctl in the extension.
- * @driver_sarea_offset: Offset to any space in the DRI SAREA
- * used by the extension.
- * @major: Major version number of the extension.
- * @minor: Minor version number of the extension.
- * @pl: Patch level version number of the extension.
- *
- * Output argument to the DRM_VMW_EXTENSION Ioctl.
- */
-
-struct drm_vmw_extension_rep {
-   int32_t exists;
-   uint32_t driver_ioctl_offset;
-   uint32_t driver_sarea_offset;
-   uint32_t major;
-   uint32_t minor;
-   uint32_t pl;
-   uint32_t pad64;
-};
-
-/**
- * union drm_vmw_extension_arg
- *
- * @extension - Ascii name of the extension to be queried. //In
- * @rep - Reply as defined above. //Out
- *
- * Argument to the DRM_VMW_EXTENSION Ioctl.
- */
-
-union drm_vmw_extension_arg {
-   char extension[DRM_VMW_EXT_NAME_LEN];
-   struct drm_vmw_extension_rep rep;
-};
-
-/*/
-/**
  * DRM_VMW_CREATE_CONTEXT - Create a host context.
  *
  * Allocates a device unique context id, and queues a create context command

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): llvmpipe: Remove reference to prefilter field.

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 72fa4ef649621b93beab15a87682d696406fd326
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=72fa4ef649621b93beab15a87682d696406fd326

Author: Michal Krol 
Date:   Tue Feb  9 16:20:55 2010 +0100

llvmpipe: Remove reference to prefilter field.

---

 src/gallium/drivers/llvmpipe/lp_state_fs.c |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c 
b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index 2001a95..15c10d8 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -905,7 +905,6 @@ generate_variant(struct llvmpipe_context *lp,
 if(key->sampler[i].compare_mode != PIPE_TEX_COMPARE_NONE)
debug_printf("  .compare_func = %s\n", 
debug_dump_func(key->sampler[i].compare_func, TRUE));
 debug_printf("  .normalized_coords = %u\n", 
key->sampler[i].normalized_coords);
-debug_printf("  .prefilter = %u\n", key->sampler[i].prefilter);
  }
   }
}

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): glx: Fix TOP setting in src/glx Makefile

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: 2ecbe4e208ce4f6c789667f230b5b23b47de1936
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ecbe4e208ce4f6c789667f230b5b23b47de1936

Author: Kristian Høgsberg 
Date:   Tue Feb  9 10:21:19 2010 -0500

glx: Fix TOP setting in src/glx Makefile

Argh, forgot to commit this fix before pushing.

---

 src/glx/Makefile |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/glx/Makefile b/src/glx/Makefile
index e681be8..6711fdc 100644
--- a/src/glx/Makefile
+++ b/src/glx/Makefile
@@ -1,4 +1,4 @@
-TOP = ../../..
+TOP = ../..
 include $(TOP)/configs/current
 
 EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT \

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): Retire miniglx and move the actual glx code up to src/glx

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: 6e8897ff9f90601ebf6eed500ad942c11b54d1f7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e8897ff9f90601ebf6eed500ad942c11b54d1f7

Author: Kristian Høgsberg 
Date:   Tue Feb  9 09:58:36 2010 -0500

Retire miniglx and move the actual glx code up to src/glx

---

 Makefile |6 +-
 configs/darwin   |4 +-
 configs/freebsd-dri  |2 +-
 configs/linux-dri|2 +-
 configs/linux-dri-xcb|2 +-
 configs/linux-indirect   |2 +-
 configure.ac |2 +-
 docs/egl.html|1 -
 src/gallium/state_trackers/egl/Makefile  |4 +-
 src/gallium/state_trackers/egl/x11/glxinit.c |2 +-
 src/glx/Makefile |   95 +-
 src/glx/{x11 => }/XF86dri.c  |0 
 src/glx/{x11 => }/clientattrib.c |0 
 src/glx/{x11 => }/compsize.c |0 
 src/glx/{x11 => }/dri2.c |0 
 src/glx/{x11 => }/dri2.h |0 
 src/glx/{x11 => }/dri2_glx.c |0 
 src/glx/{x11 => }/dri_common.c   |0 
 src/glx/{x11 => }/dri_common.h   |0 
 src/glx/{x11 => }/dri_glx.c  |0 
 src/glx/{x11 => }/drisw_glx.c|0 
 src/glx/{x11 => }/eval.c |0 
 src/glx/{x11 => }/glcontextmodes.c   |0 
 src/glx/{x11 => }/glcontextmodes.h   |0 
 src/glx/{x11 => }/glx_pbuffer.c  |0 
 src/glx/{x11 => }/glx_query.c|0 
 src/glx/{x11 => }/glxclient.h|0 
 src/glx/{x11 => }/glxcmds.c  |0 
 src/glx/{x11 => }/glxcurrent.c   |0 
 src/glx/{x11 => }/glxext.c   |0 
 src/glx/{x11 => }/glxextensions.c|0 
 src/glx/{x11 => }/glxextensions.h|0 
 src/glx/{x11 => }/glxhash.c  |0 
 src/glx/{x11 => }/glxhash.h  |0 
 src/glx/{x11 => }/indirect.c |0 
 src/glx/{x11 => }/indirect.h |0 
 src/glx/{x11 => }/indirect_init.c|0 
 src/glx/{x11 => }/indirect_init.h|0 
 src/glx/{x11 => }/indirect_size.c|0 
 src/glx/{x11 => }/indirect_size.h|0 
 src/glx/{x11 => }/indirect_texture_compression.c |0 
 src/glx/{x11 => }/indirect_transpose_matrix.c|0 
 src/glx/{x11 => }/indirect_vertex_array.c|0 
 src/glx/{x11 => }/indirect_vertex_array.h|0 
 src/glx/{x11 => }/indirect_vertex_array_priv.h   |0 
 src/glx/{x11 => }/indirect_vertex_program.c  |0 
 src/glx/{x11 => }/indirect_window_pos.c  |0 
 src/glx/mini/Makefile|   89 -
 src/glx/mini/NOTES   |  115 -
 src/glx/mini/dispatch.c  |   64 -
 src/glx/mini/driver.h|  168 --
 src/glx/mini/example.miniglx.conf|   36 -
 src/glx/mini/miniglx.c   | 2580 --
 src/glx/mini/miniglxP.h  |  205 --
 src/glx/mini/miniglx_events.c|  983 
 src/glx/{x11 => }/packrender.h   |0 
 src/glx/{x11 => }/packsingle.h   |0 
 src/glx/{x11 => }/pixel.c|0 
 src/glx/{x11 => }/pixelstore.c   |0 
 src/glx/{x11 => }/render2.c  |0 
 src/glx/{x11 => }/renderpix.c|0 
 src/glx/{x11 => }/single2.c  |0 
 src/glx/{x11 => }/singlepix.c|0 
 src/glx/{x11 => }/vertarr.c  |0 
 src/glx/x11/Makefile |   97 -
 src/glx/{x11 => }/xf86dri.h  |0 
 src/glx/{x11 => }/xf86dristr.h   |0 
 src/glx/{x11 => }/xfont.c|0 
 src/mesa/glapi/Makefile  |   20 +-
 src/mesa/main/dispatch.c |2 +-
 70 files changed, 114 insertions(+), 4367 deletions(-)

Diff:   
http://cgit.freedesktop.org/mesa/mesa/diff/?id=6e8897ff9f90601ebf6eed500ad942c11b54d1f7
___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): egl_dri2: Fix initialization with EGL_DEFAULT_DISPLAY

2010-02-09 Thread Kristian Høgsberg
Module: Mesa
Branch: master
Commit: 538539d8791e5b3b1ea2e95473b589934d94497e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=538539d8791e5b3b1ea2e95473b589934d94497e

Author: Kristian Høgsberg 
Date:   Tue Feb  9 09:49:56 2010 -0500

egl_dri2: Fix initialization with EGL_DEFAULT_DISPLAY

---

 src/egl/drivers/dri2/egl_dri2.c |   12 ++--
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 8b01b84..9237889 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -404,13 +404,13 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
   return _eglError(EGL_BAD_ALLOC, "eglInitialize");
 
disp->DriverData = (void *) dri2_dpy;
-   dri2_dpy->conn = XGetXCBConnection(disp->NativeDisplay);
-   if (!dri2_dpy->conn) {
+   if (disp->NativeDisplay != NULL)
+  dri2_dpy->conn = XGetXCBConnection(disp->NativeDisplay);
+   else
   dri2_dpy->conn = xcb_connect(0, 0);
-  if (!dri2_dpy->conn) {
- _eglLog(_EGL_WARNING, "DRI2: xcb_connect failed");
-goto cleanup_dpy;
-  }
+   if (!dri2_dpy->conn) {
+  _eglLog(_EGL_WARNING, "DRI2: xcb_connect failed");
+  goto cleanup_dpy;
}
 
xcb_prefetch_extension_data (dri2_dpy->conn, &xcb_xfixes_id);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): vmware/core: Support drm interface version 1.0.0

2010-02-09 Thread Jakob Bornecrantz
Module: Mesa
Branch: mesa_7_7_branch
Commit: 45c4addea7f01939cd825ca205ef3fdf903236d9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=45c4addea7f01939cd825ca205ef3fdf903236d9

Author: Jakob Bornecrantz 
Date:   Sat Feb  6 01:30:29 2010 +0100

vmware/core: Support drm interface version 1.0.0

---

 .../winsys/drm/vmware/core/vmw_screen_dri.c|2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c 
b/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c
index 0f4dbe1..b0ea975 100644
--- a/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c
+++ b/src/gallium/winsys/drm/vmware/core/vmw_screen_dri.c
@@ -49,7 +49,7 @@ static struct dri1_api_version ddx_compat = { 0, 0, 0 };
 static struct dri1_api_version dri_required = { 4, 0, 0 };
 static struct dri1_api_version dri_compat = { 4, 0, 0 };
 static struct dri1_api_version drm_required = { 0, 1, 0 };
-static struct dri1_api_version drm_compat = { 0, 0, 0 };
+static struct dri1_api_version drm_compat = { 1, 0, 0 };
 static struct dri1_api_version drm_scanout = { 0, 9, 0 };
 
 static boolean

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (mesa_7_7_branch): vmware/core: Use correct flags in scanout code

2010-02-09 Thread Jakob Bornecrantz
Module: Mesa
Branch: mesa_7_7_branch
Commit: 1eba0eb37d430a3053eeed312cf19041e907daec
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1eba0eb37d430a3053eeed312cf19041e907daec

Author: Jakob Bornecrantz 
Date:   Sat Feb  6 01:29:47 2010 +0100

vmware/core: Use correct flags in scanout code

---

 .../winsys/drm/vmware/core/vmw_screen_ioctl.c  |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c 
b/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c
index f2de2c3..5d81fa8 100644
--- a/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c
+++ b/src/gallium/winsys/drm/vmware/core/vmw_screen_ioctl.c
@@ -176,12 +176,12 @@ vmw_ioctl_surface_create(struct vmw_winsys_screen *vws,
 
memset(&s_arg, 0, sizeof(s_arg));
if (vws->use_old_scanout_flag &&
-   (req->flags & SVGA3D_SURFACE_HINT_SCANOUT)) {
-  req->flags = (uint32_t) (flags & ~SVGA3D_SURFACE_HINT_SCANOUT);
+   (flags & SVGA3D_SURFACE_HINT_SCANOUT)) {
+  req->flags = (uint32_t) flags;
   req->scanout = false;
-   } else if (req->flags & SVGA3D_SURFACE_HINT_SCANOUT) {
+   } else if (flags & SVGA3D_SURFACE_HINT_SCANOUT) {
   req->flags = (uint32_t) (flags & ~SVGA3D_SURFACE_HINT_SCANOUT);
-  req->scanout = false;
+  req->scanout = true;
} else {
   req->flags = (uint32_t) flags;
   req->scanout = false;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): fix bug in perspective corrected interpolants for lines

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: a1a441179bacdd33e83a48651c7a7a2cc4a8a665
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a1a441179bacdd33e83a48651c7a7a2cc4a8a665

Author: Brian Paul 
Date:   Fri Feb  5 12:57:11 2010 -0700

fix bug in perspective corrected interpolants for lines

---

 src/gallium/drivers/softpipe/sp_setup.c |3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/softpipe/sp_setup.c 
b/src/gallium/drivers/softpipe/sp_setup.c
index 9036f32..b8590a8 100644
--- a/src/gallium/drivers/softpipe/sp_setup.c
+++ b/src/gallium/drivers/softpipe/sp_setup.c
@@ -908,7 +908,6 @@ line_persp_coeff(const struct setup_context *setup,
  uint i,
  const float v[2])
 {
-   /* XXX double-check/verify this arithmetic */
const float a0 = v[0] * setup->vmin[0][3];
const float a1 = v[1] * setup->vmax[0][3];
const float da = a1 - a0;
@@ -916,7 +915,7 @@ line_persp_coeff(const struct setup_context *setup,
const float dady = da * setup->emaj.dy * setup->oneoverarea;
coef->dadx[i] = dadx;
coef->dady[i] = dady;
-   coef->a0[i] = (v[0] - /* XXX: <-- shouldn't that be a0? */
+   coef->a0[i] = (a0 -
   (dadx * (setup->vmin[0][0] - setup->pixel_offset) +
dady * (setup->vmin[0][1] - setup->pixel_offset)));
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): st/mesa: remove special-case cyl-wrap code

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: dd98a979b6f565f0b0060403fbfad36005278802
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dd98a979b6f565f0b0060403fbfad36005278802

Author: Brian Paul 
Date:   Fri Feb  5 10:18:25 2010 -0700

st/mesa: remove special-case cyl-wrap code

Cylinder wrap mode works with perspective interpolation now.

---

 src/mesa/state_tracker/st_program.c |   10 +-
 1 files changed, 1 insertions(+), 9 deletions(-)

diff --git a/src/mesa/state_tracker/st_program.c 
b/src/mesa/state_tracker/st_program.c
index e939ab3..21ad6fe 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -33,7 +33,6 @@
 
 #include "main/imports.h"
 #include "main/mtypes.h"
-#include "shader/prog_parameter.h"
 #include "shader/prog_print.h"
 #include "shader/programopt.h"
 
@@ -368,14 +367,7 @@ st_translate_fragment_program(struct st_context *st,
 assert(attr >= FRAG_ATTRIB_TEX0);
 stfp->input_semantic_index[slot] = (attr - FRAG_ATTRIB_TEX0);
 stfp->input_semantic_name[slot] = TGSI_SEMANTIC_GENERIC;
-
-/* XXX this test is very temporary */
-if (stfp->Base.Base.InputFlags[0] & PROG_PARAM_BIT_CYL_WRAP) {
-   interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
-}
-else {
-   interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE;
-}
+interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE;
 break;
  }
   }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): progs/tests: add line drawing option to cylwrap.c

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: fd6701029b15260ecf26d4139defc51cd8546ee7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fd6701029b15260ecf26d4139defc51cd8546ee7

Author: Brian Paul 
Date:   Fri Feb  5 10:54:40 2010 -0700

progs/tests: add line drawing option to cylwrap.c

---

 progs/tests/cylwrap.c |   44 ++--
 1 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/progs/tests/cylwrap.c b/progs/tests/cylwrap.c
index 95d4644..2b32f11 100644
--- a/progs/tests/cylwrap.c
+++ b/progs/tests/cylwrap.c
@@ -12,6 +12,7 @@ static int Win;
 static int WinWidth = 600, WinHeight = 400;
 static GLfloat Xrot = 0, Yrot = 0;
 static GLboolean CylWrap = GL_TRUE;
+static GLboolean Lines = GL_FALSE;
 
 
 
@@ -32,17 +33,35 @@ DrawSample(GLboolean wrap)
 
glEnable(GL_TEXTURE_2D);
 
-   /* texured quad */
-   glBegin(GL_QUAD_STRIP);
-   for (p = 0.0; p <= 1.001; p += 0.1) {
-  float x = -2.0 + p * 4.0;
-  float s = p + 0.5;
-  if (wrap && s > 1.0)
- s -= 1.0;
-  glTexCoord2f(s, 0);  glVertex2f(x, -1);
-  glTexCoord2f(s, 1);  glVertex2f(x, +1);
+   if (Lines) {
+  /* texured lines */
+  float t;
+  for (t = 0; t <= 1.0; t += 0.125) {
+ float y = -1.0 + 2.0 * t;
+ glBegin(GL_LINE_STRIP);
+ for (p = 0.0; p <= 1.001; p += 0.05) {
+float x = -2.0 + p * 4.0;
+float s = p + 0.5;
+if (wrap && s > 1.0)
+   s -= 1.0;
+glTexCoord2f(s, t);  glVertex2f(x, y);
+ }
+ glEnd();
+  }
+   }
+   else {
+  /* texured quads */
+  glBegin(GL_QUAD_STRIP);
+  for (p = 0.0; p <= 1.001; p += 0.1) {
+ float x = -2.0 + p * 4.0;
+ float s = p + 0.5;
+ if (wrap && s > 1.0)
+s -= 1.0;
+ glTexCoord2f(s, 0);  glVertex2f(x, -1);
+ glTexCoord2f(s, 1);  glVertex2f(x, +1);
+  }
+  glEnd();
}
-   glEnd();
 
glDisable(GL_TEXTURE_2D);
 
@@ -138,6 +157,10 @@ Key(unsigned char key, int x, int y)
   else
  printf("Cylindrical wrap off.\n");
   break;
+   case 'l':
+   case 'L':
+  Lines = !Lines;
+  break;
case 27:
   glutDestroyWindow(Win);
   exit(0);
@@ -215,6 +238,7 @@ Init(void)
glPointSize(3.0);
 
printf("Press 'c' to toggle cylindrical wrap mode.\n");
+   printf("Press 'l' to toggle line / quad drawing.\n");
 }
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): progs/tests: add x/y rotation to cylwrap.c

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 22a3a817aa35d2ba8e38728193eaa65e02b97cf0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=22a3a817aa35d2ba8e38728193eaa65e02b97cf0

Author: Brian Paul 
Date:   Fri Feb  5 10:21:15 2010 -0700

progs/tests: add x/y rotation to cylwrap.c

---

 progs/tests/cylwrap.c |   59 +---
 1 files changed, 45 insertions(+), 14 deletions(-)

diff --git a/progs/tests/cylwrap.c b/progs/tests/cylwrap.c
index 9d541e3..95d4644 100644
--- a/progs/tests/cylwrap.c
+++ b/progs/tests/cylwrap.c
@@ -10,6 +10,7 @@
 
 static int Win;
 static int WinWidth = 600, WinHeight = 400;
+static GLfloat Xrot = 0, Yrot = 0;
 static GLboolean CylWrap = GL_TRUE;
 
 
@@ -83,20 +84,26 @@ Draw(void)
glClear(GL_COLOR_BUFFER_BIT);
 
glPushMatrix();
-  glTranslatef(0, +1.2, 0);
-  DrawSample(GL_FALSE);
-   glPopMatrix();
+  glRotatef(Xrot, 1, 0, 0);
+  glRotatef(Yrot, 0, 1, 0);
 
-   /* set Mesa back-door state for testing cylindrical wrap mode */
-   if (CylWrap)
-  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.125);
+  glPushMatrix();
+ glTranslatef(0, +1.2, 0);
+ DrawSample(GL_FALSE);
+  glPopMatrix();
 
-   glPushMatrix();
-  glTranslatef(0, -1.2, 0);
-  DrawSample(GL_TRUE);
-   glPopMatrix();
+  /* set Mesa back-door state for testing cylindrical wrap mode */
+  if (CylWrap)
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.125);
+
+  glPushMatrix();
+ glTranslatef(0, -1.2, 0);
+ DrawSample(GL_TRUE);
+  glPopMatrix();
+
+  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 1.0);
 
-   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 1.0);
+   glPopMatrix();
 
glutSwapBuffers();
 }
@@ -110,17 +117,16 @@ Reshape(int width, int height)
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
-   glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0);
+   glFrustum(-1.0, 1.0, -1.0, 1.0, 3.0, 25.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
-   glTranslatef(0.0, 0.0, -15.0);
+   glTranslatef(0.0, 0.0, -10.0);
 }
 
 
 static void
 Key(unsigned char key, int x, int y)
 {
-   const GLfloat step = 3.0;
(void) x;
(void) y;
switch (key) {
@@ -142,6 +148,30 @@ Key(unsigned char key, int x, int y)
 
 
 static void
+SpecialKey(int key, int x, int y)
+{
+   const GLfloat step = 3.0;
+   (void) x;
+   (void) y;
+   switch (key) {
+   case GLUT_KEY_UP:
+  Xrot -= step;
+  break;
+   case GLUT_KEY_DOWN:
+  Xrot += step;
+  break;
+   case GLUT_KEY_LEFT:
+  Yrot -= step;
+  break;
+   case GLUT_KEY_RIGHT:
+  Yrot += step;
+  break;
+   }
+   glutPostRedisplay();
+}
+
+
+static void
 MakeSineWaveTexture(void)
 {
GLubyte tex[128][512][4];
@@ -196,6 +226,7 @@ main(int argc, char *argv[])
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
Win = glutCreateWindow(argv[0]);
glutReshapeFunc(Reshape);
+   glutSpecialFunc(SpecialKey);
glutKeyboardFunc(Key);
glutDisplayFunc(Draw);
Init();

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): Revert "softpipe: Implement cylindrical wrapping for linear interpolator."

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 00bd85e57437d91e227fa768527bc22e3814de1e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=00bd85e57437d91e227fa768527bc22e3814de1e

Author: Michal Krol 
Date:   Fri Feb  5 15:16:07 2010 +0100

Revert "softpipe: Implement cylindrical wrapping for linear interpolator."

This reverts commit 444cd62ca33a45bd39e8408979a0a01c246c6381.

---

 src/gallium/drivers/softpipe/sp_setup.c |   46 +++---
 1 files changed, 11 insertions(+), 35 deletions(-)

diff --git a/src/gallium/drivers/softpipe/sp_setup.c 
b/src/gallium/drivers/softpipe/sp_setup.c
index b7b52b1..bb1bff5 100644
--- a/src/gallium/drivers/softpipe/sp_setup.c
+++ b/src/gallium/drivers/softpipe/sp_setup.c
@@ -419,38 +419,19 @@ static void const_coeff( struct setup_context *setup,
  * Compute a0, dadx and dady for a linearly interpolated coefficient,
  * for a triangle.
  */
-static void
-tri_linear_coeff(struct setup_context *setup,
- struct tgsi_interp_coef *coef,
- uint vertSlot,
- uint i,
- uint cylindrical_wrap)
+static void tri_linear_coeff( struct setup_context *setup,
+  struct tgsi_interp_coef *coef,
+  uint vertSlot, uint i)
 {
float botda = setup->vmid[vertSlot][i] - setup->vmin[vertSlot][i];
float majda = setup->vmax[vertSlot][i] - setup->vmin[vertSlot][i];
-   float a, b;
-   float dadx, dady;
+   float a = setup->ebot.dy * majda - botda * setup->emaj.dy;
+   float b = setup->emaj.dx * botda - majda * setup->ebot.dx;
+   float dadx = a * setup->oneoverarea;
+   float dady = b * setup->oneoverarea;
 
assert(i <= 3);
 
-   if (cylindrical_wrap) {
-  if (botda > 0.5f) {
- botda -= 1.0f;
-  } else if (botda < -0.5f) {
- botda += 1.0f;
-  }
-  if (majda > 0.5f) {
- majda -= 1.0f;
-  } else if (majda < -0.5f) {
- majda += 1.0f;
-  }
-   }
-
-   a = setup->ebot.dy * majda - botda * setup->emaj.dy;
-   b = setup->emaj.dx * botda - majda * setup->ebot.dx;
-   dadx = a * setup->oneoverarea;
-   dady = b * setup->oneoverarea;
-
coef->dadx[i] = dadx;
coef->dady[i] = dady;
 
@@ -566,8 +547,8 @@ static void setup_tri_coefficients( struct setup_context 
*setup )
 
/* z and w are done by linear interpolation:
 */
-   tri_linear_coeff(setup, &setup->posCoef, 0, 2, 0);
-   tri_linear_coeff(setup, &setup->posCoef, 0, 3, 0);
+   tri_linear_coeff(setup, &setup->posCoef, 0, 2);
+   tri_linear_coeff(setup, &setup->posCoef, 0, 3);
 
/* setup interpolation for all the remaining attributes:
 */
@@ -581,13 +562,8 @@ static void setup_tri_coefficients( struct setup_context 
*setup )
 const_coeff(setup, &setup->coef[fragSlot], vertSlot, j);
  break;
   case INTERP_LINEAR:
- for (j = 0; j < NUM_CHANNELS; j++) {
-tri_linear_coeff(setup,
- &setup->coef[fragSlot],
- vertSlot,
- j,
- spfs->info.input_cylindrical_wrap[fragSlot] & (1 
<< j));
- }
+ for (j = 0; j < NUM_CHANNELS; j++)
+tri_linear_coeff(setup, &setup->coef[fragSlot], vertSlot, j);
  break;
   case INTERP_PERSPECTIVE:
  for (j = 0; j < NUM_CHANNELS; j++)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): softpipe: Properly implement cylindrical wrapping.

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 5fbb62f761220a81ce7a0093bfe16ea5ea063d44
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5fbb62f761220a81ce7a0093bfe16ea5ea063d44

Author: Michal Krol 
Date:   Fri Feb  5 17:12:48 2010 +0100

softpipe: Properly implement cylindrical wrapping.

---

 src/gallium/drivers/softpipe/sp_setup.c |  179 +--
 1 files changed, 148 insertions(+), 31 deletions(-)

diff --git a/src/gallium/drivers/softpipe/sp_setup.c 
b/src/gallium/drivers/softpipe/sp_setup.c
index bb1bff5..9036f32 100644
--- a/src/gallium/drivers/softpipe/sp_setup.c
+++ b/src/gallium/drivers/softpipe/sp_setup.c
@@ -393,6 +393,52 @@ static boolean setup_sort_vertices( struct setup_context 
*setup,
 }
 
 
+/* Apply cylindrical wrapping to v0, v1, v2 coordinates, if enabled.
+ * Input coordinates must be in [0, 1] range, otherwise results are undefined.
+ * Some combinations of coordinates produce invalid results,
+ * but this behaviour is acceptable.
+ */
+static void
+tri_apply_cylindrical_wrap(float v0,
+   float v1,
+   float v2,
+   uint cylindrical_wrap,
+   float output[3])
+{
+   if (cylindrical_wrap) {
+  float delta;
+
+  delta = v1 - v0;
+  if (delta > 0.5f) {
+ v0 += 1.0f;
+  }
+  else if (delta < -0.5f) {
+ v1 += 1.0f;
+  }
+
+  delta = v2 - v1;
+  if (delta > 0.5f) {
+ v1 += 1.0f;
+  }
+  else if (delta < -0.5f) {
+ v2 += 1.0f;
+  }
+
+  delta = v0 - v2;
+  if (delta > 0.5f) {
+ v2 += 1.0f;
+  }
+  else if (delta < -0.5f) {
+ v0 += 1.0f;
+  }
+   }
+
+   output[0] = v0;
+   output[1] = v1;
+   output[2] = v2;
+}
+
+
 /**
  * Compute a0 for a constant-valued coefficient (GL_FLAT shading).
  * The value value comes from vertex[slot][i].
@@ -418,13 +464,16 @@ static void const_coeff( struct setup_context *setup,
 /**
  * Compute a0, dadx and dady for a linearly interpolated coefficient,
  * for a triangle.
+ * v[0], v[1] and v[2] are vmin, vmid and vmax, respectively.
  */
-static void tri_linear_coeff( struct setup_context *setup,
-  struct tgsi_interp_coef *coef,
-  uint vertSlot, uint i)
+static void
+tri_linear_coeff(struct setup_context *setup,
+ struct tgsi_interp_coef *coef,
+ uint i,
+ const float v[3])
 {
-   float botda = setup->vmid[vertSlot][i] - setup->vmin[vertSlot][i];
-   float majda = setup->vmax[vertSlot][i] - setup->vmin[vertSlot][i];
+   float botda = v[1] - v[0];
+   float majda = v[2] - v[0];
float a = setup->ebot.dy * majda - botda * setup->emaj.dy;
float b = setup->emaj.dx * botda - majda * setup->ebot.dx;
float dadx = a * setup->oneoverarea;
@@ -447,7 +496,7 @@ static void tri_linear_coeff( struct setup_context *setup,
 * to define a0 as the sample at a pixel center somewhere near vmin
 * instead - i'll switch to this later.
 */
-   coef->a0[i] = (setup->vmin[vertSlot][i] -
+   coef->a0[i] = (v[0] -
   (dadx * (setup->vmin[0][0] - setup->pixel_offset) +
dady * (setup->vmin[0][1] - setup->pixel_offset)));
 
@@ -468,16 +517,19 @@ static void tri_linear_coeff( struct setup_context *setup,
  * the plane coefficients (a0, dadx, dady).
  * Later, when we compute the value at a particular fragment position we'll
  * divide the interpolated value by the interpolated W at that fragment.
+ * v[0], v[1] and v[2] are vmin, vmid and vmax, respectively.
  */
-static void tri_persp_coeff( struct setup_context *setup,
- struct tgsi_interp_coef *coef,
- uint vertSlot, uint i)
+static void
+tri_persp_coeff(struct setup_context *setup,
+struct tgsi_interp_coef *coef,
+uint i,
+const float v[3])
 {
/* premultiply by 1/w  (v[0][3] is always W):
 */
-   float mina = setup->vmin[vertSlot][i] * setup->vmin[0][3];
-   float mida = setup->vmid[vertSlot][i] * setup->vmid[0][3];
-   float maxa = setup->vmax[vertSlot][i] * setup->vmax[0][3];
+   float mina = v[0] * setup->vmin[0][3];
+   float mida = v[1] * setup->vmid[0][3];
+   float maxa = v[2] * setup->vmax[0][3];
float botda = mida - mina;
float majda = maxa - mina;
float a = setup->ebot.dy * majda - botda * setup->emaj.dy;
@@ -544,11 +596,19 @@ static void setup_tri_coefficients( struct setup_context 
*setup )
const struct sp_fragment_shader *spfs = softpipe->fs;
const struct vertex_info *vinfo = softpipe_get_vertex_info(softpipe);
uint fragSlot;
+   float v[3];
 
/* z and w are done by linear interpolation:
 */
-   tri_linear_coeff(setup, &setup->posCoef, 0, 2);
-   tri_linear_coeff(setup, &setup->posCoef, 0, 3);
+   v[0] = setup->vmin[0][2];
+   v[1] = setup->vmid[0][2];
+   v[2] = setup->vmax[0][2];
+   tri_li

Mesa (master): progs/tests: new test program for exercising cylindrical tex wrap mode

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 86921aaf3ff96fd4828964e37bd66cf2ea8035b1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=86921aaf3ff96fd4828964e37bd66cf2ea8035b1

Author: Brian Paul 
Date:   Thu Feb  4 16:43:08 2010 -0700

progs/tests: new test program for exercising cylindrical tex wrap mode

---

 progs/tests/Makefile   |1 +
 progs/tests/SConscript |1 +
 progs/tests/cylwrap.c  |  204 
 3 files changed, 206 insertions(+), 0 deletions(-)

diff --git a/progs/tests/Makefile b/progs/tests/Makefile
index a38f411..d33415a 100644
--- a/progs/tests/Makefile
+++ b/progs/tests/Makefile
@@ -41,6 +41,7 @@ SOURCES = \
copypixrate.c \
crossbar.c \
cva.c \
+   cylwrap.c \
drawbuffers.c \
drawbuffers2.c \
exactrast.c \
diff --git a/progs/tests/SConscript b/progs/tests/SConscript
index 0a11b96..04e4bdf 100644
--- a/progs/tests/SConscript
+++ b/progs/tests/SConscript
@@ -45,6 +45,7 @@ progs = [
 'copypixrate',
 'crossbar',
 'cva',
+'cylwrap',
 'drawbuffers',
 'drawbuffers2',
 'exactrast',
diff --git a/progs/tests/cylwrap.c b/progs/tests/cylwrap.c
new file mode 100644
index 000..9d541e3
--- /dev/null
+++ b/progs/tests/cylwrap.c
@@ -0,0 +1,204 @@
+/*
+ * Test cylindrical texcoord wrapping
+ */
+
+
+#include 
+#include 
+#include 
+#include 
+
+static int Win;
+static int WinWidth = 600, WinHeight = 400;
+static GLboolean CylWrap = GL_TRUE;
+
+
+
+static void
+PrintString(const char *s)
+{
+   while (*s) {
+  glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s);
+  s++;
+   }
+}
+
+
+static void
+DrawSample(GLboolean wrap)
+{
+   float p;
+
+   glEnable(GL_TEXTURE_2D);
+
+   /* texured quad */
+   glBegin(GL_QUAD_STRIP);
+   for (p = 0.0; p <= 1.001; p += 0.1) {
+  float x = -2.0 + p * 4.0;
+  float s = p + 0.5;
+  if (wrap && s > 1.0)
+ s -= 1.0;
+  glTexCoord2f(s, 0);  glVertex2f(x, -1);
+  glTexCoord2f(s, 1);  glVertex2f(x, +1);
+   }
+   glEnd();
+
+   glDisable(GL_TEXTURE_2D);
+
+   /* hash marks */
+   glColor3f(0,0,0);
+   glBegin(GL_LINES);
+   for (p = 0.0; p <= 1.001; p += 0.1) {
+  float x = -2.0 + p * 4.0;
+  glVertex2f(x, -1.1);
+  glVertex2f(x, -0.8);
+   }
+   glEnd();
+
+   /* labels */
+   glColor3f(1,1,1);
+   for (p = 0.0; p <= 1.001; p += 0.1) {
+  char str[100];
+  float x = -2.0 + p * 4.0;
+  float s = p + 0.5;
+
+  if (wrap && s > 1.0)
+ s -= 1.0;
+
+  sprintf(str, "%3.1f", s);
+  glRasterPos2f(x, -1.2);
+  glBitmap(0, 0, 0, 0, -11, 0, NULL);
+  PrintString(str);
+  if (p == 0.0) {
+ glBitmap(0, 0, 0, 0, -55, 0, NULL);
+ PrintString("s =");
+  }
+   }
+}
+
+
+static void
+Draw(void)
+{
+   glClear(GL_COLOR_BUFFER_BIT);
+
+   glPushMatrix();
+  glTranslatef(0, +1.2, 0);
+  DrawSample(GL_FALSE);
+   glPopMatrix();
+
+   /* set Mesa back-door state for testing cylindrical wrap mode */
+   if (CylWrap)
+  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.125);
+
+   glPushMatrix();
+  glTranslatef(0, -1.2, 0);
+  DrawSample(GL_TRUE);
+   glPopMatrix();
+
+   glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 1.0);
+
+   glutSwapBuffers();
+}
+
+
+static void
+Reshape(int width, int height)
+{
+   WinWidth = width;
+   WinHeight = height;
+   glViewport(0, 0, width, height);
+   glMatrixMode(GL_PROJECTION);
+   glLoadIdentity();
+   glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0);
+   glMatrixMode(GL_MODELVIEW);
+   glLoadIdentity();
+   glTranslatef(0.0, 0.0, -15.0);
+}
+
+
+static void
+Key(unsigned char key, int x, int y)
+{
+   const GLfloat step = 3.0;
+   (void) x;
+   (void) y;
+   switch (key) {
+   case 'c':
+   case 'C':
+  CylWrap = !CylWrap;
+  if (CylWrap)
+ printf("Cylindrical wrap on.\n");
+  else
+ printf("Cylindrical wrap off.\n");
+  break;
+   case 27:
+  glutDestroyWindow(Win);
+  exit(0);
+  break;
+   }
+   glutPostRedisplay();
+}
+
+
+static void
+MakeSineWaveTexture(void)
+{
+   GLubyte tex[128][512][4];
+   int i, j;
+
+   for (j = 0; j < 128; j++) {
+  for (i = 0; i < 512; i++) {
+ float x = i / 511.0 * 2.0 * M_PI + M_PI * 0.5;
+ float y0 = sin(x) * 0.5 + 0.5;
+ int jy0 = y0 * 128;
+ float y1 = sin(x + M_PI) * 0.5 + 0.5;
+ int jy1 = y1 * 128;
+ if (j < jy0)
+tex[j][i][0] = 0xff;
+ else
+tex[j][i][0] = 0;
+ if (j < jy1)
+tex[j][i][1] = 0xff;
+ else
+tex[j][i][1] = 0;
+ tex[j][i][2] = 0;
+ tex[j][i][3] = 0xff;
+  }
+   }
+
+   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 128, 0,
+GL_RGBA, GL_UNSIGNED_BYTE, tex);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REP

Mesa (master): st/mesa: check for PROG_PARAM_BIT_CYL_WRAP flag

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: ae4dde6598eacb64bf865037bdaea2041499aa27
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ae4dde6598eacb64bf865037bdaea2041499aa27

Author: Brian Paul 
Date:   Thu Feb  4 16:36:55 2010 -0700

st/mesa: check for PROG_PARAM_BIT_CYL_WRAP flag

---

 src/mesa/state_tracker/st_mesa_to_tgsi.c |   17 +
 src/mesa/state_tracker/st_program.c  |   10 +-
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c 
b/src/mesa/state_tracker/st_mesa_to_tgsi.c
index 3eb4c1c..06cf6d2 100644
--- a/src/mesa/state_tracker/st_mesa_to_tgsi.c
+++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c
@@ -825,10 +825,19 @@ st_translate_mesa_program(
if (procType == TGSI_PROCESSOR_FRAGMENT) {
   struct gl_fragment_program* fp = (struct gl_fragment_program*)program;
   for (i = 0; i < numInputs; i++) {
- t->inputs[i] = ureg_DECL_fs_input(ureg,
-   inputSemanticName[i],
-   inputSemanticIndex[i],
-   interpMode[i]);
+ if (program->InputFlags[0] & PROG_PARAM_BIT_CYL_WRAP) {
+t->inputs[i] = ureg_DECL_fs_input_cyl(ureg,
+  inputSemanticName[i],
+  inputSemanticIndex[i],
+  interpMode[i],
+  TGSI_CYLINDRICAL_WRAP_X);
+ }
+ else {
+t->inputs[i] = ureg_DECL_fs_input(ureg,
+  inputSemanticName[i],
+  inputSemanticIndex[i],
+  interpMode[i]);
+ }
   }
 
   if (program->InputsRead & FRAG_BIT_WPOS) {
diff --git a/src/mesa/state_tracker/st_program.c 
b/src/mesa/state_tracker/st_program.c
index 21ad6fe..e939ab3 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -33,6 +33,7 @@
 
 #include "main/imports.h"
 #include "main/mtypes.h"
+#include "shader/prog_parameter.h"
 #include "shader/prog_print.h"
 #include "shader/programopt.h"
 
@@ -367,7 +368,14 @@ st_translate_fragment_program(struct st_context *st,
 assert(attr >= FRAG_ATTRIB_TEX0);
 stfp->input_semantic_index[slot] = (attr - FRAG_ATTRIB_TEX0);
 stfp->input_semantic_name[slot] = TGSI_SEMANTIC_GENERIC;
-interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE;
+
+/* XXX this test is very temporary */
+if (stfp->Base.Base.InputFlags[0] & PROG_PARAM_BIT_CYL_WRAP) {
+   interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
+}
+else {
+   interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE;
+}
 break;
  }
   }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: add back-door support for cylindrical texture wrap mode

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 4a9f1eed2ba02f2ae2bf92d16f89d10f09b2a21e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4a9f1eed2ba02f2ae2bf92d16f89d10f09b2a21e

Author: Brian Paul 
Date:   Thu Feb  4 16:40:47 2010 -0700

mesa: add back-door support for cylindrical texture wrap mode

If the texture priority field is 0.125 set the PROG_PARAM_BIT_CYL_WRAP
flag.  The gallium state tracker will look for this flag.

This feature is only for testing purposes and may be remove at some
point.  But if it's useful we could write a GL/Mesa extension to
expose it properly.

---

 src/mesa/main/texenvprogram.c|   12 
 src/mesa/shader/prog_parameter.h |1 +
 2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c
index 414607e..5cc5fda 100644
--- a/src/mesa/main/texenvprogram.c
+++ b/src/mesa/main/texenvprogram.c
@@ -113,6 +113,8 @@ struct state_key {
   GLuint NumArgsA:3;  /**< up to MAX_COMBINER_TERMS */
   GLuint ModeA:5; /**< MODE_x */
 
+  GLuint texture_cyl_wrap:1; /**< For gallium test/debug only */
+
   struct mode_opt OptRGB[MAX_COMBINER_TERMS];
   struct mode_opt OptA[MAX_COMBINER_TERMS];
} unit[MAX_TEXTURE_UNITS];
@@ -464,6 +466,10 @@ static GLuint make_state_key( GLcontext *ctx,  struct 
state_key *key )
  key->unit[i].OptRGB[1].Operand = OPR_SRC_COLOR;
  key->unit[i].OptRGB[1].Source = texUnit->BumpTarget - GL_TEXTURE0 + 
SRC_TEXTURE0;
}
+
+  /* this is a back-door for enabling cylindrical texture wrap mode */
+  if (texObj->Priority == 0.125)
+ key->unit[i].texture_cyl_wrap = 1;
}
 
/* _NEW_LIGHT | _NEW_FOG */
@@ -1302,6 +1308,12 @@ static void load_texture( struct texenv_fragment_program 
*p, GLuint unit )
   }
   else
 p->src_texture[unit] = get_zero(p);
+
+  if (p->state->unit[unit].texture_cyl_wrap) {
+ /* set flag which is checked by Mesa->Gallium program translation */
+ p->program->Base.InputFlags[0] |= PROG_PARAM_BIT_CYL_WRAP;
+  }
+
}
 }
 
diff --git a/src/mesa/shader/prog_parameter.h b/src/mesa/shader/prog_parameter.h
index 699cb0c..c85 100644
--- a/src/mesa/shader/prog_parameter.h
+++ b/src/mesa/shader/prog_parameter.h
@@ -43,6 +43,7 @@
 #define PROG_PARAM_BIT_INVARIANT  0x2  /**< for varying vars (GLSL 1.20) */
 #define PROG_PARAM_BIT_FLAT   0x4  /**< for varying vars (GLSL 1.30) */
 #define PROG_PARAM_BIT_LINEAR 0x8  /**< for varying vars (GLSL 1.30) */
+#define PROG_PARAM_BIT_CYL_WRAP  0x10  /**< XXX gallium debug */
 /*...@}*/
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium: Remove prefilter member from pipe_sampler_state struct.

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 9a8473da8319c039c003af3b6a004726d48444fc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a8473da8319c039c003af3b6a004726d48444fc

Author: Michal Krol 
Date:   Wed Feb  3 15:49:10 2010 +0100

gallium: Remove prefilter member from pipe_sampler_state struct.

---

 src/gallium/auxiliary/gallivm/lp_bld_sample.c |1 -
 src/gallium/auxiliary/gallivm/lp_bld_sample.h |1 -
 src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c |1 -
 src/gallium/auxiliary/vl/vl_compositor.c  |1 -
 src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c  |1 -
 src/gallium/docs/source/cso/sampler.rst   |2 --
 src/gallium/drivers/trace/tr_dump_state.c |1 -
 src/gallium/include/pipe/p_state.h|1 -
 8 files changed, 0 insertions(+), 9 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c 
b/src/gallium/auxiliary/gallivm/lp_bld_sample.c
index 9003e10..a133b56 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c
@@ -74,7 +74,6 @@ lp_sampler_static_state(struct lp_sampler_static_state *state,
   state->compare_func  = sampler->compare_func;
}
state->normalized_coords = sampler->normalized_coords;
-   state->prefilter = sampler->prefilter;
 }
 
 
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h 
b/src/gallium/auxiliary/gallivm/lp_bld_sample.h
index 8cb8210..39edcf1 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h
@@ -70,7 +70,6 @@ struct lp_sampler_static_state
unsigned compare_mode:1;
unsigned compare_func:3;
unsigned normalized_coords:1;
-   unsigned prefilter:4;
 };
 
 
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c 
b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
index 854dd0b..57c2b76 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
@@ -592,7 +592,6 @@ lp_build_sample_soa(LLVMBuilderRef builder,
 
/* FIXME: respect static_state->min_mip_filter */;
/* FIXME: respect static_state->mag_img_filter */;
-   /* FIXME: respect static_state->prefilter */;
 
lp_build_sample_compare(&bld, p, texel);
 }
diff --git a/src/gallium/auxiliary/vl/vl_compositor.c 
b/src/gallium/auxiliary/vl/vl_compositor.c
index 6c5298d..ba23435 100644
--- a/src/gallium/auxiliary/vl/vl_compositor.c
+++ b/src/gallium/auxiliary/vl/vl_compositor.c
@@ -245,7 +245,6 @@ init_pipe_state(struct vl_compositor *c)
sampler.compare_mode = PIPE_TEX_COMPARE_NONE;
sampler.compare_func = PIPE_FUNC_ALWAYS;
sampler.normalized_coords = 1;
-   /*sampler.prefilter = ;*/
/*sampler.lod_bias = ;*/
/*sampler.min_lod = ;*/
/*sampler.max_lod = ;*/
diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c 
b/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c
index c2552f4..f323de0 100644
--- a/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c
+++ b/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c
@@ -762,7 +762,6 @@ init_pipe_state(struct vl_mpeg12_mc_renderer *r)
   sampler.compare_mode = PIPE_TEX_COMPARE_NONE;
   sampler.compare_func = PIPE_FUNC_ALWAYS;
   sampler.normalized_coords = 1;
-  /*sampler.prefilter = ; */
   /*sampler.shadow_ambient = ; */
   /*sampler.lod_bias = ; */
   sampler.min_lod = 0;
diff --git a/src/gallium/docs/source/cso/sampler.rst 
b/src/gallium/docs/source/cso/sampler.rst
index 8b67ca5..044 100644
--- a/src/gallium/docs/source/cso/sampler.rst
+++ b/src/gallium/docs/source/cso/sampler.rst
@@ -35,8 +35,6 @@ normalized_coords
 Whether the texture coordinates are normalized. If normalized, they will
 always be in [0, 1]. If not, they will be in the range of each dimension
 of the loaded texture.
-prefilter
-Cylindrical texcoord wrap enable per coord. Not exposed by most APIs.
 lod_bias
 The bias to apply to the level of detail.
 min_lod
diff --git a/src/gallium/drivers/trace/tr_dump_state.c 
b/src/gallium/drivers/trace/tr_dump_state.c
index c7364e2..16b24f1 100644
--- a/src/gallium/drivers/trace/tr_dump_state.c
+++ b/src/gallium/drivers/trace/tr_dump_state.c
@@ -422,7 +422,6 @@ void trace_dump_sampler_state(const struct 
pipe_sampler_state *state)
trace_dump_member(uint, state, compare_mode);
trace_dump_member(uint, state, compare_func);
trace_dump_member(bool, state, normalized_coords);
-   trace_dump_member(uint, state, prefilter);
trace_dump_member(float, state, lod_bias);
trace_dump_member(float, state, min_lod);
trace_dump_member(float, state, max_lod);
diff --git a/src/gallium/include/pipe/p_state.h 
b/src/gallium/include/pipe/p_state.h
index 9ae096e..9715862 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -279,7 +279,6 @@ struct pipe_sampler_state
unsigned compare_mode:1;  /**< PIPE_TEX_COMPARE_x */
unsigned compare_func:3

Mesa (master): docs: Document TGSI Declaration token.

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 63d60979109fc715fbfb293ce0f831e792f45549
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=63d60979109fc715fbfb293ce0f831e792f45549

Author: Michal Krol 
Date:   Wed Feb  3 15:45:32 2010 +0100

docs: Document TGSI Declaration token.

---

 src/gallium/docs/source/tgsi.rst |   28 
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst
index 5478d86..fc5482d 100644
--- a/src/gallium/docs/source/tgsi.rst
+++ b/src/gallium/docs/source/tgsi.rst
@@ -1280,6 +1280,34 @@ Other tokens
 ---
 
 
+Declaration
+^^^
+
+
+Declares a register that is will be referenced as an operand in Instruction
+tokens.
+
+File field contains register file that is being declared and is one
+of TGSI_FILE.
+
+UsageMask field specifies which of the register components can be accessed
+and is one of TGSI_WRITEMASK.
+
+Interpolate field is only valid for fragment shader INPUT register files.
+It specifes the way input is being interpolated by the rasteriser and is one
+of TGSI_INTERPOLATE.
+
+If Dimension flag is set to 1, a Declaration Dimension token follows.
+
+If Semantic flag is set to 1, a Declaration Semantic token follows.
+
+CylindricalWrap bitfield is only valid for fragment shader INPUT register
+files. It specifies which register components should be subject to cylindrical
+wrapping when interpolating by the rasteriser. If TGSI_CYLINDRICAL_WRAP_X
+is set to 1, the X component should be interpolated according to cylindrical
+wrapping rules.
+
+
 Declaration Semantic
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): softpipe: Implement cylindrical wrapping for linear interpolator.

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: e04c8ecc61dfe05d0e17cbffd2f758b0861083bd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e04c8ecc61dfe05d0e17cbffd2f758b0861083bd

Author: Michal Krol 
Date:   Wed Feb  3 15:30:17 2010 +0100

softpipe: Implement cylindrical wrapping for linear interpolator.

---

 src/gallium/drivers/softpipe/sp_setup.c |   46 +++---
 1 files changed, 35 insertions(+), 11 deletions(-)

diff --git a/src/gallium/drivers/softpipe/sp_setup.c 
b/src/gallium/drivers/softpipe/sp_setup.c
index bb1bff5..b7b52b1 100644
--- a/src/gallium/drivers/softpipe/sp_setup.c
+++ b/src/gallium/drivers/softpipe/sp_setup.c
@@ -419,19 +419,38 @@ static void const_coeff( struct setup_context *setup,
  * Compute a0, dadx and dady for a linearly interpolated coefficient,
  * for a triangle.
  */
-static void tri_linear_coeff( struct setup_context *setup,
-  struct tgsi_interp_coef *coef,
-  uint vertSlot, uint i)
+static void
+tri_linear_coeff(struct setup_context *setup,
+ struct tgsi_interp_coef *coef,
+ uint vertSlot,
+ uint i,
+ uint cylindrical_wrap)
 {
float botda = setup->vmid[vertSlot][i] - setup->vmin[vertSlot][i];
float majda = setup->vmax[vertSlot][i] - setup->vmin[vertSlot][i];
-   float a = setup->ebot.dy * majda - botda * setup->emaj.dy;
-   float b = setup->emaj.dx * botda - majda * setup->ebot.dx;
-   float dadx = a * setup->oneoverarea;
-   float dady = b * setup->oneoverarea;
+   float a, b;
+   float dadx, dady;
 
assert(i <= 3);
 
+   if (cylindrical_wrap) {
+  if (botda > 0.5f) {
+ botda -= 1.0f;
+  } else if (botda < -0.5f) {
+ botda += 1.0f;
+  }
+  if (majda > 0.5f) {
+ majda -= 1.0f;
+  } else if (majda < -0.5f) {
+ majda += 1.0f;
+  }
+   }
+
+   a = setup->ebot.dy * majda - botda * setup->emaj.dy;
+   b = setup->emaj.dx * botda - majda * setup->ebot.dx;
+   dadx = a * setup->oneoverarea;
+   dady = b * setup->oneoverarea;
+
coef->dadx[i] = dadx;
coef->dady[i] = dady;
 
@@ -547,8 +566,8 @@ static void setup_tri_coefficients( struct setup_context 
*setup )
 
/* z and w are done by linear interpolation:
 */
-   tri_linear_coeff(setup, &setup->posCoef, 0, 2);
-   tri_linear_coeff(setup, &setup->posCoef, 0, 3);
+   tri_linear_coeff(setup, &setup->posCoef, 0, 2, 0);
+   tri_linear_coeff(setup, &setup->posCoef, 0, 3, 0);
 
/* setup interpolation for all the remaining attributes:
 */
@@ -562,8 +581,13 @@ static void setup_tri_coefficients( struct setup_context 
*setup )
 const_coeff(setup, &setup->coef[fragSlot], vertSlot, j);
  break;
   case INTERP_LINEAR:
- for (j = 0; j < NUM_CHANNELS; j++)
-tri_linear_coeff(setup, &setup->coef[fragSlot], vertSlot, j);
+ for (j = 0; j < NUM_CHANNELS; j++) {
+tri_linear_coeff(setup,
+ &setup->coef[fragSlot],
+ vertSlot,
+ j,
+ spfs->info.input_cylindrical_wrap[fragSlot] & (1 
<< j));
+ }
  break;
   case INTERP_PERSPECTIVE:
  for (j = 0; j < NUM_CHANNELS; j++)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): tgsi: Add ureg_DECL_fs_input_cyl().

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 33a9fb35dd4c74945840ce1e1b496c43ecfc92de
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=33a9fb35dd4c74945840ce1e1b496c43ecfc92de

Author: Michal Krol 
Date:   Wed Feb  3 15:28:50 2010 +0100

tgsi: Add ureg_DECL_fs_input_cyl().

Allows one to declare fragment shader inputs with cylindrical wrap info.

---

 src/gallium/auxiliary/tgsi/tgsi_ureg.c |  124 +++
 src/gallium/auxiliary/tgsi/tgsi_ureg.h |   22 +-
 2 files changed, 94 insertions(+), 52 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.c 
b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
index 27960ba..3d0455d 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ureg.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
@@ -97,6 +97,7 @@ struct ureg_program
   unsigned semantic_name;
   unsigned semantic_index;
   unsigned interp;
+  unsigned cylindrical_wrap;
} fs_input[UREG_MAX_INPUT];
unsigned nr_fs_inputs;
 
@@ -286,32 +287,34 @@ ureg_property_fs_coord_pixel_center(struct ureg_program 
*ureg,
 
 
 
-struct ureg_src 
-ureg_DECL_fs_input( struct ureg_program *ureg,
-unsigned name,
-unsigned index,
-unsigned interp_mode )
+struct ureg_src
+ureg_DECL_fs_input_cyl(struct ureg_program *ureg,
+   unsigned semantic_name,
+   unsigned semantic_index,
+   unsigned interp_mode,
+   unsigned cylindrical_wrap)
 {
unsigned i;
 
for (i = 0; i < ureg->nr_fs_inputs; i++) {
-  if (ureg->fs_input[i].semantic_name == name &&
-  ureg->fs_input[i].semantic_index == index) 
+  if (ureg->fs_input[i].semantic_name == semantic_name &&
+  ureg->fs_input[i].semantic_index == semantic_index) {
  goto out;
+  }
}
 
if (ureg->nr_fs_inputs < UREG_MAX_INPUT) {
-  ureg->fs_input[i].semantic_name = name;
-  ureg->fs_input[i].semantic_index = index;
+  ureg->fs_input[i].semantic_name = semantic_name;
+  ureg->fs_input[i].semantic_index = semantic_index;
   ureg->fs_input[i].interp = interp_mode;
+  ureg->fs_input[i].cylindrical_wrap = cylindrical_wrap;
   ureg->nr_fs_inputs++;
-   }
-   else {
-  set_bad( ureg );
+   } else {
+  set_bad(ureg);
}
 
 out:
-   return ureg_src_register( TGSI_FILE_INPUT, i );
+   return ureg_src_register(TGSI_FILE_INPUT, i);
 }
 
 
@@ -1088,32 +1091,59 @@ ureg_label_insn(struct ureg_program *ureg,
 }
 
 
-
-static void emit_decl( struct ureg_program *ureg,
-   unsigned file,
-   unsigned index,
-   unsigned semantic_name,
-   unsigned semantic_index,
-   unsigned interp )
+static void
+emit_decl_semantic(struct ureg_program *ureg,
+   unsigned file,
+   unsigned index,
+   unsigned semantic_name,
+   unsigned semantic_index)
 {
-   union tgsi_any_token *out = get_tokens( ureg, DOMAIN_DECL, 3 );
+   union tgsi_any_token *out = get_tokens(ureg, DOMAIN_DECL, 3);
 
out[0].value = 0;
out[0].decl.Type = TGSI_TOKEN_TYPE_DECLARATION;
out[0].decl.NrTokens = 3;
out[0].decl.File = file;
out[0].decl.UsageMask = TGSI_WRITEMASK_XYZW; /* FIXME! */
-   out[0].decl.Interpolate = interp;
out[0].decl.Semantic = 1;
 
out[1].value = 0;
-   out[1].decl_range.First = 
-  out[1].decl_range.Last = index;
+   out[1].decl_range.First = index;
+   out[1].decl_range.Last = index;
 
out[2].value = 0;
out[2].decl_semantic.Name = semantic_name;
out[2].decl_semantic.Index = semantic_index;
+}
+
+
+static void
+emit_decl_fs(struct ureg_program *ureg,
+ unsigned file,
+ unsigned index,
+ unsigned semantic_name,
+ unsigned semantic_index,
+ unsigned interpolate,
+ unsigned cylindrical_wrap)
+{
+   union tgsi_any_token *out = get_tokens(ureg, DOMAIN_DECL, 3);
+
+   out[0].value = 0;
+   out[0].decl.Type = TGSI_TOKEN_TYPE_DECLARATION;
+   out[0].decl.NrTokens = 3;
+   out[0].decl.File = file;
+   out[0].decl.UsageMask = TGSI_WRITEMASK_XYZW; /* FIXME! */
+   out[0].decl.Interpolate = interpolate;
+   out[0].decl.Semantic = 1;
+   out[0].decl.CylindricalWrap = cylindrical_wrap;
 
+   out[1].value = 0;
+   out[1].decl_range.First = index;
+   out[1].decl_range.Last = index;
+
+   out[2].value = 0;
+   out[2].decl_semantic.Name = semantic_name;
+   out[2].decl_semantic.Index = semantic_index;
 }
 
 
@@ -1249,40 +1279,38 @@ static void emit_decls( struct ureg_program *ureg )
   }
} else if (ureg->processor == TGSI_PROCESSOR_FRAGMENT) {
   for (i = 0; i < ureg->nr_fs_inputs; i++) {
- emit_decl( ureg, 
-TGSI_FILE_INPUT, 
-i,
-ureg->fs_input[i].semantic_name,
-ureg->fs_input[i].semantic_index,
-

Mesa (master): tgsi: Gather cylindrical wrap info in tgsi_shader_info struct.

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 607a830fe281bb042740ef5cd9ae99df73e19090
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=607a830fe281bb042740ef5cd9ae99df73e19090

Author: Michal Krol 
Date:   Wed Feb  3 15:29:21 2010 +0100

tgsi: Gather cylindrical wrap info in tgsi_shader_info struct.

---

 src/gallium/auxiliary/tgsi/tgsi_scan.c |1 +
 src/gallium/auxiliary/tgsi/tgsi_scan.h |1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c 
b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index b9be8dc..232fc53 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -131,6 +131,7 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
   info->input_semantic_name[reg] = 
(ubyte)fulldecl->Semantic.Name;
   info->input_semantic_index[reg] = 
(ubyte)fulldecl->Semantic.Index;
   info->input_interpolate[reg] = 
(ubyte)fulldecl->Declaration.Interpolate;
+  info->input_cylindrical_wrap[reg] = 
(ubyte)fulldecl->Declaration.CylindricalWrap;
   info->num_inputs++;
}
else if (file == TGSI_FILE_OUTPUT) {
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h 
b/src/gallium/auxiliary/tgsi/tgsi_scan.h
index dae5376..741aa7d 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h
@@ -45,6 +45,7 @@ struct tgsi_shader_info
ubyte input_semantic_name[PIPE_MAX_SHADER_INPUTS]; /**< TGSI_SEMANTIC_x */
ubyte input_semantic_index[PIPE_MAX_SHADER_INPUTS];
ubyte input_interpolate[PIPE_MAX_SHADER_INPUTS];
+   ubyte input_cylindrical_wrap[PIPE_MAX_SHADER_INPUTS];
ubyte output_semantic_name[PIPE_MAX_SHADER_OUTPUTS]; /**< TGSI_SEMANTIC_x */
ubyte output_semantic_index[PIPE_MAX_SHADER_OUTPUTS];
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): tgsi: Remove tgsi_dump_c.[ch].

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 5ee856e195ca3745d6460c0874c2c9463cf359df
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5ee856e195ca3745d6460c0874c2c9463cf359df

Author: Michal Krol 
Date:   Wed Feb  3 11:19:04 2010 +0100

tgsi: Remove tgsi_dump_c.[ch].

Little utility after development stabilisation, use tgsi_dump instead.

---

 src/gallium/auxiliary/SConscript |1 -
 src/gallium/auxiliary/tgsi/tgsi_dump_c.c |  462 --
 src/gallium/auxiliary/tgsi/tgsi_dump_c.h |   49 
 3 files changed, 0 insertions(+), 512 deletions(-)

diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript
index 1bc1f6b..9709344 100644
--- a/src/gallium/auxiliary/SConscript
+++ b/src/gallium/auxiliary/SConscript
@@ -109,7 +109,6 @@ source = [
 'rtasm/rtasm_ppc_spe.c',
 'tgsi/tgsi_build.c',
 'tgsi/tgsi_dump.c',
-'tgsi/tgsi_dump_c.c',
 'tgsi/tgsi_exec.c',
 'tgsi/tgsi_info.c',
 'tgsi/tgsi_iterate.c',
diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump_c.c 
b/src/gallium/auxiliary/tgsi/tgsi_dump_c.c
deleted file mode 100644
index 47fd1dd..000
--- a/src/gallium/auxiliary/tgsi/tgsi_dump_c.c
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- * 
- * Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * 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"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * 
- **/
-
-#include "util/u_debug.h"
-#include "util/u_string.h"
-#include "tgsi_dump_c.h"
-#include "tgsi_build.h"
-#include "tgsi_info.h"
-#include "tgsi_parse.h"
-
-static void
-dump_enum(
-   const unsignede,
-   const char**enums,
-   const unsignedenums_count )
-{
-   if (e >= enums_count) {
-  debug_printf( "%u", e );
-   }
-   else {
-  debug_printf( "%s", enums[e] );
-   }
-}
-
-#define EOL()   debug_printf( "\n" )
-#define TXT(S)  debug_printf( "%s", S )
-#define CHR(C)  debug_printf( "%c", C )
-#define UIX(I)  debug_printf( "0x%x", I )
-#define UID(I)  debug_printf( "%u", I )
-#define SID(I)  debug_printf( "%d", I )
-#define FLT(F)  debug_printf( "%10.4f", F )
-#define ENM(E,ENUMS)dump_enum( E, ENUMS, sizeof( ENUMS ) / sizeof( *ENUMS 
) )
-
-static const char *TGSI_PROCESSOR_TYPES[] =
-{
-   "PROCESSOR_FRAGMENT",
-   "PROCESSOR_VERTEX",
-   "PROCESSOR_GEOMETRY"
-};
-
-static const char *TGSI_TOKEN_TYPES[] =
-{
-   "TOKEN_TYPE_DECLARATION",
-   "TOKEN_TYPE_IMMEDIATE",
-   "TOKEN_TYPE_INSTRUCTION"
-};
-
-static const char *TGSI_FILES[TGSI_FILE_COUNT] =
-{
-   "FILE_NULL",
-   "FILE_CONSTANT",
-   "FILE_INPUT",
-   "FILE_OUTPUT",
-   "FILE_TEMPORARY",
-   "FILE_SAMPLER",
-   "FILE_ADDRESS",
-   "FILE_IMMEDIATE",
-   "FILE_LOOP",
-   "FILE_PREDICATE"
-};
-
-static const char *TGSI_INTERPOLATES[] =
-{
-   "INTERPOLATE_CONSTANT",
-   "INTERPOLATE_LINEAR",
-   "INTERPOLATE_PERSPECTIVE"
-};
-
-static const char *TGSI_SEMANTICS[] =
-{
-   "SEMANTIC_POSITION",
-   "SEMANTIC_COLOR",
-   "SEMANTIC_BCOLOR",
-   "SEMANTIC_FOG",
-   "SEMANTIC_PSIZE",
-   "SEMANTIC_GENERIC",
-   "SEMANTIC_NORMAL"
-};
-
-static const char *TGSI_IMMS[] =
-{
-   "IMM_FLOAT32"
-};
-
-static const char *TGSI_SATS[] =
-{
-   "SAT_NONE",
-   "SAT_ZERO_ONE",
-   "SAT_MINUS_PLUS_ONE"
-};
-
-static const char *TGSI_SWIZZLES[] =
-{
-   "SWIZZLE_X",
-   "SWIZZLE_Y",
-   "SWIZZLE_Z",
-   "SWIZZLE_W"
-};
-
-static const char *TGSI_TEXTURES[] =
-{
-   "TEXTURE_UNKNOWN",
-   "TEXTURE_1D",
-   "TEXTURE_2D",
-   "TEXTURE_3D",
-   "TEXTURE_CUBE",
-   "TEXTURE_RECT",
-   "TEXTURE_SHADOW1D",
-   "TEXTURE_SHADOW2D",
-   "TEXTURE_SHADOWRECT"
-};
-
-static const char *TGSI_WRITEMASKS[] =
-{
-   "0",
-   "WRITEMASK_X",
-   "WRITEMASK_Y",
-   "WRITEMASK_XY",
-   "WRITEMASK_Z",
-   "WRITEMASK_XZ",
-   "WRITEMASK_Y

Mesa (master): gallium: Add cylindrical wrap info to TGSI declaration.

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 6f6d740c851aa8bedc7c51dbd5db14de338787f1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6f6d740c851aa8bedc7c51dbd5db14de338787f1

Author: Michal Krol 
Date:   Wed Feb  3 15:28:03 2010 +0100

gallium: Add cylindrical wrap info to TGSI declaration.

---

 src/gallium/auxiliary/tgsi/tgsi_build.c|5 -
 src/gallium/auxiliary/tgsi/tgsi_build.h|1 +
 src/gallium/auxiliary/tgsi/tgsi_dump.c |   16 
 src/gallium/include/pipe/p_shader_tokens.h |9 +++--
 4 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_build.c 
b/src/gallium/auxiliary/tgsi/tgsi_build.c
index e38b0be..0890078 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_build.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_build.c
@@ -107,7 +107,7 @@ tgsi_default_declaration( void )
declaration.Semantic = 0;
declaration.Centroid = 0;
declaration.Invariant = 0;
-   declaration.Padding = 0;
+   declaration.CylindricalWrap = 0;
 
return declaration;
 }
@@ -121,6 +121,7 @@ tgsi_build_declaration(
unsigned semantic,
unsigned centroid,
unsigned invariant,
+   unsigned cylindrical_wrap,
struct tgsi_header *header )
 {
struct tgsi_declaration declaration;
@@ -136,6 +137,7 @@ tgsi_build_declaration(
declaration.Semantic = semantic;
declaration.Centroid = centroid;
declaration.Invariant = invariant;
+   declaration.CylindricalWrap = cylindrical_wrap;
 
header_bodysize_grow( header );
 
@@ -190,6 +192,7 @@ tgsi_build_full_declaration(
   full_decl->Declaration.Semantic,
   full_decl->Declaration.Centroid,
   full_decl->Declaration.Invariant,
+  full_decl->Declaration.CylindricalWrap,
   header );
 
if (maxsize <= size)
diff --git a/src/gallium/auxiliary/tgsi/tgsi_build.h 
b/src/gallium/auxiliary/tgsi/tgsi_build.h
index ebee4ce..13d7f52 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_build.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_build.h
@@ -68,6 +68,7 @@ tgsi_build_declaration(
unsigned semantic,
unsigned centroid,
unsigned invariant,
+   unsigned cylindrical_wrap,
struct tgsi_header *header );
 
 struct tgsi_full_declaration
diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c 
b/src/gallium/auxiliary/tgsi/tgsi_dump.c
index dd36555..5703141 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_dump.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_dump.c
@@ -342,6 +342,22 @@ iter_declaration(
   TXT( ", INVARIANT" );
}
 
+   if (decl->Declaration.CylindricalWrap) {
+  TXT(", CYLWRAP_");
+  if (decl->Declaration.CylindricalWrap & TGSI_CYLINDRICAL_WRAP_X) {
+ CHR('X');
+  }
+  if (decl->Declaration.CylindricalWrap & TGSI_CYLINDRICAL_WRAP_Y) {
+ CHR('Y');
+  }
+  if (decl->Declaration.CylindricalWrap & TGSI_CYLINDRICAL_WRAP_Z) {
+ CHR('Z');
+  }
+  if (decl->Declaration.CylindricalWrap & TGSI_CYLINDRICAL_WRAP_W) {
+ CHR('W');
+  }
+   }
+
EOL();
 
return TRUE;
diff --git a/src/gallium/include/pipe/p_shader_tokens.h 
b/src/gallium/include/pipe/p_shader_tokens.h
index 21581a4..c5c480f 100644
--- a/src/gallium/include/pipe/p_shader_tokens.h
+++ b/src/gallium/include/pipe/p_shader_tokens.h
@@ -1,7 +1,7 @@
 /**
  * 
  * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * Copyright 2009 VMware, Inc.
+ * Copyright 2009-2010 VMware, Inc.
  * All Rights Reserved.
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -102,6 +102,11 @@ enum tgsi_file_type {
 #define TGSI_INTERPOLATE_PERSPECTIVE   2
 #define TGSI_INTERPOLATE_COUNT 3
 
+#define TGSI_CYLINDRICAL_WRAP_X (1 << 0)
+#define TGSI_CYLINDRICAL_WRAP_Y (1 << 1)
+#define TGSI_CYLINDRICAL_WRAP_Z (1 << 2)
+#define TGSI_CYLINDRICAL_WRAP_W (1 << 3)
+
 struct tgsi_declaration
 {
unsigned Type: 4;  /**< TGSI_TOKEN_TYPE_DECLARATION */
@@ -113,7 +118,7 @@ struct tgsi_declaration
unsigned Semantic: 1;  /**< BOOL, any semantic info? */
unsigned Centroid: 1;  /**< centroid sampling? */
unsigned Invariant   : 1;  /**< invariant optimization? */
-   unsigned Padding : 4;
+   unsigned CylindricalWrap:4;   /**< TGSI_CYLINDRICAL_WRAP_x flags */
 };
 
 struct tgsi_declaration_range

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Enable true refcounting for NullBufferObj.

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: 01d7e3d5a25a7cc49b38f5561d00c2ff22c43e93
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=01d7e3d5a25a7cc49b38f5561d00c2ff22c43e93

Author: Michal Krol 
Date:   Tue Feb  9 14:25:41 2010 +0100

mesa: Enable true refcounting for NullBufferObj.

This object can be shared with another context, so we cannot just
delete it when the owning context is being destroyed.

Ensuring that buffer objects are properly refcounted guarantees
NullBufferObj is destroyed when all references to it are removed.

---

 src/mesa/main/arrayobj.c|4 
 src/mesa/main/bufferobj.c   |   11 +++
 src/mesa/main/bufferobj.h   |3 +++
 src/mesa/main/context.c |2 ++
 src/mesa/main/pixel.c   |8 ++--
 src/mesa/main/shared.c  |6 --
 src/mesa/vbo/vbo_context.c  |   12 ++--
 src/mesa/vbo/vbo_exec_api.c |   12 
 8 files changed, 48 insertions(+), 10 deletions(-)

diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c
index fd35d4e..e36137d 100644
--- a/src/mesa/main/arrayobj.c
+++ b/src/mesa/main/arrayobj.c
@@ -95,6 +95,10 @@ unbind_array_object_vbos(GLcontext *ctx, struct 
gl_array_object *obj)
 
for (i = 0; i < Elements(obj->VertexAttrib); i++)
   _mesa_reference_buffer_object(ctx, &obj->VertexAttrib[i].BufferObj,NULL);
+
+#if FEATURE_point_size_array
+   _mesa_reference_buffer_object(ctx, &obj->PointSize.BufferObj, NULL);
+#endif
 }
 
 
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index 2271550..dabb138 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -556,6 +556,17 @@ _mesa_init_buffer_objects( GLcontext *ctx )
 }
 
 
+void
+_mesa_free_buffer_objects( GLcontext *ctx )
+{
+   _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, NULL);
+   _mesa_reference_buffer_object(ctx, &ctx->Array.ElementArrayBufferObj, NULL);
+
+   _mesa_reference_buffer_object(ctx, &ctx->CopyReadBuffer, NULL);
+   _mesa_reference_buffer_object(ctx, &ctx->CopyWriteBuffer, NULL);
+}
+
+
 /**
  * Bind the specified target to buffer for the specified context.
  * Called by glBindBuffer() and other functions.
diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h
index 2931962..f8bca5f 100644
--- a/src/mesa/main/bufferobj.h
+++ b/src/mesa/main/bufferobj.h
@@ -60,6 +60,9 @@ extern void
 _mesa_init_buffer_objects( GLcontext *ctx );
 
 extern void
+_mesa_free_buffer_objects( GLcontext *ctx );
+
+extern void
 _mesa_update_default_objects_buffer_objects(GLcontext *ctx);
 
 
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index fccce51..591aa11 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -955,6 +955,7 @@ _mesa_free_context_data( GLcontext *ctx )
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram._TexEnvProgram, NULL);
 
_mesa_free_attrib_data(ctx);
+   _mesa_free_buffer_objects(ctx);
_mesa_free_lighting_data( ctx );
_mesa_free_eval_data( ctx );
_mesa_free_texture_data( ctx );
@@ -974,6 +975,7 @@ _mesa_free_context_data( GLcontext *ctx )
 #if FEATURE_ARB_pixel_buffer_object
_mesa_reference_buffer_object(ctx, &ctx->Pack.BufferObj, NULL);
_mesa_reference_buffer_object(ctx, &ctx->Unpack.BufferObj, NULL);
+   _mesa_reference_buffer_object(ctx, &ctx->DefaultPacking.BufferObj, NULL);
 #endif
 
 #if FEATURE_ARB_vertex_buffer_object
diff --git a/src/mesa/main/pixel.c b/src/mesa/main/pixel.c
index f6f9c11..ca6ecd7 100644
--- a/src/mesa/main/pixel.c
+++ b/src/mesa/main/pixel.c
@@ -150,13 +150,17 @@ validate_pbo_access(GLcontext *ctx, struct 
gl_pixelstore_attrib *pack,
GLboolean ok;
 
/* Note, need to use DefaultPacking and Unpack's buffer object */
-   ctx->DefaultPacking.BufferObj = pack->BufferObj;
+   _mesa_reference_buffer_object(ctx,
+ &ctx->DefaultPacking.BufferObj,
+ pack->BufferObj);
 
ok = _mesa_validate_pbo_access(1, &ctx->DefaultPacking, mapsize, 1, 1,
   format, type, ptr);
 
/* restore */
-   ctx->DefaultPacking.BufferObj = ctx->Shared->NullBufferObj;
+   _mesa_reference_buffer_object(ctx,
+ &ctx->DefaultPacking.BufferObj,
+ ctx->Shared->NullBufferObj);
 
if (!ok) {
   _mesa_error(ctx, GL_INVALID_OPERATION,
diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c
index a7cf623..b889364 100644
--- a/src/mesa/main/shared.c
+++ b/src/mesa/main/shared.c
@@ -95,12 +95,6 @@ _mesa_alloc_shared_state(GLcontext *ctx)
 
/* Allocate the default buffer object */
shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0, 0);
-#ifndef DEBUG
-   /* Set refcount so high that it never gets deleted.
-* XXX with recent/improved refcounting this should be no longer be needed.
-*/
-   shared->NullBufferObj->RefCount = 1000 * 1000 * 1000;
-#endif
 
/* Create default texture objects */
for (i = 0; i < NUM_TEXTURE_TARGETS; i

Mesa (master): mesa: Protect buffer objects reference counting with a mutex .

2010-02-09 Thread Michał Król
Module: Mesa
Branch: master
Commit: eeec2c3d951fed0d22e5dbf436d4a2d887e24221
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=eeec2c3d951fed0d22e5dbf436d4a2d887e24221

Author: Michal Krol 
Date:   Mon Feb  8 19:43:42 2010 +0100

mesa: Protect buffer objects reference counting with a mutex.

---

 src/mesa/main/bufferobj.c |   10 ++
 src/mesa/main/mtypes.h|1 +
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index 9e765b2..2271550 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -214,6 +214,7 @@ _mesa_delete_buffer_object( GLcontext *ctx, struct 
gl_buffer_object *bufObj )
bufObj->RefCount = -1000;
bufObj->Name = ~0;
 
+   _glthread_DESTROY_MUTEX(bufObj->Mutex);
_mesa_free(bufObj);
 }
 
@@ -235,7 +236,7 @@ _mesa_reference_buffer_object(GLcontext *ctx,
   GLboolean deleteFlag = GL_FALSE;
   struct gl_buffer_object *oldObj = *ptr;
 
-  /*_glthread_LOCK_MUTEX(oldObj->Mutex);*/
+  _glthread_LOCK_MUTEX(oldObj->Mutex);
   ASSERT(oldObj->RefCount > 0);
   oldObj->RefCount--;
 #if 0
@@ -243,7 +244,7 @@ _mesa_reference_buffer_object(GLcontext *ctx,
  (void *) oldObj, oldObj->Name, oldObj->RefCount);
 #endif
   deleteFlag = (oldObj->RefCount == 0);
-  /*_glthread_UNLOCK_MUTEX(oldObj->Mutex);*/
+  _glthread_UNLOCK_MUTEX(oldObj->Mutex);
 
   if (deleteFlag) {
 
@@ -265,7 +266,7 @@ _mesa_reference_buffer_object(GLcontext *ctx,
 
if (bufObj) {
   /* reference new buffer */
-  /*_glthread_LOCK_MUTEX(tex->Mutex);*/
+  _glthread_LOCK_MUTEX(bufObj->Mutex);
   if (bufObj->RefCount == 0) {
  /* this buffer's being deleted (look just above) */
  /* Not sure this can every really happen.  Warn if it does. */
@@ -280,7 +281,7 @@ _mesa_reference_buffer_object(GLcontext *ctx,
 #endif
  *ptr = bufObj;
   }
-  /*_glthread_UNLOCK_MUTEX(tex->Mutex);*/
+  _glthread_UNLOCK_MUTEX(bufObj->Mutex);
}
 }
 
@@ -295,6 +296,7 @@ _mesa_initialize_buffer_object( struct gl_buffer_object 
*obj,
(void) target;
 
_mesa_bzero(obj, sizeof(struct gl_buffer_object));
+   _glthread_INIT_MUTEX(obj->Mutex);
obj->RefCount = 1;
obj->Name = name;
obj->Usage = GL_STATIC_DRAW_ARB;
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 2640ba5..2003541 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1426,6 +1426,7 @@ struct gl_viewport_attrib
  */
 struct gl_buffer_object
 {
+   _glthread_Mutex Mutex;
GLint RefCount;
GLuint Name;
GLenum Usage;/**< GL_STREAM_DRAW_ARB, GL_STREAM_READ_ARB, etc. */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Ensure object refcount is null when destroying the buffer.

2010-02-09 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 829d9bb7334ffea0d5d0c4076dd75c41525fae0c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=829d9bb7334ffea0d5d0c4076dd75c41525fae0c

Author: José Fonseca 
Date:   Mon Feb  1 21:33:04 2010 +

mesa: Ensure object refcount is null when destroying the buffer.

Lets see if this is not too pedantic. Obj pointers are never exposed to
GL apps so it should be possible to get this right.

Furthermore apps with GL widgets and test suits create and destroy many
contexts and objects, so bad reference counting is not really an option.

---

 src/mesa/state_tracker/st_cb_bufferobjects.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c 
b/src/mesa/state_tracker/st_cb_bufferobjects.c
index 3ff5890..f1b4f11 100644
--- a/src/mesa/state_tracker/st_cb_bufferobjects.c
+++ b/src/mesa/state_tracker/st_cb_bufferobjects.c
@@ -75,6 +75,8 @@ st_bufferobj_free(GLcontext *ctx, struct gl_buffer_object 
*obj)
 {
struct st_buffer_object *st_obj = st_buffer_object(obj);
 
+   assert(obj->RefCount == 0);
+
if (st_obj->buffer) 
   pipe_buffer_reference(&st_obj->buffer, NULL);
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Always do proper ref counting of shared state.

2010-02-09 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 1c39dbb90cefad8a5a97e75042466d66ea4270bc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c39dbb90cefad8a5a97e75042466d66ea4270bc

Author: José Fonseca 
Date:   Mon Feb  1 21:22:10 2010 +

mesa: Always do proper ref counting of shared state.

---

 src/mesa/main/context.c |   24 
 src/mesa/main/shared.c  |   31 +--
 src/mesa/main/shared.h  |2 +-
 3 files changed, 34 insertions(+), 23 deletions(-)

diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index 74c6ac4..fccce51 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -835,7 +835,7 @@ _mesa_initialize_context(GLcontext *ctx,
_glthread_UNLOCK_MUTEX(shared->Mutex);
 
if (!init_attrib_groups( ctx )) {
-  _mesa_free_shared_state(ctx, ctx->Shared);
+  _mesa_release_shared_state(ctx, ctx->Shared);
   return GL_FALSE;
}
 
@@ -843,7 +843,7 @@ _mesa_initialize_context(GLcontext *ctx,
ctx->Exec = alloc_dispatch_table();
ctx->Save = alloc_dispatch_table();
if (!ctx->Exec || !ctx->Save) {
-  _mesa_free_shared_state(ctx, ctx->Shared);
+  _mesa_release_shared_state(ctx, ctx->Shared);
   if (ctx->Exec)
  _mesa_free(ctx->Exec);
   return GL_FALSE;
@@ -933,8 +933,6 @@ _mesa_create_context(const GLvisual *visual,
 void
 _mesa_free_context_data( GLcontext *ctx )
 {
-   GLint RefCount;
-
if (!_mesa_get_current_context()){
   /* No current context, but we may need one in order to delete
* texture objs, etc.  So temporarily bind the context now.
@@ -988,14 +986,7 @@ _mesa_free_context_data( GLcontext *ctx )
_mesa_free(ctx->Save);
 
/* Shared context state (display lists, textures, etc) */
-   _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
-   RefCount = --ctx->Shared->RefCount;
-   _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
-   assert(RefCount >= 0);
-   if (RefCount == 0) {
-  /* free shared state */
-  _mesa_free_shared_state( ctx, ctx->Shared );
-   }
+   _mesa_release_shared_state( ctx, ctx->Shared );
 
/* needs to be after freeing shared state */
_mesa_free_display_list_data(ctx);
@@ -1397,7 +1388,6 @@ _mesa_share_state(GLcontext *ctx, GLcontext *ctxToShare)
 {
if (ctx && ctxToShare && ctx->Shared && ctxToShare->Shared) {
   struct gl_shared_state *oldSharedState = ctx->Shared;
-  GLint RefCount;
 
   ctx->Shared = ctxToShare->Shared;
   
@@ -1407,13 +1397,7 @@ _mesa_share_state(GLcontext *ctx, GLcontext *ctxToShare)
 
   update_default_objects(ctx);
 
-  _glthread_LOCK_MUTEX(oldSharedState->Mutex);
-  RefCount = --oldSharedState->RefCount;
-  _glthread_UNLOCK_MUTEX(oldSharedState->Mutex);
-
-  if (RefCount == 0) {
- _mesa_free_shared_state(ctx, oldSharedState);
-  }
+  _mesa_release_shared_state(ctx, oldSharedState);
 
   return GL_TRUE;
}
diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c
index 4d01e8a..6cf63f6 100644
--- a/src/mesa/main/shared.c
+++ b/src/mesa/main/shared.c
@@ -288,8 +288,8 @@ delete_renderbuffer_cb(GLuint id, void *data, void 
*userData)
  *
  * \sa alloc_shared_state().
  */
-void
-_mesa_free_shared_state(GLcontext *ctx, struct gl_shared_state *shared)
+static void
+free_shared_state(GLcontext *ctx, struct gl_shared_state *shared)
 {
GLuint i;
 
@@ -368,3 +368,30 @@ _mesa_free_shared_state(GLcontext *ctx, struct 
gl_shared_state *shared)
 
_mesa_free(shared);
 }
+
+
+/**
+ * Decrement shared state object reference count and potentially free it
+ * and all children structures.
+ *
+ * \param ctx GL context.
+ * \param shared shared state pointer.
+ *
+ * \sa free_shared_state().
+ */
+void
+_mesa_release_shared_state(GLcontext *ctx, struct gl_shared_state *shared)
+{
+   GLint RefCount;
+
+   _glthread_LOCK_MUTEX(shared->Mutex);
+   RefCount = --shared->RefCount;
+   _glthread_UNLOCK_MUTEX(shared->Mutex);
+
+   assert(RefCount >= 0);
+
+   if (RefCount == 0) {
+  /* free shared state */
+  free_shared_state( ctx, shared );
+   }
+}
diff --git a/src/mesa/main/shared.h b/src/mesa/main/shared.h
index e59177e..ef164a1 100644
--- a/src/mesa/main/shared.h
+++ b/src/mesa/main/shared.h
@@ -31,7 +31,7 @@ _mesa_alloc_shared_state(GLcontext *ctx);
 
 
 void
-_mesa_free_shared_state(GLcontext *ctx, struct gl_shared_state *shared);
+_mesa_release_shared_state(GLcontext *ctx, struct gl_shared_state *shared);
 
 
 #endif

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Fix null buffer object reference counting.

2010-02-09 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 05ac187f305bb653d569b5c07446ec0f4cd7ff08
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=05ac187f305bb653d569b5c07446ec0f4cd7ff08

Author: José Fonseca 
Date:   Mon Feb  1 21:30:50 2010 +

mesa: Fix null buffer object reference counting.

Always use _mesa_reference_buffer_object, and never call
ctx->Driver.DeleteBuffer() directly to prevent dangling pointers to the
null buffer object.

This fixes crash/assertions in sharedtex_mt and Autodesk Mudbox.

---

 src/mesa/main/shared.c  |   14 --
 src/mesa/vbo/vbo_save.c |   11 +++
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c
index 6cf63f6..a7cf623 100644
--- a/src/mesa/main/shared.c
+++ b/src/mesa/main/shared.c
@@ -93,12 +93,14 @@ _mesa_alloc_shared_state(GLcontext *ctx)
shared->BufferObjects = _mesa_NewHashTable();
 #endif
 
-   /* Allocate the default buffer object and set refcount so high that
-* it never gets deleted.
-* XXX with recent/improved refcounting this may not longer be needed.
-*/
+   /* Allocate the default buffer object */
shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0, 0);
+#ifndef DEBUG
+   /* Set refcount so high that it never gets deleted.
+* XXX with recent/improved refcounting this should be no longer be needed.
+*/
shared->NullBufferObj->RefCount = 1000 * 1000 * 1000;
+#endif
 
/* Create default texture objects */
for (i = 0; i < NUM_TEXTURE_TARGETS; i++) {
@@ -202,7 +204,7 @@ delete_bufferobj_cb(GLuint id, void *data, void *userData)
   ctx->Driver.UnmapBuffer(ctx, 0, bufObj);
   bufObj->Pointer = NULL;
}
-   ctx->Driver.DeleteBuffer(ctx, bufObj);
+   _mesa_reference_buffer_object(ctx, &bufObj, NULL);
 }
 
 
@@ -335,7 +337,7 @@ free_shared_state(GLcontext *ctx, struct gl_shared_state 
*shared)
 #endif
 
 #if FEATURE_ARB_vertex_buffer_object
-   ctx->Driver.DeleteBuffer(ctx, shared->NullBufferObj);
+   _mesa_reference_buffer_object(ctx, &shared->NullBufferObj, NULL);
 #endif
 
 #if FEATURE_ARB_sync
diff --git a/src/mesa/vbo/vbo_save.c b/src/mesa/vbo/vbo_save.c
index 10f705c..fd9a130 100644
--- a/src/mesa/vbo/vbo_save.c
+++ b/src/mesa/vbo/vbo_save.c
@@ -58,8 +58,19 @@ void vbo_save_init( GLcontext *ctx )
 
{
   struct gl_client_array *arrays = save->arrays;
+  unsigned i;
+
   memcpy(arrays,  vbo->legacy_currval,  16 * sizeof(arrays[0]));
   memcpy(arrays + 16, vbo->generic_currval, 16 * sizeof(arrays[0]));
+
+  for (i = 0; i < 16; ++i) {
+ arrays[i ].BufferObj = NULL;
+ arrays[i + 16].BufferObj = NULL;
+ _mesa_reference_buffer_object(ctx, &arrays[i ].BufferObj, 
+   vbo->legacy_currval[i].BufferObj);
+ _mesa_reference_buffer_object(ctx, &arrays[i + 16].BufferObj,
+   vbo->generic_currval[i].BufferObj);
+  }
}
 
ctx->Driver.CurrentSavePrimitive = PRIM_UNKNOWN;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): svga: Actually call fence_reference in texture downloads.

2010-02-09 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: b750786fb149fb1276187bbbd1c042609e5962aa
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b750786fb149fb1276187bbbd1c042609e5962aa

Author: José Fonseca 
Date:   Thu Jan 28 20:51:52 2010 +

svga: Actually call fence_reference in texture downloads.

---

 src/gallium/drivers/svga/svga_screen_texture.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/svga/svga_screen_texture.c 
b/src/gallium/drivers/svga/svga_screen_texture.c
index ad7bb65..12f3531 100644
--- a/src/gallium/drivers/svga/svga_screen_texture.c
+++ b/src/gallium/drivers/svga/svga_screen_texture.c
@@ -205,7 +205,7 @@ svga_transfer_dma(struct svga_transfer *st,
   if(transfer == SVGA3D_READ_HOST_VRAM) {
  svga_screen_flush(screen, &fence);
  sws->fence_finish(sws, fence, 0);
- //sws->fence_reference(sws, &fence, NULL);
+ sws->fence_reference(sws, &fence, NULL);
   }
}
else {
@@ -235,7 +235,7 @@ svga_transfer_dma(struct svga_transfer *st,
 if(y) {
svga_screen_flush(screen, &fence);
sws->fence_finish(sws, fence, 0);
-   //sws->fence_reference(sws, &fence, NULL);
+   sws->fence_reference(sws, &fence, NULL);
 }
 
 hw = sws->buffer_map(sws, st->hwbuf, PIPE_BUFFER_USAGE_CPU_WRITE);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): progs/xdemos: Silence uninitialized variable warning.

2010-02-09 Thread Vinson Lee
Module: Mesa
Branch: master
Commit: ad93f3e4890a8789422f180e3c2c413fb609984f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ad93f3e4890a8789422f180e3c2c413fb609984f

Author: Vinson Lee 
Date:   Tue Feb  9 01:35:14 2010 -0800

progs/xdemos: Silence uninitialized variable warning.

---

 progs/xdemos/glxinfo.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/progs/xdemos/glxinfo.c b/progs/xdemos/glxinfo.c
index 30cd568..d871088 100644
--- a/progs/xdemos/glxinfo.c
+++ b/progs/xdemos/glxinfo.c
@@ -963,7 +963,7 @@ print_visual_info(Display *dpy, int scrnum, InfoMode mode)
 static void
 print_fbconfig_info(Display *dpy, int scrnum, InfoMode mode)
 {
-   int numFBConfigs;
+   int numFBConfigs = 0;
struct visual_attribs attribs;
GLXFBConfig *fbconfigs;
int i;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): r300g: Fix off-by-one errors in array bounds assertions.

2010-02-09 Thread Vinson Lee
Module: Mesa
Branch: master
Commit: 70f8aaa0c30c640d0cce7faea9402b4e53bbfff0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=70f8aaa0c30c640d0cce7faea9402b4e53bbfff0

Author: Vinson Lee 
Date:   Tue Feb  9 01:26:11 2010 -0800

r300g: Fix off-by-one errors in array bounds assertions.

---

 src/gallium/drivers/r300/r300_fs.c |4 ++--
 src/gallium/drivers/r300/r300_vs.c |6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_fs.c 
b/src/gallium/drivers/r300/r300_fs.c
index 39bcdc8..75a0549 100644
--- a/src/gallium/drivers/r300/r300_fs.c
+++ b/src/gallium/drivers/r300/r300_fs.c
@@ -49,12 +49,12 @@ void r300_shader_read_fs_inputs(struct tgsi_shader_info* 
info,
 
 switch (info->input_semantic_name[i]) {
 case TGSI_SEMANTIC_COLOR:
-assert(index <= ATTR_COLOR_COUNT);
+assert(index < ATTR_COLOR_COUNT);
 fs_inputs->color[index] = i;
 break;
 
 case TGSI_SEMANTIC_GENERIC:
-assert(index <= ATTR_GENERIC_COUNT);
+assert(index < ATTR_GENERIC_COUNT);
 fs_inputs->generic[index] = i;
 break;
 
diff --git a/src/gallium/drivers/r300/r300_vs.c 
b/src/gallium/drivers/r300/r300_vs.c
index 9fbb830..fb81b24 100644
--- a/src/gallium/drivers/r300/r300_vs.c
+++ b/src/gallium/drivers/r300/r300_vs.c
@@ -61,17 +61,17 @@ static void r300_shader_read_vs_outputs(
 break;
 
 case TGSI_SEMANTIC_COLOR:
-assert(index <= ATTR_COLOR_COUNT);
+assert(index < ATTR_COLOR_COUNT);
 vs_outputs->color[index] = i;
 break;
 
 case TGSI_SEMANTIC_BCOLOR:
-assert(index <= ATTR_COLOR_COUNT);
+assert(index < ATTR_COLOR_COUNT);
 vs_outputs->bcolor[index] = i;
 break;
 
 case TGSI_SEMANTIC_GENERIC:
-assert(index <= ATTR_GENERIC_COUNT);
+assert(index < ATTR_GENERIC_COUNT);
 vs_outputs->generic[index] = i;
 break;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit