Mesa (master): gallium-docs: Add note on scissor.

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

Author: Corbin Simpson 
Date:   Mon Jan 25 01:12:30 2010 -0800

gallium-docs: Add note on scissor.

---

 src/gallium/docs/source/context.rst |5 -
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/gallium/docs/source/context.rst 
b/src/gallium/docs/source/context.rst
index b7b625d..78b01cc 100644
--- a/src/gallium/docs/source/context.rst
+++ b/src/gallium/docs/source/context.rst
@@ -54,7 +54,10 @@ objects. They all follow simple, one-method binding calls, 
e.g.
 * ``set_blend_color``
 * ``set_clip_state``
 * ``set_polygon_stipple``
-* ``set_scissor_state``
+* ``set_scissor_state`` sets the bounds for the scissor test, which culls
+  pixels before blending to render targets. If the :ref:`Rasterizer` does
+  not have the scissor test enabled, then the scissor bounds never need to
+  be set since they will not be used.
 * ``set_viewport_state``
 * ``set_vertex_elements``
 

___
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 warning

2010-01-25 Thread Jakob Bornecrantz
Module: Mesa
Branch: mesa_7_7_branch
Commit: 16cf7e14a6dee85fadc0ab4e7c066288c3362352
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=16cf7e14a6dee85fadc0ab4e7c066288c3362352

Author: Jakob Bornecrantz 
Date:   Thu Jan 21 21:28:14 2010 +0100

st/xorg: Fix warning

---

 src/gallium/state_trackers/xorg/xorg_dri2.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_dri2.c 
b/src/gallium/state_trackers/xorg/xorg_dri2.c
index 468563e..83dc92e 100644
--- a/src/gallium/state_trackers/xorg/xorg_dri2.c
+++ b/src/gallium/state_trackers/xorg/xorg_dri2.c
@@ -375,6 +375,7 @@ xorg_dri2_init(ScreenPtr pScreen)
 ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
 modesettingPtr ms = modesettingPTR(pScrn);
 DRI2InfoRec dri2info;
+#if DRI2INFOREC_VERSION >= 2
 int major, minor;
 
 if (xf86LoaderCheckSymbol("DRI2Version")) {
@@ -384,6 +385,7 @@ xorg_dri2_init(ScreenPtr pScreen)
major = 1;
minor = 0;
 }
+#endif
 
 dri2info.version = DRI2INFOREC_VERSION;
 dri2info.fd = ms->fd;

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


Mesa (mesa_7_7_branch): st/xorg: Export helper function for detecting modesetting

2010-01-25 Thread Jakob Bornecrantz
Module: Mesa
Branch: mesa_7_7_branch
Commit: 36fd55f9f03b00263ee1ccf22bbb50e5ba048e80
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=36fd55f9f03b00263ee1ccf22bbb50e5ba048e80

Author: Jakob Bornecrantz 
Date:   Thu Jan 21 21:23:22 2010 +0100

st/xorg: Export helper function for detecting modesetting

---

 src/gallium/state_trackers/xorg/xorg_driver.c |   22 ++
 src/gallium/state_trackers/xorg/xorg_winsys.h |1 +
 2 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c 
b/src/gallium/state_trackers/xorg/xorg_driver.c
index 41bfcd0..c180f0b 100644
--- a/src/gallium/state_trackers/xorg/xorg_driver.c
+++ b/src/gallium/state_trackers/xorg/xorg_driver.c
@@ -110,6 +110,28 @@ xorg_tracker_set_functions(ScrnInfoPtr scrn)
 scrn->ValidMode = drv_valid_mode;
 }
 
+Bool
+xorg_tracker_have_modesetting(ScrnInfoPtr pScrn, struct pci_device *device)
+{
+char *BusID = xalloc(64);
+sprintf(BusID, "pci:%04x:%02x:%02x.%d",
+   device->domain, device->bus,
+   device->dev, device->func);
+
+if (drmCheckModesettingSupported(BusID)) {
+   xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0,
+  "Drm modesetting not supported %s\n", BusID);
+   xfree(BusID);
+   return FALSE;
+}
+
+xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0,
+  "Drm modesetting supported on %s\n", BusID);
+
+xfree(BusID);
+return TRUE;
+}
+
 
 /*
  * Internal function definitions
diff --git a/src/gallium/state_trackers/xorg/xorg_winsys.h 
b/src/gallium/state_trackers/xorg/xorg_winsys.h
index 47ee4b9..865733b 100644
--- a/src/gallium/state_trackers/xorg/xorg_winsys.h
+++ b/src/gallium/state_trackers/xorg/xorg_winsys.h
@@ -45,5 +45,6 @@
 
 void xorg_tracker_set_functions(ScrnInfoPtr scrn);
 const OptionInfoRec * xorg_tracker_available_options(int chipid, int busid);
+Bool xorg_tracker_have_modesetting(ScrnInfoPtr pScrn, struct pci_device 
*device);
 
 #endif

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


Mesa (mesa_7_7_branch): vmware/xorg: Export pci_probe function for ugly chain-loading

2010-01-25 Thread Jakob Bornecrantz
Module: Mesa
Branch: mesa_7_7_branch
Commit: a3b783ea294f348bf3424eeb4170dd7f0741519a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a3b783ea294f348bf3424eeb4170dd7f0741519a

Author: Jakob Bornecrantz 
Date:   Thu Jan 21 21:32:28 2010 +0100

vmware/xorg: Export pci_probe function for ugly chain-loading

---

 src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c |   10 +-
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c 
b/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c
index 4b20871..cd273d0 100644
--- a/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c
+++ b/src/gallium/winsys/drm/vmware/xorg/vmw_xorg.c
@@ -34,10 +34,10 @@
 #include "vmw_hook.h"
 
 static void vmw_xorg_identify(int flags);
-static Bool vmw_xorg_pci_probe(DriverPtr driver,
-  int entity_num,
-  struct pci_device *device,
-  intptr_t match_data);
+_X_EXPORT Bool vmw_xorg_pci_probe(DriverPtr driver,
+ int entity_num,
+ struct pci_device *device,
+ intptr_t match_data);
 
 static const struct pci_id_match vmw_xorg_device_match[] = {
 {0x15ad, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0},
@@ -126,7 +126,7 @@ vmw_xorg_identify(int flags)
  vmw_xorg_chipsets);
 }
 
-static Bool
+_X_EXPORT Bool
 vmw_xorg_pci_probe(DriverPtr driver,
  int entity_num, struct pci_device *device, intptr_t match_data)
 {

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


Mesa (mesa_7_7_branch): st/xorg: Improve options and print them to log

2010-01-25 Thread Jakob Bornecrantz
Module: Mesa
Branch: mesa_7_7_branch
Commit: 0b482c4fbe69a807bb69bf92f37e362f818c664d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0b482c4fbe69a807bb69bf92f37e362f818c664d

Author: Jakob Bornecrantz 
Date:   Fri Jan 22 18:28:40 2010 +0100

st/xorg: Improve options and print them to log

Set 2D acceleration to off by default
Get fallback debugging from the Xorg config
Also print if 3D acceleration is enabled

---

 src/gallium/state_trackers/xorg/xorg_driver.c  |   20 +---
 src/gallium/state_trackers/xorg/xorg_tracker.h |1 +
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c 
b/src/gallium/state_trackers/xorg/xorg_driver.c
index c180f0b..0ff6c52 100644
--- a/src/gallium/state_trackers/xorg/xorg_driver.c
+++ b/src/gallium/state_trackers/xorg/xorg_driver.c
@@ -78,11 +78,13 @@ typedef enum
 {
 OPTION_SW_CURSOR,
 OPTION_2D_ACCEL,
+OPTION_DEBUG_FALLBACK,
 } drv_option_enums;
 
 static const OptionInfoRec drv_options[] = {
 {OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE},
 {OPTION_2D_ACCEL, "2DAccel", OPTV_BOOLEAN, {0}, FALSE},
+{OPTION_DEBUG_FALLBACK, "DebugFallback", OPTV_BOOLEAN, {0}, FALSE},
 {-1, NULL, OPTV_NONE, {0}, FALSE}
 };
 
@@ -670,10 +672,11 @@ drv_screen_init(int scrnIndex, ScreenPtr pScreen, int 
argc, char **argv)
 
 xf86SetBlackWhitePixels(pScreen);
 
+ms->accelerate_2d = xf86ReturnOptValBool(ms->Options, OPTION_2D_ACCEL, 
FALSE);
+ms->debug_fallback = xf86ReturnOptValBool(ms->Options, 
OPTION_DEBUG_FALLBACK, TRUE);
+
 if (ms->screen) {
-   ms->exa = xorg_exa_init(pScrn, xf86ReturnOptValBool(ms->Options,
-   OPTION_2D_ACCEL, 
TRUE));
-   ms->debug_fallback = debug_get_bool_option("XORG_DEBUG_FALLBACK", TRUE);
+   ms->exa = xorg_exa_init(pScrn, ms->accelerate_2d);
 
xorg_xv_init(pScreen);
 #ifdef DRI2
@@ -681,6 +684,17 @@ drv_screen_init(int scrnIndex, ScreenPtr pScreen, int 
argc, char **argv)
 #endif
 }
 
+xf86DrvMsg(pScrn->scrnIndex, X_INFO, "2D Acceleration is %s\n",
+  ms->screen && ms->accelerate_2d ? "enabled" : "disabled");
+xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Fallback debugging is %s\n",
+  ms->debug_fallback ? "enabled" : "disabled");
+#ifdef DRI2
+xf86DrvMsg(pScrn->scrnIndex, X_INFO, "3D Acceleration is %s\n",
+  ms->screen ? "enabled" : "disabled");
+#else
+xf86DrvMsg(pScrn->scrnIndex, X_INFO, "3D Acceleration is disabled\n");
+#endif
+
 miInitializeBackingStore(pScreen);
 xf86SetBackingStore(pScreen);
 xf86SetSilkenMouse(pScreen);
diff --git a/src/gallium/state_trackers/xorg/xorg_tracker.h 
b/src/gallium/state_trackers/xorg/xorg_tracker.h
index c0cfbe6..b5915d2 100644
--- a/src/gallium/state_trackers/xorg/xorg_tracker.h
+++ b/src/gallium/state_trackers/xorg/xorg_tracker.h
@@ -112,6 +112,7 @@ typedef struct _modesettingRec
 /* exa */
 struct exa_context *exa;
 Bool noEvict;
+Bool accelerate_2d;
 Bool debug_fallback;
 
 /* winsys hocks */

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


Mesa (master): llvmpipe: Remove lp_tex_sample_c.c again.

2010-01-25 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 4c082faa7e0887205fe9158320884c177f416b80
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4c082faa7e0887205fe9158320884c177f416b80

Author: José Fonseca 
Date:   Mon Jan 25 11:54:54 2010 +

llvmpipe: Remove lp_tex_sample_c.c again.

Popped back to life in some merge. Not necessary even as a reference,
since it is identical to softpipe's sp_tex_sample.c with renamed symbols.

---

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

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


Mesa (mesa_7_7_branch): vmware/xorg: Do buffer round-robin logic differently

2010-01-25 Thread Jakob Bornecrantz
Module: Mesa
Branch: mesa_7_7_branch
Commit: 6877c5de3c3ff39da514a74928ea270138cddff9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6877c5de3c3ff39da514a74928ea270138cddff9

Author: Jakob Bornecrantz 
Date:   Mon Jan 25 12:27:47 2010 +0100

vmware/xorg: Do buffer round-robin logic differently

---

 src/gallium/winsys/drm/vmware/xorg/vmw_video.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/gallium/winsys/drm/vmware/xorg/vmw_video.c 
b/src/gallium/winsys/drm/vmware/xorg/vmw_video.c
index b065b96..ff3b992 100644
--- a/src/gallium/winsys/drm/vmware/xorg/vmw_video.c
+++ b/src/gallium/winsys/drm/vmware/xorg/vmw_video.c
@@ -649,7 +649,8 @@ vmw_video_port_play(ScrnInfoPtr pScrn, struct 
vmw_video_port *port,
return XvBadAlloc;
 }
 
-port->currBuf = ++port->currBuf & (VMWARE_VID_NUM_BUFFERS - 1);
+if (++(port->currBuf) >= VMWARE_VID_NUM_BUFFERS)
+   port->currBuf = 0;
 
 return Success;
 }

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


Mesa (master): pipebuffer: Reapply the mesa_7_7_branch's changes.

2010-01-25 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: cb64ca5066a3f4611680aa8c9a5d1caf68538cb5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb64ca5066a3f4611680aa8c9a5d1caf68538cb5

Author: José Fonseca 
Date:   Mon Jan 25 13:17:47 2010 +

pipebuffer: Reapply the mesa_7_7_branch's changes.

After the last mesa_7_7_branch merge the old master code remained,
instead of the newer mesa_7_7_branch's code. This commit makes both
branches match, modulo interface changes.

Note: future mesa_7_7_branch -> master merges will most likely hit
conflicts in these files. Unless otherwise stated, the mesa_7_7_branch
is the reference.

---

 .../auxiliary/pipebuffer/pb_buffer_fenced.c| 1067 ++--
 .../auxiliary/pipebuffer/pb_buffer_fenced.h|   37 -
 2 files changed, 769 insertions(+), 335 deletions(-)

diff --git a/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c 
b/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
index a4b78f1..ba087ac 100644
--- a/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
+++ b/src/gallium/auxiliary/pipebuffer/pb_buffer_fenced.c
@@ -1,6 +1,6 @@
 /**
  *
- * Copyright 2007-2009 VMware, Inc.
+ * Copyright 2007-2010 VMware, Inc.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,9 +28,9 @@
 /**
  * \file
  * Implementation of fenced buffers.
- * 
- * \author Jose Fonseca 
- * \author Thomas Hellström 
+ *
+ * \author Jose Fonseca 
+ * \author Thomas Hellström 
  */
 
 
@@ -50,6 +50,7 @@
 
 #include "pb_buffer.h"
 #include "pb_buffer_fenced.h"
+#include "pb_bufmgr.h"
 
 
 
@@ -59,32 +60,79 @@
 #define SUPER(__derived) (&(__derived)->base)
 
 
-struct fenced_buffer_list
+struct fenced_manager
 {
-   pipe_mutex mutex;
-   
+   struct pb_manager base;
+   struct pb_manager *provider;
struct pb_fence_ops *ops;
-   
-   pb_size numDelayed;
-   struct list_head delayed;
-   
-#ifdef DEBUG
-   pb_size numUnfenced;
+
+   /**
+* Maximum buffer size that can be safely allocated.
+*/
+   pb_size max_buffer_size;
+
+   /**
+* Maximum cpu memory we can allocate before we start waiting for the
+* GPU to idle.
+*/
+   pb_size max_cpu_total_size;
+
+   /**
+* Following members are mutable and protected by this mutex.
+*/
+   pipe_mutex mutex;
+
+   /**
+* Fenced buffer list.
+*
+* All fenced buffers are placed in this listed, ordered from the oldest
+* fence to the newest fence.
+*/
+   struct list_head fenced;
+   pb_size num_fenced;
+
struct list_head unfenced;
-#endif
+   pb_size num_unfenced;
+
+   /**
+* How much temporary CPU memory is being used to hold unvalidated buffers.
+*/
+   pb_size cpu_total_size;
 };
 
 
 /**
+ * Fenced buffer.
+ *
  * Wrapper around a pipe buffer which adds fencing and reference counting.
  */
 struct fenced_buffer
 {
+   /*
+* Immutable members.
+*/
+
struct pb_buffer base;
-   
+   struct fenced_manager *mgr;
+
+   /*
+* Following members are mutable and protected by fenced_manager::mutex.
+*/
+
+   struct list_head head;
+
+   /**
+* Buffer with storage.
+*/
struct pb_buffer *buffer;
+   pb_size size;
+   struct pb_desc desc;
 
-   /* FIXME: protect access with mutex */
+   /**
+* Temporary CPU storage data. Used when there isn't enough GPU memory to
+* store the buffer.
+*/
+   void *data;
 
/**
 * A bitmask of PIPE_BUFFER_USAGE_CPU/GPU_READ/WRITE describing the current
@@ -93,15 +141,22 @@ struct fenced_buffer
unsigned flags;
 
unsigned mapcount;
+
struct pb_validate *vl;
unsigned validation_flags;
-   struct pipe_fence_handle *fence;
 
-   struct list_head head;
-   struct fenced_buffer_list *list;
+   struct pipe_fence_handle *fence;
 };
 
 
+static INLINE struct fenced_manager *
+fenced_manager(struct pb_manager *mgr)
+{
+   assert(mgr);
+   return (struct fenced_manager *)mgr;
+}
+
+
 static INLINE struct fenced_buffer *
 fenced_buffer(struct pb_buffer *buf)
 {
@@ -110,221 +165,568 @@ fenced_buffer(struct pb_buffer *buf)
 }
 
 
-static INLINE void
-_fenced_buffer_add(struct fenced_buffer *fenced_buf)
-{
-   struct fenced_buffer_list *fenced_list = fenced_buf->list;
+static void
+fenced_buffer_destroy_cpu_storage_locked(struct fenced_buffer *fenced_buf);
 
-   assert(pipe_is_referenced(&fenced_buf->base.base.reference));
-   assert(fenced_buf->flags & PIPE_BUFFER_USAGE_GPU_READ_WRITE);
-   assert(fenced_buf->fence);
+static enum pipe_error
+fenced_buffer_create_cpu_storage_locked(struct fenced_manager *fenced_mgr,
+struct fenced_buffer *fenced_buf);
 
+static void
+fenced_buffer_destroy_gpu_storage_locked(struct fenced_buffer *fenced_buf);
+
+static enum pipe_error
+fenced_buffer_create_gpu_storage_locked(struct fenced_manager *fenced_mgr,
+struct fenced_buffer *fenced_buf,
+

Mesa (gallium-multiple-constant-buffers): regress: Add fragment shader test for one-dimensional constant buffers.

2010-01-25 Thread Michał Król
Module: Mesa
Branch: gallium-multiple-constant-buffers
Commit: b9c873f9deee135ad7b98f844997f609837d0120
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b9c873f9deee135ad7b98f844997f609837d0120

Author: Michal Krol 
Date:   Fri Jan 22 09:40:33 2010 +0100

regress: Add fragment shader test for one-dimensional constant buffers.

---

 .../tests/regress/fragment-shader/frag-cb-1d.sh|   13 +
 .../regress/fragment-shader/fragment-shader.py |   11 ++-
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git 
a/src/gallium/state_trackers/python/tests/regress/fragment-shader/frag-cb-1d.sh 
b/src/gallium/state_trackers/python/tests/regress/fragment-shader/frag-cb-1d.sh
new file mode 100644
index 000..85fb9ea
--- /dev/null
+++ 
b/src/gallium/state_trackers/python/tests/regress/fragment-shader/frag-cb-1d.sh
@@ -0,0 +1,13 @@
+FRAG
+
+DCL IN[0], COLOR, LINEAR
+DCL OUT[0], COLOR
+DCL CONST[1]
+DCL CONST[3]
+DCL TEMP[0..1]
+
+ADD TEMP[0], IN[0], CONST[1]
+RCP TEMP[1], CONST[3].
+MUL OUT[0], TEMP[0], TEMP[1]
+
+END
diff --git 
a/src/gallium/state_trackers/python/tests/regress/fragment-shader/fragment-shader.py
 
b/src/gallium/state_trackers/python/tests/regress/fragment-shader/fragment-shader.py
index 6a0c1f8..9e668d2 100644
--- 
a/src/gallium/state_trackers/python/tests/regress/fragment-shader/fragment-shader.py
+++ 
b/src/gallium/state_trackers/python/tests/regress/fragment-shader/fragment-shader.py
@@ -147,17 +147,17 @@ def test(dev, name):
 fs = Shader(file('frag-' + name + '.sh', 'rt').read())
 ctx.set_fragment_shader(fs)
 
-constbuf0 = dev.buffer_create(16,
+constbuf0 = dev.buffer_create(64,
   (PIPE_BUFFER_USAGE_CONSTANT |
PIPE_BUFFER_USAGE_GPU_READ |
PIPE_BUFFER_USAGE_CPU_WRITE),
   4 * 4 * 4)
 
 cbdata = ''
-cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5)
-cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5)
-cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5)
-cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5)
+cbdata += struct.pack('4f', 0.4, 0.0, 0.0, 1.0)
+cbdata += struct.pack('4f', 1.0, 1.0, 1.0, 1.0)
+cbdata += struct.pack('4f', 2.0, 2.0, 2.0, 2.0)
+cbdata += struct.pack('4f', 4.0, 8.0, 16.0, 32.0)
 
 constbuf0.write(cbdata, 0)
 
@@ -221,6 +221,7 @@ def main():
 tests = [
 'abs',
 'add',
+'cb-1d',
 'cb-2d',
 'dp3',
 'dp4',

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


Mesa (gallium-multiple-constant-buffers): gallium: Enable multiple constant buffers for vertex and geometry shaders.

2010-01-25 Thread Michał Król
Module: Mesa
Branch: gallium-multiple-constant-buffers
Commit: a6201ae55f1e8bef6ad173d25a9bef0447d3b309
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a6201ae55f1e8bef6ad173d25a9bef0447d3b309

Author: Michal Krol 
Date:   Mon Jan 25 12:36:50 2010 +0100

gallium: Enable multiple constant buffers for vertex and geometry shaders.

---

 src/gallium/auxiliary/draw/draw_context.c  |   11 +++--
 src/gallium/auxiliary/draw/draw_context.h  |   10 +++--
 src/gallium/auxiliary/draw/draw_gs.c   |   14 --
 src/gallium/auxiliary/draw/draw_gs.h   |2 +-
 src/gallium/auxiliary/draw/draw_private.h  |   28 +++-
 .../auxiliary/draw/draw_pt_fetch_shade_pipeline.c  |   12 +++---
 src/gallium/auxiliary/draw/draw_vs.c   |   40 ++---
 src/gallium/auxiliary/draw/draw_vs.h   |8 ++-
 src/gallium/auxiliary/draw/draw_vs_aos.c   |   10 +++-
 src/gallium/auxiliary/draw/draw_vs_aos.h   |2 +-
 src/gallium/auxiliary/draw/draw_vs_aos_machine.c   |   14 --
 src/gallium/auxiliary/draw/draw_vs_exec.c  |6 ++-
 src/gallium/auxiliary/draw/draw_vs_llvm.c  |5 +-
 src/gallium/auxiliary/draw/draw_vs_ppc.c   |4 +-
 src/gallium/auxiliary/draw/draw_vs_sse.c   |4 +-
 src/gallium/auxiliary/draw/draw_vs_varient.c   |4 +-
 src/gallium/drivers/cell/ppu/cell_draw_arrays.c|2 +-
 src/gallium/drivers/i915/i915_context.c|2 +-
 src/gallium/drivers/llvmpipe/lp_state_fs.c |2 +-
 src/gallium/drivers/nv04/nv04_vbo.c|2 +-
 src/gallium/drivers/nv10/nv10_vbo.c|1 +
 src/gallium/drivers/nv20/nv20_vbo.c|2 +-
 src/gallium/drivers/nv40/nv40_draw.c   |2 +-
 src/gallium/drivers/r300/r300_render.c |2 +
 src/gallium/drivers/softpipe/sp_draw_arrays.c  |   48 
 src/gallium/drivers/svga/svga_swtnl_draw.c |2 +-
 src/mesa/state_tracker/st_draw_feedback.c  |2 +-
 27 files changed, 146 insertions(+), 95 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_context.c 
b/src/gallium/auxiliary/draw/draw_context.c
index e90dfc5..0382999 100644
--- a/src/gallium/auxiliary/draw/draw_context.c
+++ b/src/gallium/auxiliary/draw/draw_context.c
@@ -237,17 +237,20 @@ draw_set_mapped_vertex_buffer(struct draw_context *draw,
 void
 draw_set_mapped_constant_buffer(struct draw_context *draw,
 unsigned shader_type,
+unsigned slot,
 const void *buffer,
 unsigned size )
 {
debug_assert(shader_type == PIPE_SHADER_VERTEX ||
 shader_type == PIPE_SHADER_GEOMETRY);
+   debug_assert(slot < PIPE_MAX_CONSTANT);
+
if (shader_type == PIPE_SHADER_VERTEX) {
-  draw->pt.user.vs_constants = buffer;
-  draw_vs_set_constants( draw, (const float (*)[4])buffer, size );
+  draw->pt.user.vs_constants[slot] = buffer;
+  draw_vs_set_constants(draw, slot, buffer, size);
} else if (shader_type == PIPE_SHADER_GEOMETRY) {
-  draw->pt.user.gs_constants = buffer;
-  draw_gs_set_constants( draw, (const float (*)[4])buffer, size );
+  draw->pt.user.gs_constants[slot] = buffer;
+  draw_gs_set_constants(draw, slot, buffer, size);
}
 }
 
diff --git a/src/gallium/auxiliary/draw/draw_context.h 
b/src/gallium/auxiliary/draw/draw_context.h
index 8a64c06..acd81b9 100644
--- a/src/gallium/auxiliary/draw/draw_context.h
+++ b/src/gallium/auxiliary/draw/draw_context.h
@@ -151,10 +151,12 @@ void draw_set_mapped_element_buffer( struct draw_context 
*draw,
 void draw_set_mapped_vertex_buffer(struct draw_context *draw,
unsigned attr, const void *buffer);
 
-void draw_set_mapped_constant_buffer(struct draw_context *draw,
- unsigned shader_type,
- const void *buffer,
- unsigned size );
+void
+draw_set_mapped_constant_buffer(struct draw_context *draw,
+unsigned shader_type,
+unsigned slot,
+const void *buffer,
+unsigned size);
 
 
 /***
diff --git a/src/gallium/auxiliary/draw/draw_gs.c 
b/src/gallium/auxiliary/draw/draw_gs.c
index c3cc365..96be5db 100644
--- a/src/gallium/auxiliary/draw/draw_gs.c
+++ b/src/gallium/auxiliary/draw/draw_gs.c
@@ -69,9 +69,11 @@ void draw_gs_destroy( struct draw_context *draw )
tgsi_exec_machine_destroy(draw->gs.machine);
 }
 
-void draw_gs_set_constants( struct draw_context *draw,
-const float (*constants)[4],
-unsigned size )
+void
+draw_gs_set_constants(struct draw_context

Mesa (gallium-multiple-constant-buffers): gallium: Rename PIPE_MAX_CONSTANT to PIPE_MAX_CONSTANT_BUFFERS.

2010-01-25 Thread Michał Król
Module: Mesa
Branch: gallium-multiple-constant-buffers
Commit: 5340c8307601d701b2835d1d5de5e2395802091b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5340c8307601d701b2835d1d5de5e2395802091b

Author: Michal Krol 
Date:   Mon Jan 25 13:29:33 2010 +0100

gallium: Rename PIPE_MAX_CONSTANT to PIPE_MAX_CONSTANT_BUFFERS.

---

 src/gallium/auxiliary/draw/draw_context.c |2 +-
 src/gallium/auxiliary/draw/draw_gs.c  |4 ++--
 src/gallium/auxiliary/draw/draw_gs.h  |2 +-
 src/gallium/auxiliary/draw/draw_private.h |   10 +-
 src/gallium/auxiliary/draw/draw_vs.c  |2 +-
 src/gallium/auxiliary/draw/draw_vs.h  |2 +-
 src/gallium/auxiliary/draw/draw_vs_aos.c  |4 ++--
 src/gallium/auxiliary/draw/draw_vs_aos.h  |2 +-
 src/gallium/auxiliary/draw/draw_vs_exec.c |4 ++--
 src/gallium/auxiliary/draw/draw_vs_llvm.c |2 +-
 src/gallium/auxiliary/draw/draw_vs_ppc.c  |2 +-
 src/gallium/auxiliary/draw/draw_vs_sse.c  |2 +-
 src/gallium/auxiliary/tgsi/tgsi_exec.c|2 +-
 src/gallium/auxiliary/tgsi/tgsi_exec.h|2 +-
 src/gallium/auxiliary/tgsi/tgsi_ureg.c|6 +++---
 src/gallium/drivers/softpipe/sp_context.c |2 +-
 src/gallium/drivers/softpipe/sp_context.h |4 ++--
 src/gallium/drivers/softpipe/sp_draw_arrays.c |8 
 src/gallium/drivers/softpipe/sp_quad_fs.c |2 +-
 src/gallium/drivers/softpipe/sp_state_fs.c|2 +-
 src/gallium/include/pipe/p_state.h|2 +-
 21 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_context.c 
b/src/gallium/auxiliary/draw/draw_context.c
index 0382999..3372e1d 100644
--- a/src/gallium/auxiliary/draw/draw_context.c
+++ b/src/gallium/auxiliary/draw/draw_context.c
@@ -243,7 +243,7 @@ draw_set_mapped_constant_buffer(struct draw_context *draw,
 {
debug_assert(shader_type == PIPE_SHADER_VERTEX ||
 shader_type == PIPE_SHADER_GEOMETRY);
-   debug_assert(slot < PIPE_MAX_CONSTANT);
+   debug_assert(slot < PIPE_MAX_CONSTANT_BUFFERS);
 
if (shader_type == PIPE_SHADER_VERTEX) {
   draw->pt.user.vs_constants[slot] = buffer;
diff --git a/src/gallium/auxiliary/draw/draw_gs.c 
b/src/gallium/auxiliary/draw/draw_gs.c
index 96be5db..7069aa6 100644
--- a/src/gallium/auxiliary/draw/draw_gs.c
+++ b/src/gallium/auxiliary/draw/draw_gs.c
@@ -293,7 +293,7 @@ draw_geometry_fetch_outputs(struct draw_geometry_shader 
*shader,
 void draw_geometry_shader_run(struct draw_geometry_shader *shader,
   const float (*input)[4],
   float (*output)[4],
-  const void *constants[PIPE_MAX_CONSTANT],
+  const void *constants[PIPE_MAX_CONSTANT_BUFFERS],
   unsigned count,
   unsigned input_stride,
   unsigned vertex_size)
@@ -304,7 +304,7 @@ void draw_geometry_shader_run(struct draw_geometry_shader 
*shader,
unsigned num_primitives = count/num_vertices;
unsigned inputs_from_vs = 0;
 
-   for (i = 0; i < PIPE_MAX_CONSTANT; i++) {
+   for (i = 0; i < PIPE_MAX_CONSTANT_BUFFERS; i++) {
   machine->Consts[i] = constants[i];
}
 
diff --git a/src/gallium/auxiliary/draw/draw_gs.h 
b/src/gallium/auxiliary/draw/draw_gs.h
index e055c8a..d8eb210 100644
--- a/src/gallium/auxiliary/draw/draw_gs.h
+++ b/src/gallium/auxiliary/draw/draw_gs.h
@@ -62,7 +62,7 @@ struct draw_geometry_shader {
 void draw_geometry_shader_run(struct draw_geometry_shader *shader,
   const float (*input)[4],
   float (*output)[4],
-  const void *constants[PIPE_MAX_CONSTANT],
+  const void *constants[PIPE_MAX_CONSTANT_BUFFERS],
   unsigned count,
   unsigned input_stride,
   unsigned output_stride);
diff --git a/src/gallium/auxiliary/draw/draw_private.h 
b/src/gallium/auxiliary/draw/draw_private.h
index ecb17cb..6a7190e 100644
--- a/src/gallium/auxiliary/draw/draw_private.h
+++ b/src/gallium/auxiliary/draw/draw_private.h
@@ -153,8 +153,8 @@ struct draw_context
  const void *vbuffer[PIPE_MAX_ATTRIBS];
  
  /** constant buffer (for vertex/geometry shader) */
- const void *vs_constants[PIPE_MAX_CONSTANT];
- const void *gs_constants[PIPE_MAX_CONSTANT];
+ const void *vs_constants[PIPE_MAX_CONSTANT_BUFFERS];
+ const void *gs_constants[PIPE_MAX_CONSTANT_BUFFERS];
   } user;
 
   boolean test_fse; /* enable FSE even though its not correct (eg 
for softpipe) */
@@ -202,10 +202,10 @@ struct draw_context
   struct aos_machine *aos_machine; 
 
 
-  const void *aligned_constants[PIPE_MAX_CONSTANT];
+  const void *aligned_constants[PIPE_MAX_CONSTANT_BU

Mesa (gallium-multiple-constant-buffers): regress: Add vertex shaders tests for constant buffers.

2010-01-25 Thread Michał Król
Module: Mesa
Branch: gallium-multiple-constant-buffers
Commit: 7bd5290d2068ccd9748defd9f0fc1930fe728398
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7bd5290d2068ccd9748defd9f0fc1930fe728398

Author: Michal Krol 
Date:   Mon Jan 25 12:42:17 2010 +0100

regress: Add vertex shaders tests for constant buffers.

---

 .../tests/regress/vertex-shader/vert-cb-1d.sh  |   16 
 .../tests/regress/vertex-shader/vert-cb-2d.sh  |   12 ++
 .../tests/regress/vertex-shader/vertex-shader.py   |   40 
 3 files changed, 68 insertions(+), 0 deletions(-)

diff --git 
a/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-1d.sh 
b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-1d.sh
new file mode 100644
index 000..b41fe5d
--- /dev/null
+++ 
b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-1d.sh
@@ -0,0 +1,16 @@
+VERT
+
+DCL IN[0], POSITION
+DCL IN[1], COLOR
+DCL OUT[0], POSITION
+DCL OUT[1], COLOR
+DCL CONST[1]
+DCL CONST[3]
+DCL TEMP[0..1]
+
+MOV OUT[0], IN[0]
+ADD TEMP[0], IN[1], CONST[1]
+RCP TEMP[1], CONST[3].
+MUL OUT[1], TEMP[0], TEMP[1]
+
+END
diff --git 
a/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-2d.sh 
b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-2d.sh
new file mode 100644
index 000..45f5e6b
--- /dev/null
+++ 
b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vert-cb-2d.sh
@@ -0,0 +1,12 @@
+VERT
+
+DCL IN[0], POSITION
+DCL IN[1], COLOR
+DCL OUT[0], POSITION
+DCL OUT[1], COLOR
+DCL CONST[1][1..2]
+
+MOV OUT[0], IN[0]
+MAD OUT[1], IN[1], CONST[1][2], CONST[1][1]
+
+END
diff --git 
a/src/gallium/state_trackers/python/tests/regress/vertex-shader/vertex-shader.py
 
b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vertex-shader.py
index 01bf5a3..9650377 100644
--- 
a/src/gallium/state_trackers/python/tests/regress/vertex-shader/vertex-shader.py
+++ 
b/src/gallium/state_trackers/python/tests/regress/vertex-shader/vertex-shader.py
@@ -27,6 +27,8 @@
 ##
 
 
+import struct
+
 from gallium import *
 
 def make_image(surface):
@@ -143,6 +145,42 @@ def test(dev, name):
 ''')
 ctx.set_fragment_shader(fs)
 
+constbuf0 = dev.buffer_create(64,
+  (PIPE_BUFFER_USAGE_CONSTANT |
+   PIPE_BUFFER_USAGE_GPU_READ |
+   PIPE_BUFFER_USAGE_CPU_WRITE),
+  4 * 4 * 4)
+
+cbdata = ''
+cbdata += struct.pack('4f', 0.4, 0.0, 0.0, 1.0)
+cbdata += struct.pack('4f', 1.0, 1.0, 1.0, 1.0)
+cbdata += struct.pack('4f', 2.0, 2.0, 2.0, 2.0)
+cbdata += struct.pack('4f', 4.0, 8.0, 16.0, 32.0)
+
+constbuf0.write(cbdata, 0)
+
+ctx.set_constant_buffer(PIPE_SHADER_VERTEX,
+0,
+constbuf0)
+
+constbuf1 = dev.buffer_create(64,
+  (PIPE_BUFFER_USAGE_CONSTANT |
+   PIPE_BUFFER_USAGE_GPU_READ |
+   PIPE_BUFFER_USAGE_CPU_WRITE),
+  4 * 4 * 4)
+
+cbdata = ''
+cbdata += struct.pack('4f', 0.1, 0.1, 0.1, 0.1)
+cbdata += struct.pack('4f', 0.25, 0.25, 0.25, 0.25)
+cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5)
+cbdata += struct.pack('4f', 0.75, 0.75, 0.75, 0.75)
+
+constbuf1.write(cbdata, 0)
+
+ctx.set_constant_buffer(PIPE_SHADER_VERTEX,
+1,
+constbuf1)
+
 xy = [
  0.0,  0.8,
 -0.2,  0.4,
@@ -213,6 +251,8 @@ def main():
 'add',
 'arl',
 'arr',
+'cb-1d',
+'cb-2d',
 'dp3',
 'dp4',
 'dst',

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


Mesa (gallium-multiple-constant-buffers): gallium: Add CAPs for constant buffers.

2010-01-25 Thread Michał Król
Module: Mesa
Branch: gallium-multiple-constant-buffers
Commit: dfc5cee6299ffa6eb4e92fb0461bb3dbb1664abe
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dfc5cee6299ffa6eb4e92fb0461bb3dbb1664abe

Author: Michal Krol 
Date:   Mon Jan 25 13:35:35 2010 +0100

gallium: Add CAPs for constant buffers.

---

 src/gallium/include/pipe/p_defines.h |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/gallium/include/pipe/p_defines.h 
b/src/gallium/include/pipe/p_defines.h
index 35f3830..353d79a 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -405,6 +405,8 @@ enum pipe_transfer_usage {
 #define PIPE_CAP_MAX_PREDICATE_REGISTERS 30
 #define PIPE_CAP_MAX_COMBINED_SAMPLERS   31  /*< Maximum texture image units 
accessible from vertex
  and fragment shaders combined 
*/
+#define PIPE_CAP_MAX_CONST_BUFFERS   32
+#define PIPE_CAP_MAX_CONST_BUFFER_SIZE   33  /*< In bytes */
 
 
 /**

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


Mesa (gallium-multiple-constant-buffers): docs: Implement constant buffer CAPs.

2010-01-25 Thread Michał Król
Module: Mesa
Branch: gallium-multiple-constant-buffers
Commit: 580a62c1e0005403569b8b9e67356a8e957e35cc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=580a62c1e0005403569b8b9e67356a8e957e35cc

Author: Michal Krol 
Date:   Mon Jan 25 14:55:24 2010 +0100

docs: Implement constant buffer CAPs.

---

 src/gallium/docs/source/screen.rst |   24 +++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/src/gallium/docs/source/screen.rst 
b/src/gallium/docs/source/screen.rst
index 72bb75a..f0f0cb4 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
@@ -43,7 +43,29 @@ Returns the screen vendor.
 get_param
 ^
 
-Get an integer/boolean screen parameter.
+Get an integer/boolean screen parameter. Valid parameter names include.
+
+* ``PIPE_CAP_MAX_CONST_BUFFERS``: Maximum number of constant buffers that
+  can be bound to any shader stage using ``set_constant_buffer``.
+  
+  If 0 is returned, the driver is not aware of multiple constant buffers,
+  supports binding of only one constant buffer, and does not support
+  two-dimensional CONST register file access in TGSI shaders.
+  
+  If a value greater than 0 is returned, the driver can have multiple
+  constant buffers bound to shader stages. The CONST register file can
+  be accessed with two-dimensional indices, like in the example below.
+  
+DCL CONST[0][0..7]   # declare first 8 vectors of constbuf 0
+DCL CONST[3][0]  # declare first vector of constbuf 3
+MOV OUT[0], CONST[0][3]  # copy vector 3 of constbuf 0
+  
+  For backwards compatibility, one-dimensional access to CONST register
+  file is still supported. In that case, the constbuf index is assumed
+  to be 0.
+
+* ``PIPE_CAP_MAX_CONST_BUFFER_SIZE``: Maximum byte size of a single constant
+  buffer.
 
 get_paramf
 ^^

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


Mesa (gallium-multiple-constant-buffers): softpipe: Report some sane values for constant buffer CAP queries.

2010-01-25 Thread Michał Król
Module: Mesa
Branch: gallium-multiple-constant-buffers
Commit: 4e014d9c11d11ad87e10f8847253229566bed4d7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e014d9c11d11ad87e10f8847253229566bed4d7

Author: Michal Krol 
Date:   Mon Jan 25 14:31:32 2010 +0100

softpipe: Report some sane values for constant buffer CAP queries.

---

 src/gallium/drivers/softpipe/sp_screen.c |4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/softpipe/sp_screen.c 
b/src/gallium/drivers/softpipe/sp_screen.c
index bd3532d..69f40dc 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -91,6 +91,10 @@ softpipe_get_param(struct pipe_screen *screen, int param)
   return 1;
case PIPE_CAP_BLEND_EQUATION_SEPARATE:
   return 1;
+   case PIPE_CAP_MAX_CONST_BUFFERS:
+  return PIPE_MAX_CONSTANT_BUFFERS;
+   case PIPE_CAP_MAX_CONST_BUFFER_SIZE:
+  return 4096 * 4 * sizeof(float);
default:
   return 0;
}

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


Mesa (master): winsys/drm: Correctly install EGL drivers.

2010-01-25 Thread Chia-I Wu
Module: Mesa
Branch: master
Commit: 2204447de320afe201a9369f57658cae0a11a440
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2204447de320afe201a9369f57658cae0a11a440

Author: Chia-I Wu 
Date:   Mon Jan 25 22:29:51 2010 +0800

winsys/drm: Correctly install EGL drivers.

Remove extraneous quotes that prevent some drivers to be installed when
there are more than one display in EGL_DISPLAYS.

---

 src/gallium/winsys/drm/Makefile.egl |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/winsys/drm/Makefile.egl 
b/src/gallium/winsys/drm/Makefile.egl
index d79ceee..b1f2038 100644
--- a/src/gallium/winsys/drm/Makefile.egl
+++ b/src/gallium/winsys/drm/Makefile.egl
@@ -55,7 +55,7 @@ clean:
 
 install: $(EGL_DISPLAY_LIBS)
$(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR)
-   for lib in "$(EGL_DISPLAY_LIBS)"; do \
+   for lib in $(EGL_DISPLAY_LIBS); do \
$(MINSTALL) -m 755 "$$lib" $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR); 
\
done
 

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


Mesa (master): Fix compressed texture loads for non-minimal pitches again

2010-01-25 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 9328f3a670993167d7fb9a590f9e712467e77c7c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9328f3a670993167d7fb9a590f9e712467e77c7c

Author: Luca Barbieri 
Date:   Tue Jan 19 17:39:27 2010 -0800

Fix compressed texture loads for non-minimal pitches again

My commit eea6a7639f767b1d30b6ef1f91a9c49e3f3b78f0 does a memcpy of height
lines, but that's wrong because the texture has a block layout and we
must thus use the number of vertical blocks instead of the height.

Signed-off-by: Brian Paul 

---

 src/mesa/state_tracker/st_cb_texture.c |6 --
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_texture.c 
b/src/mesa/state_tracker/st_cb_texture.c
index b94bfc8..cee2452 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -686,9 +686,11 @@ st_TexImage(GLcontext * ctx,
   {
  char *dst = texImage->Data;
  const char *src = pixels;
- int i;
+ GLuint i, bw, bh, lines;
+ _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh);
+ lines = (height + bh - 1) / bh;
 
- for(i = 0; i < height; ++i)
+ for(i = 0; i < lines; ++i)
  {
 memcpy(dst, src, srcImageStride);
 dst += dstRowStride;

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


Mesa (mesa_7_7_branch): vega: fix incorrect samplers, textures indexes in blend_bind_samplers()

2010-01-25 Thread Brian Paul
Module: Mesa
Branch: mesa_7_7_branch
Commit: 0d051af6127d206d165a1034ca0795ce8fdcd389
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d051af6127d206d165a1034ca0795ce8fdcd389

Author: Igor Oliveira 
Date:   Mon Jan 25 09:53:53 2010 -0700

vega: fix incorrect samplers, textures indexes in blend_bind_samplers()

Fixes fd.o bug 25863.

Signed-off-by: Brian Paul 

---

 src/gallium/state_trackers/vega/shader.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/state_trackers/vega/shader.c 
b/src/gallium/state_trackers/vega/shader.c
index d9074a3..91909da 100644
--- a/src/gallium/state_trackers/vega/shader.c
+++ b/src/gallium/state_trackers/vega/shader.c
@@ -135,8 +135,8 @@ static VGint blend_bind_samplers(struct vg_context *ctx,
   textures[2] = stfb->blend_texture;
 
   if (!samplers[0] || !textures[0]) {
- samplers[1] = samplers[2];
- textures[1] = textures[2];
+ samplers[0] = samplers[2];
+ textures[0] = textures[2];
   }
   if (!samplers[1] || !textures[1]) {
  samplers[1] = samplers[0];

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


Mesa (perrtblend): 21 new commits

2010-01-25 Thread Roland Scheidegger
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=df4395198ce433251c8bd2d497543c7b389e5aca
Author: Roland Scheidegger 
Date:   Mon Jan 25 20:20:52 2010 +0100

softpipe: enable new blend functionality

works with tests/drawbuffers2

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5fae36147e1067ac8b1eb5bcade2f9b1dbf29aa4
Author: Roland Scheidegger 
Date:   Mon Jan 25 19:27:05 2010 +0100

st/mesa: handle EXT_draw_buffers2 per rendertarget blend enables / 
colormasks

uses the new gallium per-rt blend functionality

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d3a6a505d537b879f31be0ed14fa8577717efaf
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:52:14 2010 +0100

vega: don't enable blending if not necessary

In some places blending was enabled even though it wasn't necessary.
Also remove a (bogus) reenabling of color writes, which wasn't really used.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dbc0e24ab866ce8bdd974b52e050dd022620b146
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:43:33 2010 +0100

xorg: do not enable unnecessary blending for xv

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=13b74b585a013f0f089ea14c9512e3d709bdca67
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:41:57 2010 +0100

trace: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6893948d482ab69a41290d1b0172834197ee48f2
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:39:39 2010 +0100

svga: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e6bfa6de1940f1da018aace444ae7ca16792d28
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:39:16 2010 +0100

softpipe: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e908abf1740dce1a3b391ce5bcfda4f2a0b480de
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:38:32 2010 +0100

nouveau: adapt drviers to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d241964e47ac5576e754d6e6ae19fece8bf8752c
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:37:51 2010 +0100

r300g: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e0c825a799b9982ad62125df1aa876b3b0c110d
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:37:27 2010 +0100

i965g: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc160fc9b293f155d5ed48912dc09c111b97ec74
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:37:09 2010 +0100

i915g: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=88388b99fbde4652d39f4876a2fc0235de415a3f
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:36:37 2010 +0100

cell: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=99e28d4ee3ce995845d9290b735b1fbe1b96886d
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:35:56 2010 +0100

llvmpipe: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3770769f21138ba722a38c1400b501fdcedea17d
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:34:29 2010 +0100

st/python: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=feefa7a510058f57a81e5e928cd2fcb63506624f
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:33:09 2010 +0100

vega: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=92676b9fe6356a8974830c47c0191d1ca57a0741
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:32:18 2010 +0100

xorg: adapt to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cbb8d35a3ae999f0192dfdca35f7cbc1d494fabb
Author: Roland Scheidegger 
Date:   Mon Jan 25 16:31:21 2010 +0100

gallium: fix cast for size calc of pipe_blend_state

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=629bb3fa32f6ca1f8cf43222f4b4c399c91b3b6a
Author: Roland Scheidegger 
Date:   Thu Jan 21 20:48:13 2010 +0100

docs: enhance blend documentation

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c6c9d3b0914e2c3d8585123055c97d8ac3452fe5
Author: Roland Scheidegger 
Date:   Thu Jan 21 20:22:24 2010 +0100

docs: clean up sampler description

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=eba1e2a44718bea398e49d496a78ee002c9922b8
Author: Roland Scheidegger 
Date:   Thu Jan 21 19:56:29 2010 +0100

gallium: adapt util code to blend changes

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=41667a9a3e2c809d7d7e65f81782df8c89790bc6
Author: Roland Scheidegger 
Date:   Thu Jan 21 19:45:43 2010 +0100

gallium: new PIPE_CAP bits for the independent blend functionality

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


Mesa (master): Revert "r300g, radeong: finish and enable the immediate mode"

2010-01-25 Thread Corbin Simpson
Module: Mesa
Branch: master
Commit: 72778a9d254f6c9c63d86413936ee7f3e5a6e56e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=72778a9d254f6c9c63d86413936ee7f3e5a6e56e

Author: Corbin Simpson 
Date:   Mon Jan 25 10:52:19 2010 -0800

Revert "r300g,radeong: finish and enable the immediate mode"

This reverts commit 112239e9a66a155d36fe2ad0ab130e6f26eff298.

---

 src/gallium/drivers/r300/r300_emit.c   |   22 +++
 src/gallium/drivers/r300/r300_render.c |  141 ---
 src/gallium/drivers/r300/r300_state.c  |   22 ---
 src/gallium/winsys/drm/radeon/core/radeon_buffer.c |   83 ++--
 src/gallium/winsys/drm/radeon/core/radeon_buffer.h |2 -
 src/gallium/winsys/drm/radeon/core/radeon_drm.h|2 +-
 src/gallium/winsys/drm/radeon/core/radeon_r300.c   |8 +-
 src/gallium/winsys/drm/radeon/core/radeon_winsys.h |6 -
 8 files changed, 67 insertions(+), 219 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_emit.c 
b/src/gallium/drivers/r300/r300_emit.c
index badbf37..36d2c64 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -772,6 +772,22 @@ void r300_emit_texture(struct r300_context* r300,
 END_CS;
 }
 
+static boolean r300_validate_aos(struct r300_context *r300)
+{
+struct pipe_vertex_buffer *vbuf = r300->vertex_buffer;
+struct pipe_vertex_element *velem = r300->vertex_element;
+int i;
+
+/* Check if formats and strides are aligned to the size of DWORD. */
+for (i = 0; i < r300->vertex_element_count; i++) {
+if (vbuf[velem[i].vertex_buffer_index].stride % 4 != 0 ||
+util_format_get_blocksize(velem[i].src_format) % 4 != 0) {
+return FALSE;
+}
+}
+return TRUE;
+}
+
 void r300_emit_aos(struct r300_context* r300, unsigned offset)
 {
 struct pipe_vertex_buffer *vb1, *vb2, *vbuf = r300->vertex_buffer;
@@ -781,6 +797,12 @@ void r300_emit_aos(struct r300_context* r300, unsigned 
offset)
 unsigned packet_size = (aos_count * 3 + 1) / 2;
 CS_LOCALS(r300);
 
+/* XXX Move this checking to a more approriate place. */
+if (!r300_validate_aos(r300)) {
+/* XXX We should fallback using Draw. */
+assert(0);
+}
+
 BEGIN_CS(2 + packet_size + aos_count * 2);
 OUT_CS_PKT3(R300_PACKET3_3D_LOAD_VBPNTR, packet_size);
 OUT_CS(aos_count);
diff --git a/src/gallium/drivers/r300/r300_render.c 
b/src/gallium/drivers/r300/r300_render.c
index 7f095bf..677031e 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -28,7 +28,6 @@
 
 #include "pipe/p_inlines.h"
 
-#include "util/u_format.h"
 #include "util/u_memory.h"
 #include "util/u_prim.h"
 
@@ -115,53 +114,20 @@ static uint32_t r300_provoking_vertex_fixes(struct 
r300_context *r300,
 return color_control;
 }
 
-
-static void r300_emit_draw_arrays_immediate(struct r300_context *r300,
-unsigned mode,
-unsigned start,
-unsigned count)
+static void r300_emit_draw_immediate(struct r300_context *r300,
+ unsigned mode,
+ unsigned start,
+ unsigned count)
 {
-struct pipe_vertex_element* velem;
-struct pipe_vertex_buffer* vbuf;
-unsigned vertex_element_count = r300->vertex_element_count;
-unsigned i, v, vbi, dw, elem_offset;
-
-/* Size of the vertex, in dwords. */
-unsigned vertex_size = 0;
-
-/* Offsets of the attribute, in dwords, from the start of the vertex. */
-unsigned offset[PIPE_MAX_ATTRIBS];
-
-/* Size of the vertex element, in dwords. */
-unsigned size[PIPE_MAX_ATTRIBS];
-
-/* Stride to the same attrib in the next vertex in the vertex buffer,
- * in dwords. */
-unsigned stride[PIPE_MAX_ATTRIBS];
-
-/* Mapped vertex buffers. */
-uint32_t* map[PIPE_MAX_ATTRIBS] = {0};
-
+struct pipe_buffer* vbo = r300->vertex_buffer[0].buffer;
+unsigned vertex_size = r300->vertex_buffer[0].stride / sizeof(float);
+unsigned i;
+uint32_t* map;
 CS_LOCALS(r300);
 
-/* Calculate the vertex size, offsets, strides etc. and map the buffers. */
-for (i = 0; i < vertex_element_count; i++) {
-velem = &r300->vertex_element[i];
-offset[i] = velem->src_offset >> 2;
-size[i] = util_format_get_blocksize(velem->src_format) >> 2;
-vertex_size += size[i];
-vbi = velem->vertex_buffer_index;
-
-/* Map the buffer. */
-if (!map[vbi]) {
-vbuf = &r300->vertex_buffer[vbi];
-map[vbi] = (uint32_t*)pipe_buffer_map(r300->context.screen,
-  vbuf->buffer,
-  PIPE_BUFFER_USAGE_CPU_READ);
-map[vbi] += vbuf->buffer_offset >> 2;
-strid

Mesa (master): radeong: Clean up domain usages.

2010-01-25 Thread Corbin Simpson
Module: Mesa
Branch: master
Commit: 67149051be56825151659eb1672242b624555f7d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=67149051be56825151659eb1672242b624555f7d

Author: Corbin Simpson 
Date:   Mon Jan 25 11:01:16 2010 -0800

radeong: Clean up domain usages.

Split from Marek's immd-mode patch.

---

 src/gallium/winsys/drm/radeon/core/radeon_buffer.c |   29 ---
 1 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c 
b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
index 25e1cdc..421fda2 100644
--- a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
+++ b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
@@ -51,6 +51,23 @@ static const char *radeon_get_name(struct pipe_winsys *ws)
 return "Radeon/GEM+KMS";
 }
 
+static uint32_t radeon_domain_from_usage(unsigned usage)
+{
+uint32_t domain = 0;
+
+if (usage & PIPE_BUFFER_USAGE_PIXEL) {
+domain |= RADEON_GEM_DOMAIN_VRAM;
+}
+if (usage & PIPE_BUFFER_USAGE_VERTEX) {
+domain |= RADEON_GEM_DOMAIN_GTT;
+}
+if (usage & PIPE_BUFFER_USAGE_INDEX) {
+domain |= RADEON_GEM_DOMAIN_GTT;
+}
+
+return domain;
+}
+
 static struct pipe_buffer *radeon_buffer_create(struct pipe_winsys *ws,
 unsigned alignment,
 unsigned usage,
@@ -79,17 +96,7 @@ static struct pipe_buffer *radeon_buffer_create(struct 
pipe_winsys *ws,
 return &radeon_buffer->base;
 }
 
-domain = 0;
-
-if (usage & PIPE_BUFFER_USAGE_PIXEL) {
-domain |= RADEON_GEM_DOMAIN_VRAM;
-}
-if (usage & PIPE_BUFFER_USAGE_VERTEX) {
-domain |= RADEON_GEM_DOMAIN_GTT;
-}
-if (usage & PIPE_BUFFER_USAGE_INDEX) {
-domain |= RADEON_GEM_DOMAIN_GTT;
-}
+domain = radeon_domain_from_usage(usage);
 
 radeon_buffer->bo = radeon_bo_open(radeon_ws->priv->bom, 0, size,
 alignment, domain, 0);

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


Mesa (master): radeong: Make is_r3xx inline to avoid warnings.

2010-01-25 Thread Corbin Simpson
Module: Mesa
Branch: master
Commit: c486bfb463f30bf894d2dae1326973aeb3de1159
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c486bfb463f30bf894d2dae1326973aeb3de1159

Author: Corbin Simpson 
Date:   Mon Jan 25 11:04:15 2010 -0800

radeong: Make is_r3xx inline to avoid warnings.

Split from Marek's immd-mode patch.

---

 src/gallium/winsys/drm/radeon/core/radeon_drm.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/winsys/drm/radeon/core/radeon_drm.h 
b/src/gallium/winsys/drm/radeon/core/radeon_drm.h
index ddd7983..077388e 100644
--- a/src/gallium/winsys/drm/radeon/core/radeon_drm.h
+++ b/src/gallium/winsys/drm/radeon/core/radeon_drm.h
@@ -81,7 +81,7 @@ void radeon_destroy_drm_api(struct drm_api* api);
 /* Guess at whether this chipset should use r300g.
  *
  * I believe that this check is valid, but I haven't been exhaustive. */
-static boolean is_r3xx(int pciid)
+static INLINE boolean is_r3xx(int pciid)
 {
 return (pciid > 0x3150) && (pciid < 0x796f);
 }

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


Mesa (master): radeong: Make sure that we' re not emitting relocations for local buffers.

2010-01-25 Thread Corbin Simpson
Module: Mesa
Branch: master
Commit: 1571602153128971ae9ed549d633d67aac65da14
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1571602153128971ae9ed549d633d67aac65da14

Author: Corbin Simpson 
Date:   Mon Jan 25 11:04:55 2010 -0800

radeong: Make sure that we're not emitting relocations for local buffers.

Split from Marek's immd-mode patch.

---

 src/gallium/winsys/drm/radeon/core/radeon_r300.c |8 ++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/gallium/winsys/drm/radeon/core/radeon_r300.c 
b/src/gallium/winsys/drm/radeon/core/radeon_r300.c
index 0253bc2..d759bea 100644
--- a/src/gallium/winsys/drm/radeon/core/radeon_r300.c
+++ b/src/gallium/winsys/drm/radeon/core/radeon_r300.c
@@ -81,9 +81,13 @@ static void radeon_write_cs_reloc(struct radeon_winsys* 
winsys,
   uint32_t flags)
 {
 int retval = 0;
+struct radeon_pipe_buffer* radeon_buffer =
+(struct radeon_pipe_buffer*)pbuffer;
 
-retval = radeon_cs_write_reloc(winsys->priv->cs,
-((struct radeon_pipe_buffer*)pbuffer)->bo, rd, wd, flags);
+assert(!radeon_buffer->pb);
+
+retval = radeon_cs_write_reloc(winsys->priv->cs, radeon_buffer->bo,
+   rd, wd, flags);
 
 if (retval) {
 debug_printf("radeon: Relocation of %p (%d, %d, %d) failed!\n",

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


Mesa (master): r300g: Finish and enable immediate mode.

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

Author: Corbin Simpson 
Date:   Mon Jan 25 11:27:50 2010 -0800

r300g: Finish and enable immediate mode.

Based on Marek's immd-mode patch.

---

 src/gallium/drivers/r300/r300_emit.c   |   22 --
 src/gallium/drivers/r300/r300_render.c |  115 +++-
 src/gallium/drivers/r300/r300_state.c  |   22 ++
 3 files changed, 106 insertions(+), 53 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_emit.c 
b/src/gallium/drivers/r300/r300_emit.c
index 36d2c64..badbf37 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -772,22 +772,6 @@ void r300_emit_texture(struct r300_context* r300,
 END_CS;
 }
 
-static boolean r300_validate_aos(struct r300_context *r300)
-{
-struct pipe_vertex_buffer *vbuf = r300->vertex_buffer;
-struct pipe_vertex_element *velem = r300->vertex_element;
-int i;
-
-/* Check if formats and strides are aligned to the size of DWORD. */
-for (i = 0; i < r300->vertex_element_count; i++) {
-if (vbuf[velem[i].vertex_buffer_index].stride % 4 != 0 ||
-util_format_get_blocksize(velem[i].src_format) % 4 != 0) {
-return FALSE;
-}
-}
-return TRUE;
-}
-
 void r300_emit_aos(struct r300_context* r300, unsigned offset)
 {
 struct pipe_vertex_buffer *vb1, *vb2, *vbuf = r300->vertex_buffer;
@@ -797,12 +781,6 @@ void r300_emit_aos(struct r300_context* r300, unsigned 
offset)
 unsigned packet_size = (aos_count * 3 + 1) / 2;
 CS_LOCALS(r300);
 
-/* XXX Move this checking to a more approriate place. */
-if (!r300_validate_aos(r300)) {
-/* XXX We should fallback using Draw. */
-assert(0);
-}
-
 BEGIN_CS(2 + packet_size + aos_count * 2);
 OUT_CS_PKT3(R300_PACKET3_3D_LOAD_VBPNTR, packet_size);
 OUT_CS(aos_count);
diff --git a/src/gallium/drivers/r300/r300_render.c 
b/src/gallium/drivers/r300/r300_render.c
index 677031e..dcd0761 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -28,6 +28,7 @@
 
 #include "pipe/p_inlines.h"
 
+#include "util/u_format.h"
 #include "util/u_memory.h"
 #include "util/u_prim.h"
 
@@ -114,20 +115,58 @@ static uint32_t r300_provoking_vertex_fixes(struct 
r300_context *r300,
 return color_control;
 }
 
-static void r300_emit_draw_immediate(struct r300_context *r300,
- unsigned mode,
- unsigned start,
- unsigned count)
+static boolean immd_is_good_idea(struct r300_context *r300,
+  unsigned count)
 {
-struct pipe_buffer* vbo = r300->vertex_buffer[0].buffer;
-unsigned vertex_size = r300->vertex_buffer[0].stride / sizeof(float);
-unsigned i;
-uint32_t* map;
+return count <= 4;
+}
+
+static void r300_emit_draw_arrays_immediate(struct r300_context *r300,
+unsigned mode,
+unsigned start,
+unsigned count)
+{
+struct pipe_vertex_element* velem;
+struct pipe_vertex_buffer* vbuf;
+unsigned vertex_element_count = r300->vertex_element_count;
+unsigned i, v, vbi, dw, elem_offset;
+
+/* Size of the vertex, in dwords. */
+unsigned vertex_size = 0;
+
+/* Offsets of the attribute, in dwords, from the start of the vertex. */
+unsigned offset[PIPE_MAX_ATTRIBS];
+
+/* Size of the vertex element, in dwords. */
+unsigned size[PIPE_MAX_ATTRIBS];
+
+/* Stride to the same attrib in the next vertex in the vertex buffer,
+ * in dwords. */
+unsigned stride[PIPE_MAX_ATTRIBS];
+
+/* Mapped vertex buffers. */
+uint32_t* map[PIPE_MAX_ATTRIBS] = {0};
+
 CS_LOCALS(r300);
 
-map = (uint32_t*)pipe_buffer_map_range(r300->context.screen, vbo,
-start * vertex_size, count * vertex_size,
-PIPE_BUFFER_USAGE_CPU_READ);
+/* Calculate the vertex size, offsets, strides etc. and map the buffers. */
+for (i = 0; i < vertex_element_count; i++) {
+velem = &r300->vertex_element[i];
+offset[i] = velem->src_offset / 4;
+size[i] = util_format_get_blocksize(velem->src_format) / 4;
+vertex_size += size[i];
+vbi = velem->vertex_buffer_index;
+
+/* Map the buffer. */
+if (!map[vbi]) {
+vbuf = &r300->vertex_buffer[vbi];
+map[vbi] = (uint32_t*)pipe_buffer_map(r300->context.screen,
+  vbuf->buffer,
+  PIPE_BUFFER_USAGE_CPU_READ);
+map[vbi] += vbuf->buffer_offset / 4;
+stride[vbi] = vbuf->stride / 4;
+}
+}
 
 BEGIN_CS(10 + count 

Mesa (mesa_7_7_branch): st/xorg: Fix crash on resize with libkms

2010-01-25 Thread Jakob Bornecrantz
Module: Mesa
Branch: mesa_7_7_branch
Commit: 6749310d3f60df70ad8f82db986871ab9496793b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6749310d3f60df70ad8f82db986871ab9496793b

Author: Jakob Bornecrantz 
Date:   Mon Jan 25 20:07:43 2010 +0100

st/xorg: Fix crash on resize with libkms

---

 src/gallium/state_trackers/xorg/xorg_driver.c |   14 --
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c 
b/src/gallium/state_trackers/xorg/xorg_driver.c
index 0ff6c52..e4ad789 100644
--- a/src/gallium/state_trackers/xorg/xorg_driver.c
+++ b/src/gallium/state_trackers/xorg/xorg_driver.c
@@ -1066,12 +1066,22 @@ drv_bind_front_buffer_kms(ScrnInfoPtr pScrn)
goto err_destroy;
 
 pScreen->ModifyPixmapHeader(rootPixmap,
-   pScreen->width,
-   pScreen->height,
+   pScrn->virtualX,
+   pScrn->virtualY,
pScreen->rootDepth,
pScrn->bitsPerPixel,
stride,
ptr);
+
+/* This a hack to work around EnableDisableFBAccess setting the pointer
+ * the real fix would be to replace pScrn->EnableDisableFBAccess hook
+ * and set the rootPixmap->devPrivate.ptr to something valid before that.
+ *
+ * But in its infinit visdome something uses either this some times before
+ * that, so our hook doesn't get called before the crash happens.
+ */
+pScrn->pixmapPrivate.ptr = ptr;
+
 return TRUE;
 
 err_destroy:

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


Mesa (master): r300: rv350+ support FLT16_2/4 vertex formats

2010-01-25 Thread Alex Deucher
Module: Mesa
Branch: master
Commit: 7e7f8815fbfa21ab2397e673fa19c36603bc7a51
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e7f8815fbfa21ab2397e673fa19c36603bc7a51

Author: Alex Deucher 
Date:   Mon Jan 25 16:19:19 2010 -0500

r300: rv350+ support FLT16_2/4 vertex formats

---

 src/mesa/drivers/dri/r300/r300_context.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_context.c 
b/src/mesa/drivers/dri/r300/r300_context.c
index 74947a9..2efdae0 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -451,7 +451,7 @@ static void r300InitGLExtensions(GLcontext *ctx)
if (!r300->radeon.radeonScreen->drmSupportsOcclusionQueries) {
_mesa_disable_extension(ctx, "GL_ARB_occlusion_query");
}
-   if (r300->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV515)
+   if (r300->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV350)
_mesa_enable_extension(ctx, "GL_ARB_half_float_vertex");
 }
 

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


Mesa (master): 28 new commits

2010-01-25 Thread Brian Paul
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9b22427911ad27efc1f36faee9462c6082d0417c
Merge: 7e7f8815fbfa21ab2397e673fa19c36603bc7a51 
6749310d3f60df70ad8f82db986871ab9496793b
Author: Brian Paul 
Date:   Mon Jan 25 14:46:17 2010 -0700

Merge branch 'mesa_7_7_branch'

Conflicts:

src/mesa/drivers/dri/intel/intel_screen.c
src/mesa/drivers/dri/intel/intel_swapbuffers.c
src/mesa/drivers/dri/r300/r300_emit.c
src/mesa/drivers/dri/r300/r300_ioctl.c
src/mesa/drivers/dri/r300/r300_tex.c
src/mesa/drivers/dri/r300/r300_texstate.c

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6749310d3f60df70ad8f82db986871ab9496793b
Author: Jakob Bornecrantz 
Date:   Mon Jan 25 20:07:43 2010 +0100

st/xorg: Fix crash on resize with libkms

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d051af6127d206d165a1034ca0795ce8fdcd389
Author: Igor Oliveira 
Date:   Mon Jan 25 09:53:53 2010 -0700

vega: fix incorrect samplers, textures indexes in blend_bind_samplers()

Fixes fd.o bug 25863.

Signed-off-by: Brian Paul 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6877c5de3c3ff39da514a74928ea270138cddff9
Author: Jakob Bornecrantz 
Date:   Mon Jan 25 12:27:47 2010 +0100

vmware/xorg: Do buffer round-robin logic differently

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0b482c4fbe69a807bb69bf92f37e362f818c664d
Author: Jakob Bornecrantz 
Date:   Fri Jan 22 18:28:40 2010 +0100

st/xorg: Improve options and print them to log

Set 2D acceleration to off by default
Get fallback debugging from the Xorg config
Also print if 3D acceleration is enabled

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a3b783ea294f348bf3424eeb4170dd7f0741519a
Author: Jakob Bornecrantz 
Date:   Thu Jan 21 21:32:28 2010 +0100

vmware/xorg: Export pci_probe function for ugly chain-loading

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=36fd55f9f03b00263ee1ccf22bbb50e5ba048e80
Author: Jakob Bornecrantz 
Date:   Thu Jan 21 21:23:22 2010 +0100

st/xorg: Export helper function for detecting modesetting

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=16cf7e14a6dee85fadc0ab4e7c066288c3362352
Author: Jakob Bornecrantz 
Date:   Thu Jan 21 21:28:14 2010 +0100

st/xorg: Fix warning

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=47d30b0c2c36f952cc14deefb9f937f1b0a9b531
Author: Brian Paul 
Date:   Sun Jan 24 18:18:17 2010 -0700

st/mesa: fix int->uint conversion for negative scissor bound values

Based on a patch by Xavier Chantry :

If x+width or y+height is negative, then maxx or maxy will get a bogus value
when converting that to unsigned. Fix this by setting 0 as minimal value.

This was also triggered by teeworlds, but only with some combination of
resolution and map section. For example upper part of dm2 at 1280x1024.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e88d6fe299cb43eedfae7f0fa3bb14c8086a8cd4
Author: Brian Paul 
Date:   Sun Jan 24 17:54:44 2010 -0700

mesa: move _mesa_debug() call earlier in _mesa_Scissor

Part of a patch from Xavier Chantry 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdfa4c85297d5d25e7256bf73e35309b358af86c
Author: Xavier Chantry 
Date:   Sat Jan 23 17:27:21 2010 +0100

st/mesa: fix unsigned/signed breakage in scissor

commit 53174afeeb introduced a portability change that converted GLint x,y
to GLuint. That breaks when x and y are negative, which seems to be allowed,
and which at least one game uses : teeworlds.

Rather than simply reverting the change, it seems possible to convert the
16bit unsigned to GLint so that comparisons are made between signed integers
instead.  This hopefully does not break anything while keeping MSVC happy.

Signed-off-by: Xavier Chantry 
Signed-off-by: Brian Paul 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e85cb98a169f83e1a1ad7f17cbbedaee0ea47fe1
Author: Vinson Lee 
Date:   Sun Jan 24 00:17:00 2010 -0800

r200: Silence fprintf format warning.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e02dc139520fab9f7189e0ae390f72ed674bb7d7
Author: Vinson Lee 
Date:   Sat Jan 23 23:18:33 2010 -0800

x86: Do not build read_rgba_span_x86.S on Mac OS X.

read_rgba_span_x86.S uses the pseudo-ops .hidden and .type which are
not recognized on Mac OS X.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f429b80fffc57a6165b76e9345cf5b9383edd650
Author: Vinson Lee 
Date:   Sat Jan 23 23:12:34 2010 -0800

x86: Do not use .hidden pseudo-op on Mac OS X.

The .hidden directive is an unknown pseudo-op on Mac OS X.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc75ec0f3824176f3fd7182846b3ec36051945b3
Author: Vinson Lee 
Date:   Sat Jan 23 22:59:31 2010 -0800

glapi: Do not use .type pseudo-op on Mac OS X.

The .t

Mesa (master): mesa: misc GLX_INTEL_swap_event fixes

2010-01-25 Thread Jesse Barnes
Module: Mesa
Branch: master
Commit: 7a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72

Author: Robert Bragg 
Date:   Wed Jan 20 03:01:14 2010 +

mesa: misc GLX_INTEL_swap_event fixes

Fixup a few issues found through testing:
  - update GLX names to match glproto
  - register DRI2WireToEvent so it actually gets called

Signed-off-by: Robert Bragg 

---

 include/GL/glx.h|6 +-
 include/GL/glxext.h |8 
 src/glx/x11/dri2.c  |   20 ++--
 src/glx/x11/glxclient.h |5 +
 src/glx/x11/glxext.c|7 +++
 5 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/include/GL/glx.h b/include/GL/glx.h
index 82b0f22..fd53964 100644
--- a/include/GL/glx.h
+++ b/include/GL/glx.h
@@ -518,8 +518,12 @@ typedef struct {
 } GLXPbufferClobberEvent;
 
 typedef struct {
+int type;
+unsigned long serial;  /* # of last request processed by server */
+Bool send_event;   /* true if this came from a SendEvent request */
+Display *display;  /* Display the event was read from */
+GLXDrawable drawable;  /* drawable on which event was requested in 
event mask */
 int event_type;
-GLXDrawable drawable;
 int64_t ust;
 int64_t msc;
 int64_t sbc;
diff --git a/include/GL/glxext.h b/include/GL/glxext.h
index 36ee366..50740dd 100644
--- a/include/GL/glxext.h
+++ b/include/GL/glxext.h
@@ -698,10 +698,10 @@ typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display 
*dpy, GLXDrawable drawabl
 
 #ifndef GLX_INTEL_swap_event
 #define GLX_INTEL_swap_event
-#define GLX_BUFFER_SWAP_COMPLETE_MASK  0x1000
-#define GLX_EXCHANGE_COMPLETE  0x8024
-#define GLX_BLIT_COMPLETE  0x8025
-#define GLX_FLIP_COMPLETE  0x8026
+#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x1000
+#define GLX_EXCHANGE_COMPLETE_INTEL0x8024
+#define GLX_BLIT_COMPLETE_INTEL0x8025
+#define GLX_FLIP_COMPLETE_INTEL0x8026
 #endif
 
 #ifndef GLX_SGIX_swap_barrier
diff --git a/src/glx/x11/dri2.c b/src/glx/x11/dri2.c
index 2cb5d34..832935a 100644
--- a/src/glx/x11/dri2.c
+++ b/src/glx/x11/dri2.c
@@ -81,12 +81,15 @@ static XEXT_GENERATE_FIND_DISPLAY (DRI2FindDisplay,
dri2Info,
dri2ExtensionName,
&dri2ExtensionHooks,
-   0, NULL)
+   1, NULL)
 
 static Bool
 DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire)
 {
XExtDisplayInfo *info = DRI2FindDisplay(dpy);
+   XExtDisplayInfo *glx_info = __glXFindDisplay(dpy);
+   static int glx_event_base;
+   static Bool found_glx_info = False;
 
XextCheckExtension(dpy, info, dri2ExtensionName, False);
 
@@ -95,21 +98,26 @@ DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire)
{
   GLXBufferSwapComplete *aevent = (GLXBufferSwapComplete *)event;
   xDRI2BufferSwapComplete *awire = (xDRI2BufferSwapComplete *)wire;
-  switch (awire->type) {
+  aevent->serial = _XSetLastRequestRead(dpy, (xGenericReply *) wire);
+  aevent->type =
+ (glx_info->codes->first_event + GLX_BufferSwapComplete) & 0x75;
+  aevent->send_event = (awire->type & 0x80) != 0;
+  aevent->display = dpy;
+  aevent->drawable = awire->drawable;
+  switch (awire->event_type) {
   case DRI2_EXCHANGE_COMPLETE:
-aevent->event_type = GLX_EXCHANGE_COMPLETE;
+aevent->event_type = GLX_EXCHANGE_COMPLETE_INTEL;
 break;
   case DRI2_BLIT_COMPLETE:
-aevent->event_type = GLX_BLIT_COMPLETE;
+aevent->event_type = GLX_BLIT_COMPLETE_INTEL;
 break;
   case DRI2_FLIP_COMPLETE:
-aevent->event_type = GLX_FLIP_COMPLETE;
+aevent->event_type = GLX_FLIP_COMPLETE_INTEL;
 break;
   default:
 /* unknown swap completion type */
 return False;
   }
-  aevent->drawable = awire->drawable;
   aevent->ust = ((CARD64)awire->ust_hi << 32) | awire->ust_lo;
   aevent->msc = ((CARD64)awire->msc_hi << 32) | awire->msc_lo;
   aevent->sbc = ((CARD64)awire->sbc_hi << 32) | awire->sbc_lo;
diff --git a/src/glx/x11/glxclient.h b/src/glx/x11/glxclient.h
index ded4f5a..e0b286b 100644
--- a/src/glx/x11/glxclient.h
+++ b/src/glx/x11/glxclient.h
@@ -41,6 +41,7 @@
 #define NEED_EVENTS
 #include 
 #include 
+#include 
 #define GLX_GLXEXT_PROTOTYPES
 #include 
 #include 
@@ -793,6 +794,10 @@ extern GLboolean __glXGetMscRateOML(Display * dpy, 
GLXDrawable drawable,
 GLboolean
 __driGetMscRateOML(__DRIdrawable * draw,
int32_t * numerator, int32_t * denominator, void *private);
+
+/* So that dri2.c:DRI2WireToEvent() can access
+ * glx_info->codes->first_event */
+XExtDisplayInfo *__glXFindDisplay (Display *dpy);
 #endif
 
 #endif /* !__GLX_client_h__ */
diff 

Mesa (master): egl/xdri: Update with glxclient.h change.

2010-01-25 Thread Chia-I Wu
Module: Mesa
Branch: master
Commit: 0d2d40451d01a07db515452561c71eaacb789872
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d2d40451d01a07db515452561c71eaacb789872

Author: Chia-I Wu 
Date:   Tue Jan 26 10:46:32 2010 +0800

egl/xdri: Update with glxclient.h change.

__glXFindDisplay is no longer static since
7a9329ba99fe1242c07fbf4fd04e7a4dbeba2e72.

---

 src/egl/drivers/xdri/glxinit.c |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/src/egl/drivers/xdri/glxinit.c b/src/egl/drivers/xdri/glxinit.c
index 5c0fbc6..ba61327 100644
--- a/src/egl/drivers/xdri/glxinit.c
+++ b/src/egl/drivers/xdri/glxinit.c
@@ -53,7 +53,6 @@ static /* const */ XExtensionHooks __glXExtensionHooks = {
   NULL,   /* error_string */
 };
 
-static
 XEXT_GENERATE_FIND_DISPLAY(__glXFindDisplay, __glXExtensionInfo,
__glXExtensionName, &__glXExtensionHooks,
__GLX_NUMBER_EVENTS, NULL)

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


Mesa (master): docs: Update EGL documentation.

2010-01-25 Thread Chia-I Wu
Module: Mesa
Branch: master
Commit: a6342afe502fe52190be4d97df58eb3406b70246
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a6342afe502fe52190be4d97df58eb3406b70246

Author: Chia-I Wu 
Date:   Tue Jan 26 10:54:45 2010 +0800

docs: Update EGL documentation.

Add --enable-gallium-swrast to the example.  Document missing
--with-egl-driver-dir and update TODOs.

---

 docs/egl.html |   10 +-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/docs/egl.html b/docs/egl.html
index 0882598..305e5f6 100644
--- a/docs/egl.html
+++ b/docs/egl.html
@@ -32,7 +32,7 @@ cards.
 the Gallium driver for your hardware.  For example
 
 
-  $ ./configure --with-state-trackers=egl,es,vega --enable-gallium-intel
+  $ ./configure --with-state-trackers=egl,es,vega 
--enable-gallium-{swrast,intel}
 
 
 The main library will be enabled by default.  The egl state
@@ -62,6 +62,13 @@ will not be built.
 
 
 
+--with-egl-driver-dir
+
+The directory EGL drivers should be installed to.  If not specified, EGL
+drivers will be installed to ${libdir}/egl.
+
+
+
 --with-egl-displays
 
 List the window system(s) to support.  It is by default x11,
@@ -227,6 +234,7 @@ be found at src/gallium/state_trackers/egl/.
 Pass the conformance tests
 Better automatic driver selection: EGL_DISPLAY loads all
 drivers and might eat too much memory.
+Stop using glxinit.c and sources from 
src/glx/x11/
 
 
 

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


Mesa (master): glx: Build GLX normally.

2010-01-25 Thread Chia-I Wu
Module: Mesa
Branch: master
Commit: 146931769c75978c58ac0088e8ab630fc41074ec
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=146931769c75978c58ac0088e8ab630fc41074ec

Author: Chia-I Wu 
Date:   Thu Jan 21 17:58:28 2010 +0800

glx: Build GLX normally.

GLX was built specially and before Mesa core because libglapi.a could
not be built with IN_DRI_DRIVER defined.  This is no longer the case
since 6e99e6ddbf488f6955e34ef0bc438fdcb4d90f74.

It works fine in my (limited) testing with both direct and indirect
rendering.  I also compare the outputs after preprocessing (gcc -E) with
or without this commit, and they are identical.

---

 configure.ac |2 +-
 src/glx/x11/Makefile |   21 +
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/configure.ac b/configure.ac
index 6f8b76d..10e0bd4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -445,7 +445,7 @@ xlib)
 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
 ;;
 dri)
-CORE_DIRS="glx/x11 $CORE_DIRS"
+SRC_DIRS="$SRC_DIRS glx/x11"
 DRIVER_DIRS="dri"
 WINDOW_SYSTEM="dri"
 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
diff --git a/src/glx/x11/Makefile b/src/glx/x11/Makefile
index 86d84d4..e681be8 100644
--- a/src/glx/x11/Makefile
+++ b/src/glx/x11/Makefile
@@ -1,7 +1,7 @@
 TOP = ../../..
 include $(TOP)/configs/current
 
-EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT -UIN_DRI_DRIVER \
+EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT \
 -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\"
 
 SOURCES = \
@@ -39,13 +39,9 @@ SOURCES = \
  dri2_glx.c \
  dri2.c
 
-include $(TOP)/src/mesa/sources.mak
+GLAPI_LIB = $(TOP)/src/mesa/libglapi.a
 
-MESA_GLAPI_ASM_SOURCES = $(addprefix $(TOP)/src/mesa/, $(GLAPI_ASM_SOURCES))
-MESA_GLAPI_SOURCES = $(addprefix $(TOP)/src/mesa/, $(GLAPI_SOURCES))
-MESA_GLAPI_OBJECTS = $(addprefix $(TOP)/src/mesa/, $(GLAPI_OBJECTS))
-
-OBJECTS = $(SOURCES:.c=.o) $(MESA_GLAPI_OBJECTS)
+OBJECTS = $(SOURCES:.c=.o)
 
 INCLUDES = -I. \
-I$(TOP)/include \
@@ -70,18 +66,19 @@ INCLUDES = -I. \
 default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
 
 # Make libGL
-$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME):  $(OBJECTS) Makefile
+$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) $(GLAPI_LIB) Makefile
$(MKLIB) -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
-major 1 -minor 2 $(MKLIB_OPTIONS) \
-install $(TOP)/$(LIB_DIR) -id 
$(INSTALL_LIB_DIR)/lib$(GL_LIB).1.dylib \
-   $(GL_LIB_DEPS) $(OBJECTS)
+   $(GL_LIB_DEPS) $(OBJECTS) $(GLAPI_LIB)
 
+$(GLAPI_LIB):
+   @$(MAKE) -C $(TOP)/src/mesa libglapi.a
 
-depend: $(SOURCES) $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES) Makefile
+depend: $(SOURCES) Makefile
rm -f depend
touch depend
-   $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES) \
-   $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES) 
+   $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES)
 
 
 # Emacs tags

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


Mesa (master): docs: Mention EGL and OpenGL ES in 7.8 release notes.

2010-01-25 Thread Chia-I Wu
Module: Mesa
Branch: master
Commit: 74aa773f7cbe456ca8f25c8a9a2c911795cc2a63
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=74aa773f7cbe456ca8f25c8a9a2c911795cc2a63

Author: Chia-I Wu 
Date:   Tue Jan 26 11:35:30 2010 +0800

docs: Mention EGL and OpenGL ES in 7.8 release notes.

---

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

diff --git a/docs/relnotes-7.8.html b/docs/relnotes-7.8.html
index 717b962..4fcc491 100644
--- a/docs/relnotes-7.8.html
+++ b/docs/relnotes-7.8.html
@@ -36,6 +36,8 @@ tbd
 
 GL_NV_conditional_render extension (swrast driver only)
 GL_EXT_draw_buffers2 extension (swrast driver only)
+Much improved support for EGL in Mesa
+New state trackers for OpenGL ES 1.1 and 2.0
 
 
 

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


Mesa (master): i965: Fix build after merge of mesa stable branch.

2010-01-25 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: a098fd71d7b7347bb8f1841bad0e7ce24e0e6de9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a098fd71d7b7347bb8f1841bad0e7ce24e0e6de9

Author: Eric Anholt 
Date:   Mon Jan 25 22:27:46 2010 -0800

i965: Fix build after merge of mesa stable branch.

---

 src/mesa/drivers/dri/i965/brw_context.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_context.c 
b/src/mesa/drivers/dri/i965/brw_context.c
index 568db97..65f51be 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -37,6 +37,7 @@
 #include "shader/shader_api.h"
 
 #include "brw_context.h"
+#include "brw_defines.h"
 #include "brw_draw.h"
 #include "brw_state.h"
 #include "intel_span.h"

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


Mesa (master): i965: Remove unnecessary malloc/ free in VS binding table setup.

2010-01-25 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 5e1851b144a97bd577409dd5c6f3f6f45b4ff56f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5e1851b144a97bd577409dd5c6f3f6f45b4ff56f

Author: Eric Anholt 
Date:   Tue Jan 19 15:26:56 2010 -0800

i965: Remove unnecessary malloc/free in VS binding table setup.

---

 src/mesa/drivers/dri/i965/brw_vs_surface_state.c |4 +---
 src/mesa/drivers/dri/intel/intel_batchbuffer.c   |3 ++-
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c 
b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c
index ca93ca7..ead623f 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c
@@ -155,7 +155,7 @@ brw_vs_get_binding_table(struct brw_context *brw)
 
if (bind_bo == NULL) {
   GLuint data_size = BRW_VS_MAX_SURF * sizeof(GLuint);
-  uint32_t *data = malloc(data_size);
+  uint32_t data[BRW_VS_MAX_SURF];
   int i;
 
   for (i = 0; i < BRW_VS_MAX_SURF; i++)
@@ -180,8 +180,6 @@ brw_vs_get_binding_table(struct brw_context *brw)
I915_GEM_DOMAIN_INSTRUCTION, 0);
 }
   }
-
-  free(data);
}
 
return bind_bo;
diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c 
b/src/mesa/drivers/dri/intel/intel_batchbuffer.c
index 3a4b21a..f18fb91 100644
--- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c
@@ -167,7 +167,8 @@ _intel_batchbuffer_flush(struct intel_batchbuffer *batch, 
const char *file,
struct intel_context *intel = batch->intel;
GLuint used = batch->ptr - batch->map;
 
-   if (intel->first_post_swapbuffers_batch == NULL) {
+   if (!intel->using_dri2_swapbuffers &&
+   intel->first_post_swapbuffers_batch == NULL) {
   intel->first_post_swapbuffers_batch = intel->batch->buf;
   drm_intel_bo_reference(intel->first_post_swapbuffers_batch);
}

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


Mesa (master): intel: Don' t do client-side frame throttling with DRI2 SwapBuffers.

2010-01-25 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 7aed23c36288c2b343073d6d06ca0ea167805cd3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7aed23c36288c2b343073d6d06ca0ea167805cd3

Author: Eric Anholt 
Date:   Mon Jan 25 14:53:50 2010 -0800

intel: Don't do client-side frame throttling with DRI2 SwapBuffers.

The server side does the throttling on our behalf now by putting the
client to sleep, so we don't need our previous hacks for limiting the
number of outstanding frames.  Same effect as
7d4e674b212c9dc6408c13913a399bd4a2b9a1e3.

---

 src/mesa/drivers/dri/intel/intel_context.c |3 ++-
 src/mesa/drivers/dri/intel/intel_context.h |1 +
 src/mesa/drivers/dri/intel/intel_screen.c  |4 
 3 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_context.c 
b/src/mesa/drivers/dri/intel/intel_context.c
index cac9b7e..3896bfa 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -521,7 +521,8 @@ intel_glFlush(GLcontext *ctx)
 * and getting our hands on that doesn't seem worth it, so we just us the
 * first batch we emitted after the last swap.
 */
-   if (intel->first_post_swapbuffers_batch != NULL) {
+   if (!intel->using_dri2_swapbuffers &&
+   intel->first_post_swapbuffers_batch != NULL) {
   drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch);
   drm_intel_bo_unreference(intel->first_post_swapbuffers_batch);
   intel->first_post_swapbuffers_batch = NULL;
diff --git a/src/mesa/drivers/dri/intel/intel_context.h 
b/src/mesa/drivers/dri/intel/intel_context.h
index 6ba281c..57c3391 100644
--- a/src/mesa/drivers/dri/intel/intel_context.h
+++ b/src/mesa/drivers/dri/intel/intel_context.h
@@ -186,6 +186,7 @@ struct intel_context
struct intel_batchbuffer *batch;
drm_intel_bo *first_post_swapbuffers_batch;
GLboolean no_batch_wrap;
+   GLboolean using_dri2_swapbuffers;
 
struct
{
diff --git a/src/mesa/drivers/dri/intel/intel_screen.c 
b/src/mesa/drivers/dri/intel/intel_screen.c
index a98600b..b170317 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -126,6 +126,10 @@ intelDRI2Flush(__DRIdrawable *drawable)
 static void
 intelDRI2FlushInvalidate(__DRIdrawable *drawable)
 {
+   struct intel_context *intel = drawable->driContextPriv->driverPrivate;
+
+   intel->using_dri2_swapbuffers = GL_TRUE;
+
intelDRI2Flush(drawable);
drawable->validBuffers = GL_FALSE;
 }

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


Mesa (master): Revert "intel: Use the new DRI2 flush invalidate entrypoint to signal frame done."

2010-01-25 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: c7fc9bfb2207638a479ddaff3ad108ffd9cd294a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c7fc9bfb2207638a479ddaff3ad108ffd9cd294a

Author: Eric Anholt 
Date:   Mon Jan 25 14:48:57 2010 -0800

Revert "intel: Use the new DRI2 flush invalidate entrypoint to signal frame 
done."

This reverts commit 7d4e674b212c9dc6408c13913a399bd4a2b9a1e3.  It broke
throttling in the non-new-DRI2 case.

---

 src/mesa/drivers/dri/intel/intel_context.c |   20 
 src/mesa/drivers/dri/intel/intel_screen.c  |   21 -
 2 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_context.c 
b/src/mesa/drivers/dri/intel/intel_context.c
index 5f2a473..cac9b7e 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -505,7 +505,27 @@ intelFlush(GLcontext * ctx)
 static void
 intel_glFlush(GLcontext *ctx)
 {
+   struct intel_context *intel = intel_context(ctx);
+
intel_flush(ctx, GL_TRUE);
+
+   /* We're using glFlush as an indicator that a frame is done, which is
+* what DRI2 does before calling SwapBuffers (and means we should catch
+* people doing front-buffer rendering, as well)..
+*
+* Wait for the swapbuffers before the one we just emitted, so we don't
+* get too many swaps outstanding for apps that are GPU-heavy but not
+* CPU-heavy.
+*
+* Unfortunately, we don't have a handle to the batch containing the swap,
+* and getting our hands on that doesn't seem worth it, so we just us the
+* first batch we emitted after the last swap.
+*/
+   if (intel->first_post_swapbuffers_batch != NULL) {
+  drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch);
+  drm_intel_bo_unreference(intel->first_post_swapbuffers_batch);
+  intel->first_post_swapbuffers_batch = NULL;
+   }
 }
 
 void
diff --git a/src/mesa/drivers/dri/intel/intel_screen.c 
b/src/mesa/drivers/dri/intel/intel_screen.c
index fe50416..a98600b 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -126,29 +126,8 @@ intelDRI2Flush(__DRIdrawable *drawable)
 static void
 intelDRI2FlushInvalidate(__DRIdrawable *drawable)
 {
-   struct intel_context *intel = drawable->driContextPriv->driverPrivate;
-
intelDRI2Flush(drawable);
drawable->validBuffers = GL_FALSE;
-
-   /* We're using FlushInvalidate as an indicator that a frame is
-* done.  It's only called immediately after SwapBuffers, so it
-* won't affect front-buffer rendering or applications explicitly
-* managing swap regions using MESA_copy_buffer.
-*
-* Wait for the swapbuffers before the one we just emitted, so we don't
-* get too many swaps outstanding for apps that are GPU-heavy but not
-* CPU-heavy.
-*
-* Unfortunately, we don't have a handle to the batch containing the swap,
-* and getting our hands on that doesn't seem worth it, so we just use the
-* first batch we emitted after the last swap.
-*/
-   if (intel->first_post_swapbuffers_batch != NULL) {
-  drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch);
-  drm_intel_bo_unreference(intel->first_post_swapbuffers_batch);
-  intel->first_post_swapbuffers_batch = NULL;
-   }
 }
 
 static const struct __DRI2flushExtensionRec intelFlushExtension = {

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