Mesa (master): docs: update FAQ

2012-10-09 Thread Andreas Boll
Module: Mesa
Branch: master
Commit: b534c39ecebde80c45d1657f92fce82f3b97bdec
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b534c39ecebde80c45d1657f92fce82f3b97bdec

Author: Andreas Boll andreas.boll@gmail.com
Date:   Fri Oct  5 23:14:10 2012 +0200

docs: update FAQ

Reported-by: Fabio Pedretti fabio@libero.it

v2: (Chad Versace chad.vers...@linux.intel.com)
  - Rewrite FAQ - proper place for installing mesa.

v3: fix some typos

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 docs/faq.html |   43 ---
 1 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/docs/faq.html b/docs/faq.html
index dd4e7de..97c59d3 100644
--- a/docs/faq.html
+++ b/docs/faq.html
@@ -16,7 +16,7 @@
 
 center
 h1Mesa Frequently Asked Questions/h1
-Last updated: 20 September 2012
+Last updated: 9 October 2012
 /center
 
 br
@@ -236,15 +236,22 @@ Basically you'll want the following:
 Mesa version number.
 /li/ul
 p
-After installing X.org and the DRI drivers, some of these files
-may be symlinks into the /usr/X11R6/ tree.
+When configuring Mesa, there are three autoconf options that affect the install
+location that you should take care with: code--prefix/code,
+code--libdir/code, and code--with-dri-driverdir/code. To install Mesa
+into the system location where it will be available for all programs to use, 
set
+code--prefix=/usr/code. Set code--libdir/code to where your Linux
+distribution installs system libraries, usually either code/usr/lib/code or
+code/usr/lib64/code. Set code--with-dri-driverdir/code to the directory
+where your Linux distribution installs DRI drivers. To find your system's DRI
+driver directory, try executing codefind /usr -type d -name dri/code. For
+example, if the codefind/code command listed code/usr/lib64/dri/code,
+then set code--with-dri-driverdir=/usr/lib64/dri/code.
 /p
 p
-The old-style Makefile system doesn't install the Mesa libraries; it's
-up to you to copy them (and the headers) to the right place.
-/p
-p
-The GLUT header and library should go in the same directories.
+After determining the correct values for the install location, configure Mesa
+with code./configure --prefix=/usr --libdir=xxx 
--with-dri-driverdir=xxx/code
+and then install with codesudo make install/code.
 /p
 br
 br
@@ -254,22 +261,20 @@ The GLUT header and library should go in the same 
directories.
 
 h23.1 Rendering is slow / why isn't my graphics hardware being used?/h2
 p
-Stand-alone Mesa (downloaded as MesaLib-x.y.z.tar.gz) doesn't have any
-support for hardware acceleration (with the exception of the 3DFX Voodoo
-driver).
-/p
-p
-What you really want is a DRI or NVIDIA (or another vendor's OpenGL) driver
-for your particular hardware.
+If Mesa can't use its hardware accelerated drivers it falls back on one of its 
software renderers.
+(eg. classic swrast, softpipe or llvmpipe)
 /p
 p
 You can run the codeglxinfo/code program to learn about your OpenGL
 library.
-Look for the GL_VENDOR and GL_RENDERER values.
-That will identify who's OpenGL library you're using and what sort of
+Look for the codeOpenGL vendor/code and codeOpenGL renderer/code 
values.
+That will identify who's OpenGL library with which driver you're using and 
what sort of
 hardware it has detected.
 /p
 p
+If you're using a hardware accelerated driver you want codedirect rendering: 
Yes/code.
+/p
+p
 If your DRI-based driver isn't working, go to the
 a href=http://dri.freedesktop.org/;DRI website/a for trouble-shooting 
information.
 /p
@@ -365,8 +370,8 @@ target hardware/operating system.
 p
 The best way to get started is to use an existing driver as your starting
 point.
-For a software driver, the X11 and OSMesa drivers are good examples.
-For a hardware driver, the Radeon and R200 DRI drivers are good examples.
+For a classic hardware driver, the i965 driver is a good example.
+For a Gallium3D hardware driver, the r300g, r600g and the i915g are good 
examples.
 /p
 pThe DRI website has more information about writing hardware drivers.
 The process isn't well document because the Mesa driver interface changes

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


Mesa (master): teximage: Remove unnecessary compressed format check

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 4f310984a99e13877f17aa19c2820e56738ecfd6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4f310984a99e13877f17aa19c2820e56738ecfd6

Author: Daniel Stone dan...@fooishbar.org
Date:   Tue Oct  9 14:41:38 2012 +1100

teximage: Remove unnecessary compressed format check

Ever since df4a88ac, the check for compressed formats has been
unnecessary.  And ever since cb72ec5f, the build has been broken with
FEATURE_ES.  Remove it, as it does nothing.

Signed-off-by: Daniel Stone dan...@fooishbar.org
Signed-off-by: Marek Olšák mar...@gmail.com

---

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

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index d7156e6..6c8bb85 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1977,10 +1977,6 @@ compressed_texture_error_check(struct gl_context *ctx, 
GLint dimensions,
case GL_PALETTE8_R5_G6_B5_OES:
case GL_PALETTE8_RGBA4_OES:
case GL_PALETTE8_RGB5_A1_OES:
-  _mesa_cpal_compressed_format_type(internalFormat, choose_format,
-   choose_type);
-  proxy_format = choose_format;
-
   /* check level (note that level should be zero or less!) */
   if (level  0 || level  -maxLevels) {
 reason = level;

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


Mesa (master): i915g: fix unused variable and type conversion warnings

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: cf9081b37cbfaa4f1cdcb1b53dd44bb2a688bfb2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=cf9081b37cbfaa4f1cdcb1b53dd44bb2a688bfb2

Author: Marek Olšák mar...@gmail.com
Date:   Tue Oct  9 14:33:16 2012 +0200

i915g: fix unused variable and type conversion warnings

---

 src/gallium/drivers/i915/i915_state.c   |1 -
 src/gallium/drivers/i915/i915_surface.c |2 +-
 2 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_state.c 
b/src/gallium/drivers/i915/i915_state.c
index a00e2fb..d96ac7a 100644
--- a/src/gallium/drivers/i915/i915_state.c
+++ b/src/gallium/drivers/i915/i915_state.c
@@ -931,7 +931,6 @@ static void i915_set_vertex_buffers(struct pipe_context 
*pipe,
 {
struct i915_context *i915 = i915_context(pipe);
struct draw_context *draw = i915-draw;
-   int i;
 
util_copy_vertex_buffers(i915-vertex_buffers,
 i915-nr_vertex_buffers,
diff --git a/src/gallium/drivers/i915/i915_surface.c 
b/src/gallium/drivers/i915/i915_surface.c
index 6f5a654..331d6e2 100644
--- a/src/gallium/drivers/i915/i915_surface.c
+++ b/src/gallium/drivers/i915/i915_surface.c
@@ -62,7 +62,7 @@ i915_util_blitter_save_states(struct i915_context *i915)
 
util_blitter_save_fragment_sampler_states(i915-blitter,
  i915-num_samplers,
- i915-sampler);
+ (void**)i915-sampler);
util_blitter_save_fragment_sampler_views(i915-blitter,
 i915-num_fragment_sampler_views,
 i915-fragment_sampler_views);

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


Mesa (master): nv30: fix type conversion warning

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 51872e8bb3a83a6eaa7f3bdc621372fa88efaaf2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=51872e8bb3a83a6eaa7f3bdc621372fa88efaaf2

Author: Marek Olšák mar...@gmail.com
Date:   Tue Oct  9 14:34:27 2012 +0200

nv30: fix type conversion warning

---

 src/gallium/drivers/nv30/nv30_state.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/nv30/nv30_state.c 
b/src/gallium/drivers/nv30/nv30_state.c
index 25755ba..046ba72 100644
--- a/src/gallium/drivers/nv30/nv30_state.c
+++ b/src/gallium/drivers/nv30/nv30_state.c
@@ -324,7 +324,7 @@ nv30_set_constant_buffer(struct pipe_context *pipe, uint 
shader, uint index,
unsigned size;
 
if (cb  cb-user_buffer) {
-  buf = nouveau_user_buffer_create(pipe-screen, cb-user_buffer,
+  buf = nouveau_user_buffer_create(pipe-screen, (void*)cb-user_buffer,
cb-buffer_size,
PIPE_BIND_CONSTANT_BUFFER);
}

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


Mesa (master): nv50: fix printf warning

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 30ebc8650caa8f67deebaae397a04dfdfc50d1df
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=30ebc8650caa8f67deebaae397a04dfdfc50d1df

Author: Marek Olšák mar...@gmail.com
Date:   Tue Oct  9 14:38:43 2012 +0200

nv50: fix printf warning

---

 src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp 
b/src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp
index daa0ec6..4c522ee 100644
--- a/src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp
+++ b/src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp
@@ -22,6 +22,7 @@
 
 #include nv50_ir.h
 #include nv50_ir_target.h
+#include inttypes.h
 
 namespace nv50_ir {
 
@@ -391,7 +392,7 @@ int ImmediateValue::print(char *buf, size_t size, DataType 
ty) const
case TYPE_U64:
case TYPE_S64:
default:
-  PRINT(0x%016lx, reg.data.u64);
+  PRINT(0x%016PRIx64, reg.data.u64);
   break;
}
return pos;

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


Mesa (master): mesa: remove unused _mesa_cpal_compressed_format_type() function

2012-10-09 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 541158fbb972252004de328391e9a1694572cddb
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=541158fbb972252004de328391e9a1694572cddb

Author: Brian Paul bri...@vmware.com
Date:   Mon Oct  8 17:45:57 2012 -0600

mesa: remove unused _mesa_cpal_compressed_format_type() function

Reviewed-by: Ian Romanick ian.d.roman...@intel.com

---

 src/mesa/main/texcompress_cpal.c |   15 ---
 src/mesa/main/texcompress_cpal.h |3 ---
 2 files changed, 0 insertions(+), 18 deletions(-)

diff --git a/src/mesa/main/texcompress_cpal.c b/src/mesa/main/texcompress_cpal.c
index 4aa1f61..75389a4 100644
--- a/src/mesa/main/texcompress_cpal.c
+++ b/src/mesa/main/texcompress_cpal.c
@@ -140,21 +140,6 @@ _mesa_cpal_compressed_size(int level, GLenum 
internalFormat,
return expect_size;
 }
 
-void
-_mesa_cpal_compressed_format_type(GLenum internalFormat, GLenum *format,
- GLenum *type)
-{
-   const struct cpal_format_info *info;
-
-   if (internalFormat  GL_PALETTE4_RGB8_OES
-   || internalFormat  GL_PALETTE8_RGB5_A1_OES) {
-  return;
-   }
-
-   info = formats[internalFormat - GL_PALETTE4_RGB8_OES];
-   *format = info-format;
-   *type = info-type;
-}
 
 /**
  * Convert a call to glCompressedTexImage2D() where internalFormat is a
diff --git a/src/mesa/main/texcompress_cpal.h b/src/mesa/main/texcompress_cpal.h
index 7507d5c..7d28fd8 100644
--- a/src/mesa/main/texcompress_cpal.h
+++ b/src/mesa/main/texcompress_cpal.h
@@ -38,8 +38,5 @@ extern unsigned
 _mesa_cpal_compressed_size(int level, GLenum internalFormat,
   unsigned width, unsigned height);
 
-extern void
-_mesa_cpal_compressed_format_type(GLenum internalFormat, GLenum *format,
- GLenum *type);
 
 #endif /* TEXCOMPRESS_CPAL_H */

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


Mesa (9.0): mesa: don't call TexImage driver hooks for zero-sized images

2012-10-09 Thread Brian Paul
Module: Mesa
Branch: 9.0
Commit: 32faf7ab0de8b88bb15a2cb262a73c411dce9d0d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=32faf7ab0de8b88bb15a2cb262a73c411dce9d0d

Author: Brian Paul bri...@vmware.com
Date:   Fri Oct  5 16:47:40 2012 -0600

mesa: don't call TexImage driver hooks for zero-sized images

This simply avoids some failed assertions but there's no reason to
call the driver hooks for storing a tex image if its size is zero.

Note: This is a candidate for the stable branches.
(cherry picked from commit 91d84096497ff538f55591f7e6bb0b563726db8d)

---

 src/mesa/main/teximage.c |   16 +---
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 21646cc..8004876 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -3034,13 +3034,15 @@ teximage(struct gl_context *ctx, GLboolean compressed, 
GLuint dims,
   border, internalFormat, texFormat);
 
/* Give the texture to the driver.  pixels may be null. */
-   if (compressed) {
-  ctx-Driver.CompressedTexImage(ctx, dims, texImage,
- imageSize, pixels);
-   }
-   else {
-  ctx-Driver.TexImage(ctx, dims, texImage, format,
-   type, pixels, unpack);
+   if (width  0  height  0  depth  0) {
+  if (compressed) {
+ ctx-Driver.CompressedTexImage(ctx, dims, texImage,
+imageSize, pixels);
+  }
+  else {
+ ctx-Driver.TexImage(ctx, dims, texImage, format,
+  type, pixels, unpack);
+  }
}
 
check_gen_mipmap(ctx, target, texObj, level);

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


Mesa (9.0): mesa: fix error check for zero-sized compressed subtexture

2012-10-09 Thread Brian Paul
Module: Mesa
Branch: 9.0
Commit: e75051d1967350ceff0209dde24ae42696b13b5c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e75051d1967350ceff0209dde24ae42696b13b5c

Author: Brian Paul bri...@vmware.com
Date:   Fri Oct  5 16:59:27 2012 -0600

mesa: fix error check for zero-sized compressed subtexture

For glCompressedTexSubImage, width or height = 0 is legal.
Fixes a failure in piglit's s3tc-errors test.

This is for the 9.0 and 8.0 branches.  Already fixed on master.

---

 src/mesa/main/teximage.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 8004876..38fa9fa 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -3598,10 +3598,10 @@ compressed_subtexture_error_check(struct gl_context 
*ctx, GLint dimensions,
if (!_mesa_is_compressed_format(ctx, format))
   return GL_INVALID_ENUM;
 
-   if (width  1 || width  maxTextureSize)
+   if (width  0 || width  maxTextureSize)
   return GL_INVALID_VALUE;
 
-   if ((height  1 || height  maxTextureSize)
+   if ((height  0 || height  maxTextureSize)
 dimensions  1)
   return GL_INVALID_VALUE;
 

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


Mesa (9.0): docs: add news item for 9.0 release

2012-10-09 Thread Andreas Boll
Module: Mesa
Branch: 9.0
Commit: 8e73273cb95626d9def012eeb508160e4022ff60
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e73273cb95626d9def012eeb508160e4022ff60

Author: Andreas Boll andreas.boll@gmail.com
Date:   Tue Oct  9 17:07:55 2012 +0200

docs: add news item for 9.0 release

Reviewed-by: Brian Paul bri...@vmware.com

---

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

diff --git a/docs/news.html b/docs/news.html
index 541bde6..26e648b 100644
--- a/docs/news.html
+++ b/docs/news.html
@@ -9,6 +9,16 @@
 
 h1News/h1
 
+h2October 8, 2012/h2
+
+p
+a href=relnotes-9.0.htmlMesa 9.0/a is released.
+This is the first version of Mesa to support OpenGL 3.1 and GLSL 1.40
+(with the i965 driver).
+See the release notes for more information about the release.
+/p
+
+
 h2July 10, 2012/h2
 
 p

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


Mesa (master): docs: add news item for 9.0 release

2012-10-09 Thread Andreas Boll
Module: Mesa
Branch: master
Commit: 3699150d3bd3bf72806dfccab8f969603278c4d6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3699150d3bd3bf72806dfccab8f969603278c4d6

Author: Andreas Boll andreas.boll@gmail.com
Date:   Tue Oct  9 17:11:06 2012 +0200

docs: add news item for 9.0 release

Reviewed-by: Brian Paul bri...@vmware.com

ported manually from
8e73273cb95626d9def012eeb508160e4022ff60

---

 docs/index.html |8 
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/docs/index.html b/docs/index.html
index 7ebc1ea..f690983 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -16,6 +16,14 @@
 
 h1News/h1
 
+p
+a href=relnotes-9.0.htmlMesa 9.0/a is released.
+This is the first version of Mesa to support OpenGL 3.1 and GLSL 1.40
+(with the i965 driver).
+See the release notes for more information about the release.
+/p
+
+
 h2July 10, 2012/h2
 
 p

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


Mesa (master): docs: update release notes for 9.0

2012-10-09 Thread Andreas Boll
Module: Mesa
Branch: master
Commit: c833d98ff9db0c9645ad612d4d2fed9560b5b70a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c833d98ff9db0c9645ad612d4d2fed9560b5b70a

Author: Andreas Boll andreas.boll@gmail.com
Date:   Tue Oct  9 17:36:41 2012 +0200

docs: update release notes for 9.0

---

 docs/relnotes-9.0.html |6 --
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/docs/relnotes-9.0.html b/docs/relnotes-9.0.html
index 29371b5..16b1417 100644
--- a/docs/relnotes-9.0.html
+++ b/docs/relnotes-9.0.html
@@ -14,7 +14,7 @@
 iframe src=contents.html/iframe
 div class=content
 
-h1Mesa 9.0 Release Notes / date TBD/h1
+h1Mesa 9.0 Release Notes / October 8, 2012/h1
 
 p
 Mesa 9.0 is a new development release.
@@ -33,7 +33,9 @@ because GL_ARB_compatibility is not supported.
 
 h2MD5 checksums/h2
 pre
-tbd
+be4cd34c6599a7cb9d254b05c48bdb1f  MesaLib-9.0.tar.gz
+60e557ce407be3732711da484ab3db6c  MesaLib-9.0.tar.bz2
+16b128544cd3f7e237927bb9f8aab7ce  MesaLib-9.0.zip
 /pre
 
 

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


Mesa (master): docs: add missing release date

2012-10-09 Thread Andreas Boll
Module: Mesa
Branch: master
Commit: 840d8484c049f751832a8a7132f000b1350d7459
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=840d8484c049f751832a8a7132f000b1350d7459

Author: Andreas Boll andreas.boll@gmail.com
Date:   Tue Oct  9 17:50:27 2012 +0200

docs: add missing release date

---

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

diff --git a/docs/index.html b/docs/index.html
index f690983..ac4ff8d 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -16,6 +16,8 @@
 
 h1News/h1
 
+h2October 8, 2012/h2
+
 p
 a href=relnotes-9.0.htmlMesa 9.0/a is released.
 This is the first version of Mesa to support OpenGL 3.1 and GLSL 1.40

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


Mesa (master): i965: Delete some dead code from brw_eu_emit.c.

2012-10-09 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: b6346749a839325e938fbb225af06006bc711ac5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b6346749a839325e938fbb225af06006bc711ac5

Author: Kenneth Graunke kenn...@whitecape.org
Date:   Mon Oct  8 09:51:08 2012 -0700

i965: Delete some dead code from brw_eu_emit.c.

Presumably some of this was used by the old fragment shader backend.

---

 src/mesa/drivers/dri/i965/brw_eu.h  |   12 
 src/mesa/drivers/dri/i965/brw_eu_emit.c |  108 ---
 2 files changed, 0 insertions(+), 120 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_eu.h 
b/src/mesa/drivers/dri/i965/brw_eu.h
index c9e7590..c35c860 100644
--- a/src/mesa/drivers/dri/i965/brw_eu.h
+++ b/src/mesa/drivers/dri/i965/brw_eu.h
@@ -974,13 +974,6 @@ void brw_SAMPLE(struct brw_compile *p,
GLuint simd_mode,
GLuint return_format);
 
-void brw_math_16( struct brw_compile *p,
- struct brw_reg dest,
- GLuint function,
- GLuint msg_reg_nr,
- struct brw_reg src,
- GLuint precision );
-
 void brw_math( struct brw_compile *p,
   struct brw_reg dest,
   GLuint function,
@@ -1012,11 +1005,6 @@ void brw_oword_block_write_scratch(struct brw_compile *p,
   int num_regs,
   GLuint offset);
 
-void brw_dword_scattered_read(struct brw_compile *p,
- struct brw_reg dest,
- struct brw_reg mrf,
- uint32_t bind_table_index);
-
 void brw_dp_READ_4_vs( struct brw_compile *p,
struct brw_reg dest,
GLuint location,
diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c 
b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index c36742a..64dacde 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -1771,74 +1771,6 @@ void brw_math2(struct brw_compile *p,
brw_set_src1(p, insn, src1);
 }
 
-/**
- * Extended math function, float[16].
- * Use 2 send instructions.
- */
-void brw_math_16( struct brw_compile *p,
- struct brw_reg dest,
- GLuint function,
- GLuint msg_reg_nr,
- struct brw_reg src,
- GLuint precision )
-{
-   struct intel_context *intel = p-brw-intel;
-   struct brw_instruction *insn;
-
-   if (intel-gen = 6) {
-  insn = next_insn(p, BRW_OPCODE_MATH);
-
-  /* Math is the same ISA format as other opcodes, except that CondModifier
-   * becomes FC[3:0] and ThreadCtrl becomes FC[5:4].
-   */
-  insn-header.destreg__conditionalmod = function;
-
-  /* Source modifiers are ignored for extended math instructions. */
-  assert(!src.negate);
-  assert(!src.abs);
-
-  brw_set_dest(p, insn, dest);
-  brw_set_src0(p, insn, src);
-  brw_set_src1(p, insn, brw_null_reg());
-  return;
-   }
-
-   /* First instruction:
-*/
-   brw_push_insn_state(p);
-   brw_set_predicate_control_flag_value(p, 0xff);
-   brw_set_compression_control(p, BRW_COMPRESSION_NONE);
-
-   insn = next_insn(p, BRW_OPCODE_SEND);
-   insn-header.destreg__conditionalmod = msg_reg_nr;
-
-   brw_set_dest(p, insn, dest);
-   brw_set_src0(p, insn, src);
-   brw_set_math_message(p,
-   insn, 
-   function,
-   BRW_MATH_INTEGER_UNSIGNED,
-   precision,
-   BRW_MATH_DATA_VECTOR);
-
-   /* Second instruction:
-*/
-   insn = next_insn(p, BRW_OPCODE_SEND);
-   insn-header.compression_control = BRW_COMPRESSION_2NDHALF;
-   insn-header.destreg__conditionalmod = msg_reg_nr+1;
-
-   brw_set_dest(p, insn, offset(dest,1));
-   brw_set_src0(p, insn, src);
-   brw_set_math_message(p, 
-   insn, 
-   function,
-   BRW_MATH_INTEGER_UNSIGNED,
-   precision,
-   BRW_MATH_DATA_VECTOR);
-
-   brw_pop_insn_state(p);
-}
-
 
 /**
  * Write a block of OWORDs (half a GRF each) from the scratch buffer,
@@ -2082,46 +2014,6 @@ void brw_oword_block_read(struct brw_compile *p,
brw_pop_insn_state(p);
 }
 
-/**
- * Read a set of dwords from the data port Data Cache (const buffer).
- *
- * Location (in buffer) appears as UD offsets in the register after
- * the provided mrf header reg.
- */
-void brw_dword_scattered_read(struct brw_compile *p,
- struct brw_reg dest,
- struct brw_reg mrf,
- uint32_t bind_table_index)
-{
-   mrf = retype(mrf, BRW_REGISTER_TYPE_UD);
-
-   brw_push_insn_state(p);
-   brw_set_predicate_control(p, BRW_PREDICATE_NONE);
-   brw_set_compression_control(p, BRW_COMPRESSION_NONE);
-   brw_set_mask_control(p, BRW_MASK_DISABLE);
-   brw_MOV(p, mrf, retype(brw_vec8_grf(0, 0), 

Mesa (master): intel: Add missing #include time.h

2012-10-09 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: 7cb8764ca39cb7f325d6da10a8b11bf24adf2ae0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7cb8764ca39cb7f325d6da10a8b11bf24adf2ae0

Author: Quentin Glidic sardem...@sardemff7.net
Date:   Tue Oct  9 15:15:47 2012 +0200

intel: Add missing #include time.h

Commit 006c1a3c652803e2ff8d5f7ea55c9cb5d8353279 introduced a call to
clock_gettime, but failed to include time.h, breaking the build in
some cases.

Reviewed-by: Kenneth Graunke kenn...@whitecape.org

---

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

diff --git a/src/mesa/drivers/dri/intel/intel_screen.c 
b/src/mesa/drivers/dri/intel/intel_screen.c
index d6e6408..b4992e1 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -26,6 +26,7 @@
  **/
 
 #include errno.h
+#include time.h
 #include main/glheader.h
 #include main/context.h
 #include main/framebuffer.h

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


Mesa (master): mesa/tests: Remove driverCtx parameter from call to _mesa_initialize_context

2012-10-09 Thread Ian Romanick
Module: Mesa
Branch: master
Commit: b25fbceb86ed26b249a884a0041a1ebcd4e320c3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b25fbceb86ed26b249a884a0041a1ebcd4e320c3

Author: Ian Romanick ian.d.roman...@intel.com
Date:   Mon Oct  8 17:50:38 2012 -0700

mesa/tests: Remove driverCtx parameter from call to _mesa_initialize_context

Fixes 'make check' breakage since 733dba2.

Signed-off-by: Ian Romanick ian.d.roman...@intel.com

---

 src/mesa/main/tests/dispatch_sanity.cpp |3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/tests/dispatch_sanity.cpp 
b/src/mesa/main/tests/dispatch_sanity.cpp
index b5d7128..a8839a5 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -130,8 +130,7 @@ TEST_F(DispatchSanity_test, GLES2)
 API_OPENGLES2, //api,
 visual,
 NULL, //share_list,
-driver_functions,
-(void *) NULL);
+driver_functions);
 
_swrast_CreateContext(ctx);
_vbo_CreateContext(ctx);

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


Mesa (master): r600g: Fix build with --enable-opencl

2012-10-09 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 45288cd2b6dc37c80cc18b777e58d11e65f61d7c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=45288cd2b6dc37c80cc18b777e58d11e65f61d7c

Author: Tom Stellard thomas.stell...@amd.com
Date:   Tue Oct  9 19:54:12 2012 +

r600g: Fix build with --enable-opencl

---

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

diff --git a/src/gallium/drivers/r600/evergreen_compute.c 
b/src/gallium/drivers/r600/evergreen_compute.c
index fe9e2f9..156e89a 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -480,10 +480,12 @@ static void evergreen_launch_grid(
 {
struct r600_context *ctx = (struct r600_context *)ctx_;
 
+#ifdef HAVE_OPENCL 
COMPUTE_DBG(*** evergreen_launch_grid: pc = %u\n, pc);
 
-#ifdef HAVE_OPENCL 
+   struct r600_pipe_compute *shader = ctx-cs_shader_state.shader;
if (!shader-kernels[pc].code_bo) {
+   void *p;
struct r600_kernel *kernel = shader-kernels[pc];
r600_compute_shader_create(ctx_, kernel-llvm_module, 
kernel-bc);
kernel-code_bo = r600_compute_buffer_alloc_vram(ctx-screen,

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


Mesa (master): nv50: fix build after nv50: fix printf warning

2012-10-09 Thread Marcin Ślusarz
Module: Mesa
Branch: master
Commit: 63a15117a5eb495924bbcb70c067b6e11ab04476
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=63a15117a5eb495924bbcb70c067b6e11ab04476

Author: Marcin Slusarz marcin.slus...@gmail.com
Date:   Tue Oct  9 22:36:35 2012 +0200

nv50: fix build after nv50: fix printf warning

When compiled with C++ compiler, inttypes.h defines PRI* macros only when
__STDC_FORMAT_MACROS is defined.

---

 src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp 
b/src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp
index 4c522ee..ded4f61 100644
--- a/src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp
+++ b/src/gallium/drivers/nv50/codegen/nv50_ir_print.cpp
@@ -22,6 +22,8 @@
 
 #include nv50_ir.h
 #include nv50_ir_target.h
+
+#define __STDC_FORMAT_MACROS
 #include inttypes.h
 
 namespace nv50_ir {

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


Mesa (master): nouveau: use pre-calculated stride for resource_get_handle

2012-10-09 Thread Marcin Ślusarz
Module: Mesa
Branch: master
Commit: 93eba269351c6e256db3a4cc7c7018f5a3fae5a1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=93eba269351c6e256db3a4cc7c7018f5a3fae5a1

Author: Marcin Slusarz marcin.slus...@gmail.com
Date:   Tue Oct  2 01:52:23 2012 +0200

nouveau: use pre-calculated stride for resource_get_handle

Fixes FDO#55294.

NOTE: This is a candidate for the 9.0 branch.

---

 src/gallium/drivers/nv30/nv30_miptree.c |3 +--
 src/gallium/drivers/nv50/nv50_miptree.c |3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/nv30/nv30_miptree.c 
b/src/gallium/drivers/nv30/nv30_miptree.c
index 5a9a63b..9700fa8 100644
--- a/src/gallium/drivers/nv30/nv30_miptree.c
+++ b/src/gallium/drivers/nv30/nv30_miptree.c
@@ -56,8 +56,7 @@ nv30_miptree_get_handle(struct pipe_screen *pscreen,
if (!mt || !mt-base.bo)
   return FALSE;
 
-   stride = util_format_get_stride(mt-base.base.format,
-   mt-base.base.width0);
+   stride = mt-level[0].pitch;
 
return nouveau_screen_bo_get_handle(pscreen, mt-base.bo, stride, handle);
 }
diff --git a/src/gallium/drivers/nv50/nv50_miptree.c 
b/src/gallium/drivers/nv50/nv50_miptree.c
index 7b8dfb8..70e8c77 100644
--- a/src/gallium/drivers/nv50/nv50_miptree.c
+++ b/src/gallium/drivers/nv50/nv50_miptree.c
@@ -133,8 +133,7 @@ nv50_miptree_get_handle(struct pipe_screen *pscreen,
if (!mt || !mt-base.bo)
   return FALSE;
 
-   stride = util_format_get_stride(mt-base.base.format,
-   mt-base.base.width0);
+   stride = mt-level[0].pitch;
 
return nouveau_screen_bo_get_handle(pscreen,
mt-base.bo,

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


Mesa (master): Remove VAAPI support.

2012-10-09 Thread Matt Turner
Module: Mesa
Branch: master
Commit: 900cc7cf80d8ee0e454935904861cf0955c33072
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=900cc7cf80d8ee0e454935904861cf0955c33072

Author: Matt Turner matts...@gmail.com
Date:   Fri Sep  7 11:12:11 2012 -0700

Remove VAAPI support.

Not working and unmaintained.

Reviewed-by: Christian König christian.koe...@amd.com

---

 configure.ac  |   42 +--
 src/gallium/state_trackers/va/Makefile|   26 
 src/gallium/state_trackers/va/ftab.c  |  136 -
 src/gallium/state_trackers/va/htab.c  |   95 ---
 src/gallium/state_trackers/va/va_buffer.c |   88 -
 src/gallium/state_trackers/va/va_config.c |  121 --
 src/gallium/state_trackers/va/va_context.c|  105 
 src/gallium/state_trackers/va/va_display.c|   63 --
 src/gallium/state_trackers/va/va_image.c  |  151 ---
 src/gallium/state_trackers/va/va_picture.c|   60 -
 src/gallium/state_trackers/va/va_private.h|  162 -
 src/gallium/state_trackers/va/va_subpicture.c |  143 --
 src/gallium/state_trackers/va/va_surface.c|  142 --
 src/gallium/targets/Makefile.va   |   73 ---
 src/gallium/targets/va-r300/Makefile  |   26 
 src/gallium/targets/va-r300/target.c  |   24 
 src/gallium/targets/va-r600/Makefile  |   26 
 src/gallium/targets/va-r600/target.c  |   24 
 src/gallium/targets/va-softpipe/Makefile  |   21 ---
 19 files changed, 4 insertions(+), 1524 deletions(-)

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


Mesa (master): r600g: frontcolor tracks its associated backcolor

2012-10-09 Thread Vincent Lejeune
Module: Mesa
Branch: master
Commit: 80663cb1859c3398804d720022eebcf9a0df1716
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=80663cb1859c3398804d720022eebcf9a0df1716

Author: Vincent Lejeune v...@ovi.com
Date:   Sun Sep 23 16:52:30 2012 +0200

r600g: frontcolor tracks its associated backcolor

Reviewed-by: Tom Stellard thomas.stell...@amd.com

---

 src/gallium/drivers/r600/r600_shader.c |   59 ++-
 src/gallium/drivers/r600/r600_shader.h |1 +
 2 files changed, 35 insertions(+), 25 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index bf4877a..0c585de 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1132,36 +1132,14 @@ static int process_twoside_color_inputs(struct 
r600_shader_ctx *ctx)
 {
int i, r, count = ctx-shader-ninput;
 
-   /* additional inputs will be allocated right after the existing inputs,
-* we won't need them after the color selection, so we don't need to
-* reserve these gprs for the rest of the shader code and to adjust
-* output offsets etc. */
-   int gpr = ctx-file_offset[TGSI_FILE_INPUT] +
-   ctx-info.file_max[TGSI_FILE_INPUT] + 1;
-
-   if (ctx-face_gpr == -1) {
-   i = ctx-shader-ninput++;
-   ctx-shader-input[i].name = TGSI_SEMANTIC_FACE;
-   ctx-shader-input[i].spi_sid = 0;
-   ctx-shader-input[i].gpr = gpr++;
-   ctx-face_gpr = ctx-shader-input[i].gpr;
-   }
-
for (i = 0; i  count; i++) {
if (ctx-shader-input[i].name == TGSI_SEMANTIC_COLOR) {
-   int ni = ctx-shader-ninput++;
-   memcpy(ctx-shader-input[ni],ctx-shader-input[i], 
sizeof(struct r600_shader_io));
-   ctx-shader-input[ni].name = TGSI_SEMANTIC_BCOLOR;
-   ctx-shader-input[ni].spi_sid = 
r600_spi_sid(ctx-shader-input[ni]);
-   ctx-shader-input[ni].gpr = gpr++;
-
+   unsigned back_facing_reg = 
ctx-shader-input[i].potential_back_facing_reg;
if (ctx-bc-chip_class = EVERGREEN) {
-   r = evergreen_interp_input(ctx, ni);
-   if (r)
+   if ((r = evergreen_interp_input(ctx, 
back_facing_reg)))
return r;
}
-
-   r = select_twoside_color(ctx, i, ni);
+   r = select_twoside_color(ctx, i, back_facing_reg);
if (r)
return r;
}
@@ -1323,6 +1301,37 @@ static int r600_shader_from_tgsi(struct r600_screen 
*rscreen,
goto out_err;
}
}
+   
+   /* Process two side if needed */
+   if (shader-two_side  ctx.colors_used) {
+   int i, count = ctx.shader-ninput;
+
+   /* additional inputs will be allocated right after the existing 
inputs,
+* we won't need them after the color selection, so we don't 
need to
+* reserve these gprs for the rest of the shader code and to 
adjust
+* output offsets etc. */
+   int gpr = ctx.file_offset[TGSI_FILE_INPUT] +
+   ctx.info.file_max[TGSI_FILE_INPUT] + 1;
+
+   if (ctx.face_gpr == -1) {
+   i = ctx.shader-ninput++;
+   ctx.shader-input[i].name = TGSI_SEMANTIC_FACE;
+   ctx.shader-input[i].spi_sid = 0;
+   ctx.shader-input[i].gpr = gpr++;
+   ctx.face_gpr = ctx.shader-input[i].gpr;
+   }
+
+   for (i = 0; i  count; i++) {
+   if (ctx.shader-input[i].name == TGSI_SEMANTIC_COLOR) {
+   int ni = ctx.shader-ninput++;
+   
memcpy(ctx.shader-input[ni],ctx.shader-input[i], sizeof(struct 
r600_shader_io));
+   ctx.shader-input[ni].name = 
TGSI_SEMANTIC_BCOLOR;
+   ctx.shader-input[ni].spi_sid = 
r600_spi_sid(ctx.shader-input[ni]);
+   ctx.shader-input[ni].gpr = gpr++;
+   ctx.shader-input[i].potential_back_facing_reg 
= ni;
+   }
+   }
+   }
 
 /* LLVM backend setup */
 #ifdef R600_USE_LLVM
diff --git a/src/gallium/drivers/r600/r600_shader.h 
b/src/gallium/drivers/r600/r600_shader.h
index d68dd07..2b8412a 100644
--- a/src/gallium/drivers/r600/r600_shader.h
+++ b/src/gallium/drivers/r600/r600_shader.h
@@ -34,6 +34,7 @@ struct r600_shader_io {
unsignedinterpolate;
boolean centroid;
unsignedlds_pos; /* for evergreen */
+   

Mesa (master): r600g: use a select to handle front/back color in llvm

2012-10-09 Thread Vincent Lejeune
Module: Mesa
Branch: master
Commit: 11e08f42e4fa5f1d296429415be6da7c03f105b0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=11e08f42e4fa5f1d296429415be6da7c03f105b0

Author: Vincent Lejeune v...@ovi.com
Date:   Sun Sep 23 19:46:53 2012 +0200

r600g: use a select to handle front/back color in llvm

Reviewed-by: Tom Stellard thomas.stell...@amd.com

---

 src/gallium/drivers/r600/r600_llvm.c   |   36 
 src/gallium/drivers/r600/r600_shader.c |   13 +++
 2 files changed, 44 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_llvm.c 
b/src/gallium/drivers/r600/r600_llvm.c
index 71ea578..c6e60af 100644
--- a/src/gallium/drivers/r600/r600_llvm.c
+++ b/src/gallium/drivers/r600/r600_llvm.c
@@ -86,6 +86,42 @@ static void llvm_load_input(
llvm.R600.load.input,
ctx-soa.bld_base.base.elem_type, reg, 1,
LLVMReadNoneAttribute);
+   
+   if (decl-Semantic.Name == TGSI_SEMANTIC_COLOR  
ctx-two_side) {
+   unsigned back_reg = ctx-r600_inputs[input_index]
+   .potential_back_facing_reg;
+   unsigned back_soa_index = radeon_llvm_reg_index_soa(
+   ctx-r600_inputs[back_reg].gpr
+   , chan);
+   LLVMValueRef backcolor_reg = lp_build_const_int32(
+   ctx-soa.bld_base.base.gallivm,
+   back_soa_index);
+   LLVMValueRef backcolor = build_intrinsic(
+   ctx-soa.bld_base.base.gallivm-builder,
+   llvm.R600.load.input,
+   ctx-soa.bld_base.base.elem_type, 
backcolor_reg, 1,
+   LLVMReadNoneAttribute);
+   LLVMValueRef face_reg = lp_build_const_int32(
+   ctx-soa.bld_base.base.gallivm,
+   ctx-face_input * 4);
+   LLVMValueRef face = build_intrinsic(
+   ctx-soa.bld_base.base.gallivm-builder,
+   llvm.R600.load.input,
+   ctx-soa.bld_base.base.elem_type,
+   face_reg, 1,
+   LLVMReadNoneAttribute);
+   LLVMValueRef is_face_positive = LLVMBuildFCmp(
+   ctx-soa.bld_base.base.gallivm-builder,
+   LLVMRealUGT, face, 
+   
lp_build_const_float(ctx-soa.bld_base.base.gallivm, 0.0f),
+   );
+   ctx-inputs[soa_index] = LLVMBuildSelect(
+   ctx-soa.bld_base.base.gallivm-builder,
+   is_face_positive,
+   ctx-inputs[soa_index],
+   backcolor,
+   );
+   }
}
 }
 
diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index 0c585de..daa5082 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1128,7 +1128,7 @@ static int tgsi_split_literal_constant(struct 
r600_shader_ctx *ctx)
return 0;
 }
 
-static int process_twoside_color_inputs(struct r600_shader_ctx *ctx)
+static int process_twoside_color_inputs(struct r600_shader_ctx *ctx, unsigned 
use_llvm)
 {
int i, r, count = ctx-shader-ninput;
 
@@ -1139,9 +1139,12 @@ static int process_twoside_color_inputs(struct 
r600_shader_ctx *ctx)
if ((r = evergreen_interp_input(ctx, 
back_facing_reg)))
return r;
}
-   r = select_twoside_color(ctx, i, back_facing_reg);
-   if (r)
-   return r;
+   
+   if (!use_llvm) {
+   r = select_twoside_color(ctx, i, 
back_facing_reg);
+   if (r)
+   return r;
+   }
}
}
return 0;
@@ -1402,7 +1405,7 @@ static int r600_shader_from_tgsi(struct r600_screen 
*rscreen,
}
 
if (shader-two_side  ctx.colors_used) {
-   if ((r = process_twoside_color_inputs(ctx)))
+   if ((r = process_twoside_color_inputs(ctx, use_llvm)))
return r;
}
 

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


Mesa (master): egl: Cleanly cast EGLNative* pointers to X11 types.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 31c7d4ec188b6f25a23a3eb9a3e05e103792aa4d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=31c7d4ec188b6f25a23a3eb9a3e05e103792aa4d

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 10:09:12 2012 -0700

egl: Cleanly cast EGLNative* pointers to X11 types.

The EGLNative* types are all defined to be pointers across all our EGL
implementations, but in the X11 platform they're actually just XIDs (32-bit
integers).

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/egl/drivers/dri2/platform_x11.c |6 --
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/egl/drivers/dri2/platform_x11.c 
b/src/egl/drivers/dri2/platform_x11.c
index 44e4373..15013ec 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -175,7 +175,7 @@ swrastGetImage(__DRIdrawable * read,
  */
 static _EGLSurface *
 dri2_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type,
-   _EGLConfig *conf, EGLNativeWindowType window,
+   _EGLConfig *conf, EGLNativeWindowType native_window,
const EGLint *attrib_list)
 {
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
@@ -185,6 +185,7 @@ dri2_create_surface(_EGLDriver *drv, _EGLDisplay *disp, 
EGLint type,
xcb_get_geometry_reply_t *reply;
xcb_screen_iterator_t s;
xcb_generic_error_t *error;
+   xcb_drawable_t window = (uintptr_t )native_window;
 
(void) drv;
 
@@ -831,11 +832,12 @@ dri2_swap_interval(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *surf, EGLint
 
 static EGLBoolean
 dri2_copy_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf,
- EGLNativePixmapType target)
+ EGLNativePixmapType native_target)
 {
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
xcb_gcontext_t gc;
+   xcb_pixmap_t target = (uintptr_t )native_target;
 
(void) drv;
 

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


Mesa (master): glx: Unifdef USE_XCB.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 3f0e3a7ad5cf9bef745d460b0fa5e75ff830cb32
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3f0e3a7ad5cf9bef745d460b0fa5e75ff830cb32

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 08:39:39 2012 -0700

glx: Unifdef USE_XCB.

It's been required for building glx since
b518dfb513742984f27577d25566f93afd86d4fc in january.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/glx/glx_query.c |   91 ---
 src/glx/glxcmds.c   |   56 ---
 src/glx/glxext.c|   73 -
 src/glx/single2.c   |   28 
 4 files changed, 0 insertions(+), 248 deletions(-)

diff --git a/src/glx/glx_query.c b/src/glx/glx_query.c
index 8a7ca53..7064e77 100644
--- a/src/glx/glx_query.c
+++ b/src/glx/glx_query.c
@@ -31,13 +31,10 @@
 
 #include glxclient.h
 
-#if defined(USE_XCB)
 # include X11/Xlib-xcb.h
 # include xcb/xcb.h
 # include xcb/glx.h
-#endif
 
-#ifdef USE_XCB
 
 /**
  * Exchange a protocol request for glXQueryServerString.
@@ -87,91 +84,3 @@ __glXGetString(Display * dpy, int opcode, CARD32 contextTag, 
CARD32 name)
return buf;
 }
 
-#else
-
-/**
- * GLX protocol structure for the ficticious GXLGenericGetString request.
- *
- * This is a non-existant protocol packet.  It just so happens that all of
- * the real protocol packets used to request a string from the server have
- * an identical binary layout.  The only difference between them is the
- * meaning of the \c for_whom field and the value of the \c glxCode.
- */
-typedef struct GLXGenericGetString
-{
-   CARD8 reqType;
-   CARD8 glxCode;
-   CARD16 length B16;
-   CARD32 for_whom B32;
-   CARD32 name B32;
-} xGLXGenericGetStringReq;
-
-/* These defines are only needed to make the GetReq macro happy.
- */
-#define sz_xGLXGenericGetStringReq 12
-#define X_GLXGenericGetString 0
-
-/**
- * Query the Server GLX string.
- * This routine will allocate the necessay space for the string.
- */
-static char *
-__glXGetStringFromServer(Display * dpy, int opcode, CARD32 glxCode,
- CARD32 for_whom, CARD32 name)
-{
-   xGLXGenericGetStringReq *req;
-   xGLXSingleReply reply;
-   int length;
-   int numbytes;
-   char *buf;
-
-
-   LockDisplay(dpy);
-
-
-   /* All of the GLX protocol requests for getting a string from the server
-* look the same.  The exact meaning of the for_whom field is usually
-* either the screen number (for glXQueryServerString) or the context tag
-* (for GLXSingle).
-*/
-
-   GetReq(GLXGenericGetString, req);
-   req-reqType = opcode;
-   req-glxCode = glxCode;
-   req-for_whom = for_whom;
-   req-name = name;
-
-   _XReply(dpy, (xReply *)  reply, 0, False);
-
-   length = reply.length * 4;
-   numbytes = reply.size;
-
-   buf = malloc(numbytes);
-   if (buf != NULL) {
-  _XRead(dpy, buf, numbytes);
-  length -= numbytes;
-   }
-
-   _XEatData(dpy, length);
-
-   UnlockDisplay(dpy);
-   SyncHandle();
-
-   return buf;
-}
-
-char *
-__glXQueryServerString(Display * dpy, int opcode, CARD32 screen, CARD32 name)
-{
-   return __glXGetStringFromServer(dpy, opcode,
-   X_GLXQueryServerString, screen, name);
-}
-
-char *
-__glXGetString(Display * dpy, int opcode, CARD32 contextTag, CARD32 name)
-{
-   return __glXGetStringFromServer(dpy, opcode, X_GLsop_GetString,
-   contextTag, name);
-}
-
-#endif /* USE_XCB */
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index ddfe12c..394bf59 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -53,11 +53,9 @@
 #else
 #endif
 
-#if defined(USE_XCB)
 #include X11/Xlib-xcb.h
 #include xcb/xcb.h
 #include xcb/glx.h
-#endif
 
 static const char __glXGLXClientVendorName[] = Mesa Project and SGI;
 static const char __glXGLXClientVersion[] = 1.4;
@@ -576,10 +574,6 @@ glXCopyContext(Display * dpy, GLXContext source_user,
 static Bool
 __glXIsDirect(Display * dpy, GLXContextID contextID)
 {
-#if !defined(USE_XCB)
-   xGLXIsDirectReq *req;
-   xGLXIsDirectReply reply;
-#endif
CARD8 opcode;
 
opcode = __glXSetupForCommand(dpy);
@@ -587,7 +581,6 @@ __glXIsDirect(Display * dpy, GLXContextID contextID)
   return GL_FALSE;
}
 
-#ifdef USE_XCB
xcb_connection_t *c = XGetXCBConnection(dpy);
xcb_generic_error_t *err;
xcb_glx_is_direct_reply_t *reply = xcb_glx_is_direct_reply(c,
@@ -605,19 +598,6 @@ __glXIsDirect(Display * dpy, GLXContextID contextID)
free(reply);
 
return is_direct;
-#else
-   /* Send the glXIsDirect request */
-   LockDisplay(dpy);
-   GetReq(GLXIsDirect, req);
-   req-reqType = opcode;
-   req-glxCode = X_GLXIsDirect;
-   req-context = contextID;
-   _XReply(dpy, (xReply *)  reply, 0, False);
-   UnlockDisplay(dpy);
-   SyncHandle();
-
-   return reply.isDirect;
-#endif /* USE_XCB */
 }
 
 /**
@@ -792,11 +772,7 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
struct glx_context 

Mesa (master): glx: Remove the last user of -DUSE_XCB.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: dc6fa4107643e153bb1c5831ca6aa1be10ef3b3a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dc6fa4107643e153bb1c5831ca6aa1be10ef3b3a

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 09:07:04 2012 -0700

glx: Remove the last user of -DUSE_XCB.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 configure.ac |4 
 src/mapi/glapi/gen/glX_proto_send.py |2 --
 2 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/configure.ac b/configure.ac
index 45406dd..48ec466 100644
--- a/configure.ac
+++ b/configure.ac
@@ -823,10 +823,6 @@ if test x$enable_glx = xyes -a x$no_x = xyes; then
 AC_MSG_ERROR([X11 development libraries needed for GLX])
 fi
 
-if test x$enable_glx = xyes; then
-DEFINES=$DEFINES -DUSE_XCB
-fi
-
 dnl Direct rendering or just indirect rendering
 case $host_os in
 gnu*)
diff --git a/src/mapi/glapi/gen/glX_proto_send.py 
b/src/mapi/glapi/gen/glX_proto_send.py
index 0e4b420..2cb0cf4 100644
--- a/src/mapi/glapi/gen/glX_proto_send.py
+++ b/src/mapi/glapi/gen/glX_proto_send.py
@@ -169,11 +169,9 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto):
print '#include glapi.h'
print '#include glthread.h'
print '#include GL/glxproto.h'
-   print '#ifdef USE_XCB'
print '#include X11/Xlib-xcb.h'
print '#include xcb/xcb.h'
print '#include xcb/glx.h'
-   print '#endif /* USE_XCB */'
 
print ''
print '#define __GLX_PAD(n) (((n) + 3)  ~3)'

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


Mesa (master): glx: Require xcb_dri2 for building glxdri2.c.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: bb01f671bb90a9ace0afa6a282d5142b90911f4b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bb01f671bb90a9ace0afa6a282d5142b90911f4b

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 08:43:44 2012 -0700

glx: Require xcb_dri2 for building glxdri2.c.

I'm going to transition a bunch of the protocol to using XCB so we can stop
rolling it ourselves.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

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

diff --git a/configure.ac b/configure.ac
index 48ec466..b2c499e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -869,7 +869,7 @@ xyesno)
 fi
 
 # find the DRI deps for libGL
-dri_modules=x11 xext xdamage xfixes x11-xcb xcb-glx = 1.8.1
+dri_modules=x11 xext xdamage xfixes x11-xcb xcb-glx = 1.8.1 xcb-dri2 = 
1.8
 
 # add xf86vidmode if available
 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, 
HAVE_XF86VIDMODE=no)

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


Mesa (master): glx: Unifdef some dri_interface.h defines.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: c35a9388a303d5c54ee549ef05e5d23d991b823d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c35a9388a303d5c54ee549ef05e5d23d991b823d

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 09:00:04 2012 -0700

glx: Unifdef some dri_interface.h defines.

dri_interface.h comes from our tree, so why litter our tree with ifdefs for
older versions of it?

I left in the DRI_TEX_BUFFER_VERSION ifdefs, which is broken and uncompiled
(the version wasn't bumped from 2 to 3 when the patch was landed), but I don't
know what should be done with it.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/glx/dri2_glx.c |   15 +--
 1 files changed, 1 insertions(+), 14 deletions(-)

diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 4ff0b9e..e35ae5e 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -511,10 +511,8 @@ __dri2CopySubBuffer(__GLXDRIdrawable *pdraw, int x, int y,
xrect.width = width;
xrect.height = height;
 
-#ifdef __DRI2_FLUSH
if (psc-f)
   (*psc-f-flush) (priv-driDrawable);
-#endif
 
dri2Throttle(psc, priv, reason);
 
@@ -553,10 +551,8 @@ dri2_copy_drawable(struct dri2_drawable *priv, int dest, 
int src)
xrect.width = priv-width;
xrect.height = priv-height;
 
-#ifdef __DRI2_FLUSH
if (psc-f)
   (*psc-f-flush) (priv-driDrawable);
-#endif
 
region = XFixesCreateRegion(psc-base.dpy, xrect, 1);
DRI2CopyRegion(psc-base.dpy, priv-base.xDrawable, region, dest, src);
@@ -715,7 +711,6 @@ dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t 
target_msc, int64_t divisor,
   __DRI2_THROTTLE_SWAPBUFFER);
 } else {
 #ifdef X_DRI2SwapBuffers
-#ifdef __DRI2_FLUSH
 if (psc-f) {
struct glx_context *gc = __glXGetCurrentContext();
 
@@ -723,7 +718,6 @@ dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t 
target_msc, int64_t divisor,
  (*psc-f-flush)(priv-driDrawable);
}
 }
-#endif
 
dri2Throttle(psc, priv, __DRI2_THROTTLE_SWAPBUFFER);
 
@@ -845,11 +839,9 @@ static const __DRIdri2LoaderExtension 
dri2LoaderExtension_old = {
NULL,
 };
 
-#ifdef __DRI_USE_INVALIDATE
 static const __DRIuseInvalidateExtension dri2UseInvalidate = {
{ __DRI_USE_INVALIDATE, __DRI_USE_INVALIDATE_VERSION }
 };
-#endif
 
 _X_HIDDEN void
 dri2InvalidateBuffers(Display *dpy, XID drawable)
@@ -864,10 +856,8 @@ dri2InvalidateBuffers(Display *dpy, XID drawable)
 
psc = (struct dri2_screen *) pdraw-psc;
 
-#if __DRI2_FLUSH_VERSION = 3
if (pdraw  psc-f  psc-f-base.version = 3  psc-f-invalidate)
psc-f-invalidate(pdp-driDrawable);
-#endif
 }
 
 static void
@@ -887,11 +877,9 @@ dri2_bind_tex_image(Display * dpy,
if (pdraw != NULL) {
   psc = (struct dri2_screen *) base-psc;
 
-#if __DRI2_FLUSH_VERSION = 3
   if (!pdp-invalidateAvailable  psc-f 
psc-f-base.version = 3  psc-f-invalidate)
 psc-f-invalidate(pdraw-driDrawable);
-#endif
 
   if (psc-texBuffer-base.version = 2 
  psc-texBuffer-setTexBuffer2 != NULL) {
@@ -1241,9 +1229,8 @@ dri2CreateDisplay(Display * dpy)

pdp-loader_extensions[i++] = systemTimeExtension.base;
 
-#ifdef __DRI_USE_INVALIDATE
pdp-loader_extensions[i++] = dri2UseInvalidate.base;
-#endif
+
pdp-loader_extensions[i++] = NULL;
 
pdp-dri2Hash = __glxHashCreate();

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


Mesa (master): egl: Unifdef dri_interface.h defines.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: b49cd8495f2f01a55d126d42ea97a071c6723376
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b49cd8495f2f01a55d126d42ea97a071c6723376

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 09:01:20 2012 -0700

egl: Unifdef dri_interface.h defines.

dri_interface.h comes from our tree, so why litter our tree with ifdefs for
older versions of it?

Reviewed-by: Kristian Høgsberg k...@bitplanet.net
Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

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

diff --git a/src/egl/drivers/dri2/platform_x11.c 
b/src/egl/drivers/dri2/platform_x11.c
index 15013ec..b75c90c 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -673,10 +673,8 @@ dri2_copy_region(_EGLDriver *drv, _EGLDisplay *disp,
if (draw-Type == EGL_PIXMAP_BIT || draw-Type == EGL_PBUFFER_BIT)
   return EGL_TRUE;
 
-#ifdef __DRI2_FLUSH
if (dri2_dpy-flush)
   (*dri2_dpy-flush-flush)(dri2_surf-dri_drawable);
-#endif
 
if (dri2_surf-have_fake_front)
   render_attachment = XCB_DRI2_ATTACHMENT_BUFFER_FAKE_FRONT_LEFT;
@@ -717,10 +715,8 @@ dri2_swap_buffers_msc(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *draw,
if (draw-SwapBehavior == EGL_BUFFER_PRESERVED || !dri2_dpy-swap_available)
   return dri2_copy_region(drv, disp, draw, dri2_surf-region) ? 0 : -1;
 
-#ifdef __DRI2_FLUSH
if (dri2_dpy-flush)
   (*dri2_dpy-flush-flush)(dri2_surf-dri_drawable);
-#endif
 
cookie = xcb_dri2_swap_buffers_unchecked(dri2_dpy-conn, 
dri2_surf-drawable,
   msc_hi, msc_lo, divisor_hi, divisor_lo, remainder_hi, 
remainder_lo);
@@ -732,12 +728,10 @@ dri2_swap_buffers_msc(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *draw,
   free(reply);
}
 
-#if __DRI2_FLUSH_VERSION = 3
/* If the server doesn't send invalidate events */
if (dri2_dpy-invalidate_available  dri2_dpy-flush 
dri2_dpy-flush-base.version = 3  dri2_dpy-flush-invalidate)
   (*dri2_dpy-flush-invalidate)(dri2_surf-dri_drawable);
-#endif
 
return swap_count;
 #else

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


Mesa (master): egl: Drop xcb ifdefs by just requiring a version from this year.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: b477384f4059cfda668c616c5655f2ee493cf6d1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b477384f4059cfda668c616c5655f2ee493cf6d1

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 09:09:47 2012 -0700

egl: Drop xcb ifdefs by just requiring a version from this year.

glx and gallium's xcb_dri2 usage already require this version, so this is
nothing really new.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 configure.ac|2 +-
 src/egl/drivers/dri2/platform_x11.c |   13 -
 2 files changed, 1 insertions(+), 14 deletions(-)

diff --git a/configure.ac b/configure.ac
index b2c499e..54f6ea2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1508,7 +1508,7 @@ for plat in $egl_platforms; do
;;
 
x11)
-   PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes])
+   PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 = 1.8 
xcb-xfixes])
# workaround a bug in xcb-dri2 generated by xcb-proto 1.6
save_LIBS=$LIBS
AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
diff --git a/src/egl/drivers/dri2/platform_x11.c 
b/src/egl/drivers/dri2/platform_x11.c
index b75c90c..2be6d09 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -695,7 +695,6 @@ static int64_t
 dri2_swap_buffers_msc(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw,
   int64_t msc, int64_t divisor, int64_t remainder)
 {
-#if XCB_DRI2_MINOR_VERSION = 3
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
uint32_t msc_hi = msc  32;
@@ -734,12 +733,6 @@ dri2_swap_buffers_msc(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *draw,
   (*dri2_dpy-flush-invalidate)(dri2_surf-dri_drawable);
 
return swap_count;
-#else
-   struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
-
-   return dri2_copy_region(drv, disp, draw, dri2_surf-region) ? 0 : -1;
-#endif /* XCB_DRI2_MINOR_VERSION = 3 */
-
 }
 
 static EGLBoolean
@@ -802,10 +795,8 @@ dri2_post_sub_buffer(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *draw,
 static EGLBoolean
 dri2_swap_interval(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf, 
EGLint interval)
 {
-#if XCB_DRI2_MINOR_VERSION = 3
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
-#endif
 
/* XXX Check vblank_mode here? */
 
@@ -814,10 +805,8 @@ dri2_swap_interval(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *surf, EGLint
else if (interval  surf-Config-MinSwapInterval)
   interval = surf-Config-MinSwapInterval;
 
-#if XCB_DRI2_MINOR_VERSION = 3
if (interval != surf-SwapInterval  dri2_dpy-swap_available)
   xcb_dri2_swap_interval(dri2_dpy-conn, dri2_surf-drawable, interval);
-#endif
 
surf-SwapInterval = interval;
 
@@ -1114,10 +1103,8 @@ dri2_initialize_x11_dri2(_EGLDriver *drv, _EGLDisplay 
*disp)
dri2_dpy-extensions[1] = image_lookup_extension.base;
dri2_dpy-extensions[2] = NULL;
 
-#if XCB_DRI2_MINOR_VERSION = 3
dri2_dpy-swap_available = (dri2_dpy-dri2_minor = 2);
dri2_dpy-invalidate_available = (dri2_dpy-dri2_minor = 3);
-#endif
 
if (!dri2_create_screen(disp))
   goto cleanup_fd;

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


Mesa (master): egl: Quit checking for a bug in old xcb when we require new xcb.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: da3f7c127b4086eb50d1ba8ed6332fcf2431a85e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=da3f7c127b4086eb50d1ba8ed6332fcf2431a85e

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 09:03:48 2012 -0700

egl: Quit checking for a bug in old xcb when we require new xcb.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 configure.ac|5 -
 src/egl/drivers/dri2/platform_x11.c |4 
 2 files changed, 0 insertions(+), 9 deletions(-)

diff --git a/configure.ac b/configure.ac
index 54f6ea2..6c7a192 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1509,11 +1509,6 @@ for plat in $egl_platforms; do
 
x11)
PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 = 1.8 
xcb-xfixes])
-   # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
-   save_LIBS=$LIBS
-   AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
-[DEFINES=$DEFINES 
-DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN])
-   LIBS=$save_LIBS
;;
 
drm)
diff --git a/src/egl/drivers/dri2/platform_x11.c 
b/src/egl/drivers/dri2/platform_x11.c
index 2be6d09..a56fc78 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -543,11 +543,7 @@ dri2_connect(struct dri2_egl_display *dri2_dpy)
   dri2_strndup(driver_name,
   xcb_dri2_connect_driver_name_length (connect));
 
-#if XCB_DRI2_CONNECT_DEVICE_NAME_BROKEN
-   device_name = driver_name + ((connect-driver_name_length + 3)  ~3);
-#else
device_name = xcb_dri2_connect_device_name (connect);
-#endif
 
dri2_dpy-device_name =
   dri2_strndup(device_name,

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


Mesa (master): glx/dri1: Remove uncompiled __DRI_SWAP_BUFFER_COUNTER code.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 1e74910bb7c3882c272c34ca1ed559b0b0058fa8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1e74910bb7c3882c272c34ca1ed559b0b0058fa8

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 11:40:36 2012 -0700

glx/dri1: Remove uncompiled __DRI_SWAP_BUFFER_COUNTER code.

It's been in place but never enabled since 2010.  Note how one piece called a
DRI2 function, suggesting never being tested.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/glx/dri_glx.c |   61 -
 1 files changed, 0 insertions(+), 61 deletions(-)

diff --git a/src/glx/dri_glx.c b/src/glx/dri_glx.c
index 03237d4..de777fb 100644
--- a/src/glx/dri_glx.c
+++ b/src/glx/dri_glx.c
@@ -718,61 +718,6 @@ driDestroyScreen(struct glx_screen *base)
   dlclose(psc-driver);
 }
 
-#ifdef __DRI_SWAP_BUFFER_COUNTER
-
-static int
-driDrawableGetMSC(struct glx_screen *base, __GLXDRIdrawable *pdraw,
-  int64_t *ust, int64_t *msc, int64_t *sbc)
-{
-   struct dri_screen *psc = (struct dri_screen *) base;
-   struct dri_drawable *pdp = (struct dri_drawable *) pdraw;
-
-   if (pdp  psc-sbc  psc-msc)
-  return ( (*psc-msc-getMSC)(psc-driScreen, msc) == 0 
-  (*psc-sbc-getSBC)(pdp-driDrawable, sbc) == 0  
-  __glXGetUST(ust) == 0 );
-}
-
-static int
-driWaitForMSC(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
-  int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc)
-{
-   struct dri_screen *psc = (struct dri_screen *) pdraw-psc;
-   struct dri_drawable *pdp = (struct dri_drawable *) pdraw;
-
-   if (pdp != NULL  psc-msc != NULL) {
-  ret = (*psc-msc-waitForMSC) (pdp-driDrawable, target_msc,
-divisor, remainder, msc, sbc);
-
-  /* __glXGetUST returns zero on success and non-zero on failure.
-   * This function returns True on success and False on failure.
-   */
-  return ret == 0  __glXGetUST(ust) == 0;
-   }
-}
-
-static int
-driWaitForSBC(__GLXDRIdrawable *pdraw, int64_t target_sbc, int64_t *ust,
-  int64_t *msc, int64_t *sbc)
-{
-   struct dri_drawable *pdp = (struct dri_drawable *) pdraw;
-
-   if (pdp != NULL  psc-sbc != NULL) {
-  ret =
- (*psc-sbc-waitForSBC) (pdp-driDrawable, target_sbc, msc, sbc);
-
-  /* __glXGetUST returns zero on success and non-zero on failure.
-   * This function returns True on success and False on failure.
-   */
-  return ((ret == 0)  (__glXGetUST(ust) == 0));
-   }
-
-   return DRI2WaitSBC(pdp-base.psc-dpy,
- pdp-base.xDrawable, target_sbc, ust, msc, sbc);
-}
-
-#endif
-
 static int
 driSetSwapInterval(__GLXDRIdrawable *pdraw, int interval)
 {
@@ -899,12 +844,6 @@ driCreateScreen(int screen, struct glx_display *priv)
psp-createDrawable = driCreateDrawable;
psp-swapBuffers = driSwapBuffers;
 
-#ifdef __DRI_SWAP_BUFFER_COUNTER
-   psp-getDrawableMSC = driDrawableGetMSC;
-   psp-waitForMSC = driWaitForMSC;
-   psp-waitForSBC = driWaitForSBC;
-#endif
-
psp-setSwapInterval = driSetSwapInterval;
psp-getSwapInterval = driGetSwapInterval;
 

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


Mesa (master): glx: Replace DRI2WaitForSBC custom protocol with XCB.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 183ab9e14efed2c5483a472ea8feff31fcf6d2a9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=183ab9e14efed2c5483a472ea8feff31fcf6d2a9

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 11:39:17 2012 -0700

glx: Replace DRI2WaitForSBC custom protocol with XCB.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/glx/dri2.c |   41 -
 src/glx/dri2.h |4 
 src/glx/dri2_glx.c |   43 ++-
 3 files changed, 34 insertions(+), 54 deletions(-)

diff --git a/src/glx/dri2.c b/src/glx/dri2.c
index e17da6f..21b9c21 100644
--- a/src/glx/dri2.c
+++ b/src/glx/dri2.c
@@ -664,47 +664,6 @@ Bool DRI2WaitMSC(Display *dpy, XID drawable, CARD64 
target_msc, CARD64 divisor,
 }
 #endif
 
-#ifdef X_DRI2WaitSBC
-static void
-load_sbc_req(xDRI2WaitSBCReq *req, CARD64 target)
-{
-req-target_sbc_hi = target  32;
-req-target_sbc_lo = target  0x;
-}
-
-Bool DRI2WaitSBC(Display *dpy, XID drawable, CARD64 target_sbc, CARD64 *ust,
-CARD64 *msc, CARD64 *sbc)
-{
-XExtDisplayInfo *info = DRI2FindDisplay(dpy);
-xDRI2WaitSBCReq *req;
-xDRI2MSCReply rep;
-
-XextCheckExtension (dpy, info, dri2ExtensionName, False);
-
-LockDisplay(dpy);
-GetReq(DRI2WaitSBC, req);
-req-reqType = info-codes-major_opcode;
-req-dri2ReqType = X_DRI2WaitSBC;
-req-drawable = drawable;
-load_sbc_req(req, target_sbc);
-
-if (!_XReply(dpy, (xReply *)rep, 0, xFalse)) {
-   UnlockDisplay(dpy);
-   SyncHandle();
-   return False;
-}
-
-*ust = ((CARD64)rep.ust_hi  32) | rep.ust_lo;
-*msc = ((CARD64)rep.msc_hi  32) | rep.msc_lo;
-*sbc = ((CARD64)rep.sbc_hi  32) | rep.sbc_lo;
-
-UnlockDisplay(dpy);
-SyncHandle();
-
-return True;
-}
-#endif
-
 #ifdef X_DRI2SwapInterval
 void DRI2SwapInterval(Display *dpy, XID drawable, int interval)
 {
diff --git a/src/glx/dri2.h b/src/glx/dri2.h
index 114e9f8..bfd9910 100644
--- a/src/glx/dri2.h
+++ b/src/glx/dri2.h
@@ -96,10 +96,6 @@ extern Bool
 DRI2WaitMSC(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor,
CARD64 remainder, CARD64 *ust, CARD64 *msc, CARD64 *sbc);
 
-extern Bool
-DRI2WaitSBC(Display *dpy, XID drawable, CARD64 target_sbc, CARD64 *ust,
-   CARD64 *msc, CARD64 *sbc);
-
 extern void
 DRI2SwapInterval(Display *dpy, XID drawable, int interval);
 
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index e35ae5e..1cfa275 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -34,6 +34,9 @@
 
 #include X11/Xlib.h
 #include X11/extensions/Xfixes.h
+#include X11/Xlib-xcb.h
+#include xcb/xcb.h
+#include xcb/dri2.h
 #include glapi.h
 #include glxclient.h
 #include X11/extensions/dri2proto.h
@@ -118,6 +121,22 @@ struct dri2_drawable
 
 static const struct glx_context_vtable dri2_context_vtable;
 
+/* For XCB's handling of ust/msc/sbc counters, we have to hand it the high and
+ * low halves separately.  This helps you split them.
+ */
+static void
+split_counter(uint64_t counter, uint32_t *hi, uint32_t *lo)
+{
+   *hi = (counter  32);
+   *lo = counter  0x;
+}
+
+static uint64_t
+merge_counter(uint32_t hi, uint32_t lo)
+{
+   return ((uint64_t)hi  32) | lo;
+}
+
 static void
 dri2_destroy_context(struct glx_context *context)
 {
@@ -456,16 +475,22 @@ static int
 dri2WaitForSBC(__GLXDRIdrawable *pdraw, int64_t target_sbc, int64_t *ust,
   int64_t *msc, int64_t *sbc)
 {
-   CARD64 dri2_ust, dri2_msc, dri2_sbc;
-   int ret;
+   xcb_connection_t *c = XGetXCBConnection(pdraw-psc-dpy);
+   xcb_dri2_wait_sbc_cookie_t wait_sbc_cookie;
+   xcb_dri2_wait_sbc_reply_t *wait_sbc_reply;
+   uint32_t target_sbc_hi, target_sbc_lo;
 
-   ret = DRI2WaitSBC(pdraw-psc-dpy, pdraw-xDrawable,
-target_sbc, dri2_ust, dri2_msc, dri2_sbc);
-   *ust = dri2_ust;
-   *msc = dri2_msc;
-   *sbc = dri2_sbc;
+   split_counter(target_sbc, target_sbc_hi, target_sbc_lo);
 
-   return ret;
+   wait_sbc_cookie = xcb_dri2_wait_sbc_unchecked(c, pdraw-xDrawable,
+ target_sbc_hi, target_sbc_lo);
+   wait_sbc_reply = xcb_dri2_wait_sbc_reply(c, wait_sbc_cookie, NULL);
+   *ust = merge_counter(wait_sbc_reply-ust_hi, wait_sbc_reply-ust_lo);
+   *msc = merge_counter(wait_sbc_reply-msc_hi, wait_sbc_reply-msc_lo);
+   *sbc = merge_counter(wait_sbc_reply-sbc_hi, wait_sbc_reply-sbc_lo);
+   free(wait_sbc_reply);
+
+   return 0;
 }
 
 #endif /* X_DRI2WaitMSC */
@@ -1120,8 +1145,8 @@ dri2CreateScreen(int screen, struct glx_display * priv)
 #endif
 #ifdef X_DRI2WaitMSC
   psp-waitForMSC = dri2WaitForMSC;
-  psp-waitForSBC = dri2WaitForSBC;
 #endif
+  psp-waitForSBC = dri2WaitForSBC;
 #ifdef X_DRI2SwapInterval
   psp-setSwapInterval = dri2SetSwapInterval;
   psp-getSwapInterval = dri2GetSwapInterval;

___
mesa-commit mailing list

Mesa (master): glx: Replace DRI2WaitForMSC custom protocol with XCB.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 8e61b9028ad4f68c9d68fd781b6f44e1f6a266bd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e61b9028ad4f68c9d68fd781b6f44e1f6a266bd

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 12:01:27 2012 -0700

glx: Replace DRI2WaitForMSC custom protocol with XCB.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/glx/dri2.c |   46 --
 src/glx/dri2.h |4 
 src/glx/dri2_glx.c |   37 +
 3 files changed, 21 insertions(+), 66 deletions(-)

diff --git a/src/glx/dri2.c b/src/glx/dri2.c
index 21b9c21..96c2ae8 100644
--- a/src/glx/dri2.c
+++ b/src/glx/dri2.c
@@ -618,52 +618,6 @@ Bool DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, 
CARD64 *msc,
 }
 #endif
 
-#ifdef X_DRI2WaitMSC
-static void
-load_msc_req(xDRI2WaitMSCReq *req, CARD64 target, CARD64 divisor,
-CARD64 remainder)
-{
-req-target_msc_hi = target  32;
-req-target_msc_lo = target  0x;
-req-divisor_hi = divisor  32;
-req-divisor_lo = divisor  0x;
-req-remainder_hi = remainder  32;
-req-remainder_lo = remainder  0x;
-}
-
-Bool DRI2WaitMSC(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor,
-CARD64 remainder, CARD64 *ust, CARD64 *msc, CARD64 *sbc)
-{
-XExtDisplayInfo *info = DRI2FindDisplay(dpy);
-xDRI2WaitMSCReq *req;
-xDRI2MSCReply rep;
-
-XextCheckExtension (dpy, info, dri2ExtensionName, False);
-
-LockDisplay(dpy);
-GetReq(DRI2WaitMSC, req);
-req-reqType = info-codes-major_opcode;
-req-dri2ReqType = X_DRI2WaitMSC;
-req-drawable = drawable;
-load_msc_req(req, target_msc, divisor, remainder);
-
-if (!_XReply(dpy, (xReply *)rep, 0, xFalse)) {
-   UnlockDisplay(dpy);
-   SyncHandle();
-   return False;
-}
-
-*ust = ((CARD64)rep.ust_hi  32) | (CARD64)rep.ust_lo;
-*msc = ((CARD64)rep.msc_hi  32) | (CARD64)rep.msc_lo;
-*sbc = ((CARD64)rep.sbc_hi  32) | (CARD64)rep.sbc_lo;
-
-UnlockDisplay(dpy);
-SyncHandle();
-
-return True;
-}
-#endif
-
 #ifdef X_DRI2SwapInterval
 void DRI2SwapInterval(Display *dpy, XID drawable, int interval)
 {
diff --git a/src/glx/dri2.h b/src/glx/dri2.h
index bfd9910..fe7c24e 100644
--- a/src/glx/dri2.h
+++ b/src/glx/dri2.h
@@ -92,10 +92,6 @@ DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 
target_msc, CARD64 divisor,
 extern Bool
 DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, CARD64 *msc, CARD64 *sbc);
 
-extern Bool
-DRI2WaitMSC(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor,
-   CARD64 remainder, CARD64 *ust, CARD64 *msc, CARD64 *sbc);
-
 extern void
 DRI2SwapInterval(Display *dpy, XID drawable, int interval);
 
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 1cfa275..60dc035 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -452,23 +452,32 @@ dri2DrawableGetMSC(struct glx_screen *psc, 
__GLXDRIdrawable *pdraw,
 
 #endif
 
-
-#ifdef X_DRI2WaitMSC
-
 static int
 dri2WaitForMSC(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
   int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc)
 {
-   CARD64 dri2_ust, dri2_msc, dri2_sbc;
-   int ret;
-
-   ret = DRI2WaitMSC(pdraw-psc-dpy, pdraw-xDrawable, target_msc, divisor,
-remainder, dri2_ust, dri2_msc, dri2_sbc);
-   *ust = dri2_ust;
-   *msc = dri2_msc;
-   *sbc = dri2_sbc;
+   xcb_connection_t *c = XGetXCBConnection(pdraw-psc-dpy);
+   xcb_dri2_wait_msc_cookie_t wait_msc_cookie;
+   xcb_dri2_wait_msc_reply_t *wait_msc_reply;
+   uint32_t target_msc_hi, target_msc_lo;
+   uint32_t divisor_hi, divisor_lo;
+   uint32_t remainder_hi, remainder_lo;
+
+   split_counter(target_msc, target_msc_hi, target_msc_lo);
+   split_counter(divisor, divisor_hi, divisor_lo);
+   split_counter(remainder, remainder_hi, remainder_lo);
+
+   wait_msc_cookie = xcb_dri2_wait_msc_unchecked(c, pdraw-xDrawable,
+ target_msc_hi, target_msc_lo,
+ divisor_hi, divisor_lo,
+ remainder_hi, remainder_lo);
+   wait_msc_reply = xcb_dri2_wait_msc_reply(c, wait_msc_cookie, NULL);
+   *ust = merge_counter(wait_msc_reply-ust_hi, wait_msc_reply-ust_lo);
+   *msc = merge_counter(wait_msc_reply-msc_hi, wait_msc_reply-msc_lo);
+   *sbc = merge_counter(wait_msc_reply-sbc_hi, wait_msc_reply-sbc_lo);
+   free(wait_msc_reply);
 
-   return ret;
+   return 0;
 }
 
 static int
@@ -493,8 +502,6 @@ dri2WaitForSBC(__GLXDRIdrawable *pdraw, int64_t target_sbc, 
int64_t *ust,
return 0;
 }
 
-#endif /* X_DRI2WaitMSC */
-
 /**
  * dri2Throttle - Request driver throttling
  *
@@ -1143,9 +1150,7 @@ dri2CreateScreen(int screen, struct glx_display * priv)
 #ifdef X_DRI2GetMSC
   psp-getDrawableMSC = dri2DrawableGetMSC;
 #endif
-#ifdef X_DRI2WaitMSC
   psp-waitForMSC = 

Mesa (master): glx: Replace DRI2GetMSC custom protocol with XCB.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: ab8ae9301fe8c4843d902cb55e64620f5768c7b0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab8ae9301fe8c4843d902cb55e64620f5768c7b0

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 12:05:28 2012 -0700

glx: Replace DRI2GetMSC custom protocol with XCB.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/glx/dri2.c |   33 -
 src/glx/dri2.h |3 ---
 src/glx/dri2_glx.c |   26 ++
 3 files changed, 10 insertions(+), 52 deletions(-)

diff --git a/src/glx/dri2.c b/src/glx/dri2.c
index 96c2ae8..0c49b83 100644
--- a/src/glx/dri2.c
+++ b/src/glx/dri2.c
@@ -585,39 +585,6 @@ void DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 
target_msc,
 }
 #endif
 
-#ifdef X_DRI2GetMSC
-Bool DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, CARD64 *msc,
-   CARD64 *sbc)
-{
-XExtDisplayInfo *info = DRI2FindDisplay(dpy);
-xDRI2GetMSCReq *req;
-xDRI2MSCReply rep;
-
-XextCheckExtension (dpy, info, dri2ExtensionName, False);
-
-LockDisplay(dpy);
-GetReq(DRI2GetMSC, req);
-req-reqType = info-codes-major_opcode;
-req-dri2ReqType = X_DRI2GetMSC;
-req-drawable = drawable;
-
-if (!_XReply(dpy, (xReply *)rep, 0, xFalse)) {
-   UnlockDisplay(dpy);
-   SyncHandle();
-   return False;
-}
-
-*ust = vals_to_card64(rep.ust_lo, rep.ust_hi);
-*msc = vals_to_card64(rep.msc_lo, rep.msc_hi);
-*sbc = vals_to_card64(rep.sbc_lo, rep.sbc_hi);
-
-UnlockDisplay(dpy);
-SyncHandle();
-
-return True;
-}
-#endif
-
 #ifdef X_DRI2SwapInterval
 void DRI2SwapInterval(Display *dpy, XID drawable, int interval)
 {
diff --git a/src/glx/dri2.h b/src/glx/dri2.h
index fe7c24e..991ab37 100644
--- a/src/glx/dri2.h
+++ b/src/glx/dri2.h
@@ -89,9 +89,6 @@ extern void
 DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor,
CARD64 remainder, CARD64 *count);
 
-extern Bool
-DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, CARD64 *msc, CARD64 *sbc);
-
 extern void
 DRI2SwapInterval(Display *dpy, XID drawable, int interval);
 
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 60dc035..18542d1 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -432,26 +432,24 @@ dri2CreateDrawable(struct glx_screen *base, XID xDrawable,
return pdraw-base;
 }
 
-#ifdef X_DRI2GetMSC
-
 static int
 dri2DrawableGetMSC(struct glx_screen *psc, __GLXDRIdrawable *pdraw,
   int64_t *ust, int64_t *msc, int64_t *sbc)
 {
-   CARD64 dri2_ust, dri2_msc, dri2_sbc;
-   int ret;
+   xcb_connection_t *c = XGetXCBConnection(pdraw-psc-dpy);
+   xcb_dri2_get_msc_cookie_t get_msc_cookie;
+   xcb_dri2_get_msc_reply_t *get_msc_reply;
 
-   ret = DRI2GetMSC(psc-dpy, pdraw-xDrawable,
-   dri2_ust, dri2_msc, dri2_sbc);
-   *ust = dri2_ust;
-   *msc = dri2_msc;
-   *sbc = dri2_sbc;
+   get_msc_cookie = xcb_dri2_get_msc_unchecked(c, pdraw-xDrawable);
+   get_msc_reply = xcb_dri2_get_msc_reply(c, get_msc_cookie, NULL);
+   *ust = merge_counter(get_msc_reply-ust_hi, get_msc_reply-ust_lo);
+   *msc = merge_counter(get_msc_reply-msc_hi, get_msc_reply-msc_lo);
+   *sbc = merge_counter(get_msc_reply-sbc_hi, get_msc_reply-sbc_lo);
+   free(get_msc_reply);
 
-   return ret;
+   return 0;
 }
 
-#endif
-
 static int
 dri2WaitForMSC(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
   int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc)
@@ -1147,18 +1145,14 @@ dri2CreateScreen(int screen, struct glx_display * priv)
psp-getSwapInterval = NULL;
 
if (pdp-driMinor = 2) {
-#ifdef X_DRI2GetMSC
   psp-getDrawableMSC = dri2DrawableGetMSC;
-#endif
   psp-waitForMSC = dri2WaitForMSC;
   psp-waitForSBC = dri2WaitForSBC;
 #ifdef X_DRI2SwapInterval
   psp-setSwapInterval = dri2SetSwapInterval;
   psp-getSwapInterval = dri2GetSwapInterval;
 #endif
-#if defined(X_DRI2GetMSC)  defined(X_DRI2WaitMSC)  
defined(X_DRI2SwapInterval)
   __glXEnableDirectExtension(psc-base, GLX_OML_sync_control);
-#endif
}
 
/* DRI2 suports SubBuffer through DRI2CopyRegion, so it's always

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


Mesa (master): glx: Allow glXSwapInterval(0) when vblank_mode=0.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: d0937759db09797836e290220236f61ab0f18259
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d0937759db09797836e290220236f61ab0f18259

Author: Eric Anholt e...@anholt.net
Date:   Thu Oct  4 13:42:16 2012 -0700

glx: Allow glXSwapInterval(0) when vblank_mode=0.

There's no reason to say no in this case.

---

 src/glx/dri2_glx.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 18542d1..07a3384 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -830,7 +830,9 @@ dri2SetSwapInterval(__GLXDRIdrawable *pdraw, int interval)
 
switch (vblank_mode) {
case DRI_CONF_VBLANK_NEVER:
-  return GLX_BAD_VALUE;
+  if (interval != 0)
+ return GLX_BAD_VALUE;
+  break;
case DRI_CONF_VBLANK_ALWAYS_SYNC:
   if (interval = 0)
 return GLX_BAD_VALUE;

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


Mesa (master): glx: Reuse setSwapInterval for setting initial swap interval .

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 7acf8ae0e1ed295fc1550f14e8ca812ba4f8af1f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7acf8ae0e1ed295fc1550f14e8ca812ba4f8af1f

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 12:14:44 2012 -0700

glx: Reuse setSwapInterval for setting initial swap interval.

---

 src/glx/dri2_glx.c |7 ++-
 1 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 07a3384..cb3412e 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -419,15 +419,12 @@ dri2CreateDrawable(struct glx_screen *base, XID xDrawable,
   return None;
}
 
-
-#ifdef X_DRI2SwapInterval
/*
 * Make sure server has the same swap interval we do for the new
 * drawable.
 */
-   if (pdp-swapAvailable)
-  DRI2SwapInterval(psc-base.dpy, xDrawable, pdraw-swap_interval);
-#endif
+   if (psc-vtable.setSwapInterval)
+  psc-vtable.setSwapInterval(pdraw-base, pdraw-swap_interval);
 
return pdraw-base;
 }

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


Mesa (master): glx: Replace DRI2SwapInterval custom protocol with XCB.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 811602885bb5fa56f04927c29b882675e7ff311c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=811602885bb5fa56f04927c29b882675e7ff311c

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 12:15:19 2012 -0700

glx: Replace DRI2SwapInterval custom protocol with XCB.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/glx/dri2.c |   19 ---
 src/glx/dri2.h |3 ---
 src/glx/dri2_glx.c |9 ++---
 3 files changed, 2 insertions(+), 29 deletions(-)

diff --git a/src/glx/dri2.c b/src/glx/dri2.c
index 0c49b83..c77ef7b 100644
--- a/src/glx/dri2.c
+++ b/src/glx/dri2.c
@@ -585,23 +585,4 @@ void DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 
target_msc,
 }
 #endif
 
-#ifdef X_DRI2SwapInterval
-void DRI2SwapInterval(Display *dpy, XID drawable, int interval)
-{
-XExtDisplayInfo *info = DRI2FindDisplay(dpy);
-xDRI2SwapIntervalReq *req;
-
-XextSimpleCheckExtension (dpy, info, dri2ExtensionName);
-
-LockDisplay(dpy);
-GetReq(DRI2SwapInterval, req);
-req-reqType = info-codes-major_opcode;
-req-dri2ReqType = X_DRI2SwapInterval;
-req-drawable = drawable;
-req-interval = interval;
-UnlockDisplay(dpy);
-SyncHandle();
-}
-#endif
-
 #endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/dri2.h b/src/glx/dri2.h
index 991ab37..179e8f9 100644
--- a/src/glx/dri2.h
+++ b/src/glx/dri2.h
@@ -89,7 +89,4 @@ extern void
 DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor,
CARD64 remainder, CARD64 *count);
 
-extern void
-DRI2SwapInterval(Display *dpy, XID drawable, int interval);
-
 #endif
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index cb3412e..9a7dd7a 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -812,11 +812,10 @@ dri2GetBuffersWithFormat(__DRIdrawable * driDrawable,
return pdraw-buffers;
 }
 
-#ifdef X_DRI2SwapInterval
-
 static int
 dri2SetSwapInterval(__GLXDRIdrawable *pdraw, int interval)
 {
+   xcb_connection_t *c = XGetXCBConnection(pdraw-psc-dpy);
struct dri2_drawable *priv =  (struct dri2_drawable *) pdraw;
GLint vblank_mode = DRI_CONF_VBLANK_DEF_INTERVAL_1;
struct dri2_screen *psc = (struct dri2_screen *) priv-base.psc;
@@ -838,7 +837,7 @@ dri2SetSwapInterval(__GLXDRIdrawable *pdraw, int interval)
   break;
}
 
-   DRI2SwapInterval(priv-base.psc-dpy, priv-base.xDrawable, interval);
+   xcb_dri2_swap_interval(c, priv-base.xDrawable, interval);
priv-swap_interval = interval;
 
return 0;
@@ -852,8 +851,6 @@ dri2GetSwapInterval(__GLXDRIdrawable *pdraw)
   return priv-swap_interval;
 }
 
-#endif /* X_DRI2SwapInterval */
-
 static const __DRIdri2LoaderExtension dri2LoaderExtension = {
{__DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION},
dri2GetBuffers,
@@ -1147,10 +1144,8 @@ dri2CreateScreen(int screen, struct glx_display * priv)
   psp-getDrawableMSC = dri2DrawableGetMSC;
   psp-waitForMSC = dri2WaitForMSC;
   psp-waitForSBC = dri2WaitForSBC;
-#ifdef X_DRI2SwapInterval
   psp-setSwapInterval = dri2SetSwapInterval;
   psp-getSwapInterval = dri2GetSwapInterval;
-#endif
   __glXEnableDirectExtension(psc-base, GLX_OML_sync_control);
}
 

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


Mesa (master): glx: Fix some indentation.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: f02242a4fa0db20c5e02ecf0d4d5a6bdf42ccc83
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f02242a4fa0db20c5e02ecf0d4d5a6bdf42ccc83

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 12:16:49 2012 -0700

glx: Fix some indentation.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/glx/dri2_glx.c |   10 +-
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 9a7dd7a..49a2179 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -738,13 +738,13 @@ dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t 
target_msc, int64_t divisor,
   __DRI2_THROTTLE_SWAPBUFFER);
 } else {
 #ifdef X_DRI2SwapBuffers
-if (psc-f) {
-   struct glx_context *gc = __glXGetCurrentContext();
+   if (psc-f) {
+  struct glx_context *gc = __glXGetCurrentContext();
 
-   if (gc) {
- (*psc-f-flush)(priv-driDrawable);
+  if (gc) {
+ (*psc-f-flush)(priv-driDrawable);
+  }
}
-}
 
dri2Throttle(psc, priv, __DRI2_THROTTLE_SWAPBUFFER);
 

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


Mesa (master): glx: Replace DRI2SwapBuffers() custom protocol with XCB.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 8c472b8f6a612a810aec34283d90bb5aa88bf855
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c472b8f6a612a810aec34283d90bb5aa88bf855

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 12:26:39 2012 -0700

glx: Replace DRI2SwapBuffers() custom protocol with XCB.

Reviewed-by: Chad Versace chad.vers...@linux.intel.com

---

 src/glx/dri2.c |   44 
 src/glx/dri2.h |4 
 src/glx/dri2_glx.c |   35 +++
 3 files changed, 31 insertions(+), 52 deletions(-)

diff --git a/src/glx/dri2.c b/src/glx/dri2.c
index c77ef7b..bcd1f9c 100644
--- a/src/glx/dri2.c
+++ b/src/glx/dri2.c
@@ -541,48 +541,4 @@ DRI2CopyRegion(Display * dpy, XID drawable, XserverRegion 
region,
SyncHandle();
 }
 
-#ifdef X_DRI2SwapBuffers
-static void
-load_swap_req(xDRI2SwapBuffersReq *req, CARD64 target, CARD64 divisor,
-CARD64 remainder)
-{
-req-target_msc_hi = target  32;
-req-target_msc_lo = target  0x;
-req-divisor_hi = divisor  32;
-req-divisor_lo = divisor  0x;
-req-remainder_hi = remainder  32;
-req-remainder_lo = remainder  0x;
-}
-
-static CARD64
-vals_to_card64(CARD32 lo, CARD32 hi)
-{
-return (CARD64)hi  32 | lo;
-}
-
-void DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 target_msc,
-CARD64 divisor, CARD64 remainder, CARD64 *count)
-{
-XExtDisplayInfo *info = DRI2FindDisplay(dpy);
-xDRI2SwapBuffersReq *req;
-xDRI2SwapBuffersReply rep;
-
-XextSimpleCheckExtension (dpy, info, dri2ExtensionName);
-
-LockDisplay(dpy);
-GetReq(DRI2SwapBuffers, req);
-req-reqType = info-codes-major_opcode;
-req-dri2ReqType = X_DRI2SwapBuffers;
-req-drawable = drawable;
-load_swap_req(req, target_msc, divisor, remainder);
-
-_XReply(dpy, (xReply *)rep, 0, xFalse);
-
-*count = vals_to_card64(rep.swap_lo, rep.swap_hi);
-
-UnlockDisplay(dpy);
-SyncHandle();
-}
-#endif
-
 #endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/dri2.h b/src/glx/dri2.h
index 179e8f9..a6fe66e 100644
--- a/src/glx/dri2.h
+++ b/src/glx/dri2.h
@@ -85,8 +85,4 @@ DRI2CopyRegion(Display * dpy, XID drawable,
XserverRegion region,
CARD32 dest, CARD32 src);
 
-extern void
-DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor,
-   CARD64 remainder, CARD64 *count);
-
 #endif
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 49a2179..ee07e60 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -737,7 +737,13 @@ dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t 
target_msc, int64_t divisor,
__dri2CopySubBuffer(pdraw, 0, 0, priv-width, priv-height,
   __DRI2_THROTTLE_SWAPBUFFER);
 } else {
-#ifdef X_DRI2SwapBuffers
+   xcb_connection_t *c = XGetXCBConnection(pdraw-psc-dpy);
+   xcb_dri2_swap_buffers_cookie_t swap_buffers_cookie;
+   xcb_dri2_swap_buffers_reply_t *swap_buffers_reply;
+   uint32_t target_msc_hi, target_msc_lo;
+   uint32_t divisor_hi, divisor_lo;
+   uint32_t remainder_hi, remainder_lo;
+
if (psc-f) {
   struct glx_context *gc = __glXGetCurrentContext();
 
@@ -748,9 +754,30 @@ dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t 
target_msc, int64_t divisor,
 
dri2Throttle(psc, priv, __DRI2_THROTTLE_SWAPBUFFER);
 
-   DRI2SwapBuffers(psc-base.dpy, pdraw-xDrawable,
-  target_msc, divisor, remainder, ret);
-#endif
+   split_counter(target_msc, target_msc_hi, target_msc_lo);
+   split_counter(divisor, divisor_hi, divisor_lo);
+   split_counter(remainder, remainder_hi, remainder_lo);
+
+   swap_buffers_cookie =
+  xcb_dri2_swap_buffers_unchecked(c, pdraw-xDrawable,
+  target_msc_hi, target_msc_lo,
+  divisor_hi, divisor_lo,
+  remainder_hi, remainder_lo);
+   /* Immediately wait on the swapbuffers reply.  If we didn't, we'd have
+* to do so some time before reusing a (non-pageflipped) backbuffer.
+* Otherwise, the new rendering could get ahead of the X Server's
+* dispatch of the swapbuffer and you'd display garbage.
+*
+* We use XSync() first to reap the invalidate events through the event
+* filter, to ensure that the next drawing doesn't use an invalidated
+* buffer.
+*/
+   XSync(pdraw-psc-dpy, False);
+   swap_buffers_reply =
+  xcb_dri2_swap_buffers_reply(c, swap_buffers_cookie, NULL);
+   ret = merge_counter(swap_buffers_reply-swap_hi,
+   swap_buffers_reply-swap_lo);
+   free(swap_buffers_reply);
 }
 
 if (psc-show_fps) {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org

Mesa (master): egl: Add support for driconf control of swapinterval.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 7e9bd2b2ed35a440a96362417100a7e43715d606
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e9bd2b2ed35a440a96362417100a7e43715d606

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 14:05:30 2012 -0700

egl: Add support for driconf control of swapinterval.

This behavior mostly matches glx_dri2.  It's slightly complicated in
comparison because EGL exposes the implementation limits in the EGL config.

Note that platform_x11 was the only one setting swap_available, so the move of
the MaxSwapInterval into it is appropriate.

Acked-by: Chad Versace chad.vers...@linux.intel.com

---

 src/egl/drivers/dri2/egl_dri2.c |9 ++--
 src/egl/drivers/dri2/egl_dri2.h |4 ++
 src/egl/drivers/dri2/platform_x11.c |   72 +--
 3 files changed, 77 insertions(+), 8 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 4b58c35..ae082f6 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -262,10 +262,8 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig 
*dri_config, int id,
if (double_buffer) {
   surface_type = ~EGL_PIXMAP_BIT;
 
-  if (dri2_dpy-swap_available) {
- conf-base.MinSwapInterval = 0;
- conf-base.MaxSwapInterval = 1000; /* XXX arbitrary value */
-  }
+  conf-base.MinSwapInterval = dri2_dpy-min_swap_interval;
+  conf-base.MaxSwapInterval = dri2_dpy-max_swap_interval;
}
 
conf-base.SurfaceType |= surface_type;
@@ -533,6 +531,9 @@ dri2_create_screen(_EGLDisplay *disp)
 if (strcmp(extensions[i]-name, __DRI2_ROBUSTNESS) == 0) {
 dri2_dpy-robustness = (__DRIrobustnessExtension *) extensions[i];
 }
+if (strcmp(extensions[i]-name, __DRI2_CONFIG_QUERY) == 0) {
+   dri2_dpy-config = (__DRI2configQueryExtension *) extensions[i];
+}
   }
} else {
   assert(dri2_dpy-swrast);
diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
index 81c1354..85c0745 100644
--- a/src/egl/drivers/dri2/egl_dri2.h
+++ b/src/egl/drivers/dri2/egl_dri2.h
@@ -100,11 +100,15 @@ struct dri2_egl_display
__DRItexBufferExtension  *tex_buffer;
__DRIimageExtension  *image;
__DRIrobustnessExtension *robustness;
+   __DRI2configQueryExtension *config;
int   fd;
 
int   own_device;
int   swap_available;
int   invalidate_available;
+   int   min_swap_interval;
+   int   max_swap_interval;
+   int   default_swap_interval;
 #ifdef HAVE_DRM_PLATFORM
struct gbm_dri_device*gbm_dri;
 #endif
diff --git a/src/egl/drivers/dri2/platform_x11.c 
b/src/egl/drivers/dri2/platform_x11.c
index a56fc78..4757ccf 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -39,6 +39,12 @@
 
 #include egl_dri2.h
 
+/* From xmlpool/options.h, user exposed so should be stable */
+#define DRI_CONF_VBLANK_NEVER 0
+#define DRI_CONF_VBLANK_DEF_INTERVAL_0 1
+#define DRI_CONF_VBLANK_DEF_INTERVAL_1 2
+#define DRI_CONF_VBLANK_ALWAYS_SYNC 3
+
 static void
 swrastCreateDrawable(struct dri2_egl_display * dri2_dpy,
  struct dri2_egl_surface * dri2_surf,
@@ -273,8 +279,21 @@ dri2_create_window_surface(_EGLDriver *drv, _EGLDisplay 
*disp,
   _EGLConfig *conf, EGLNativeWindowType window,
   const EGLint *attrib_list)
 {
-   return dri2_create_surface(drv, disp, EGL_WINDOW_BIT, conf,
- window, attrib_list);
+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
+   _EGLSurface *surf;
+
+   surf = dri2_create_surface(drv, disp, EGL_WINDOW_BIT, conf,
+  window, attrib_list);
+
+   /* When we first create the DRI2 drawable, its swap interval on the server
+* side is 1.
+*/
+   surf-SwapInterval = 1;
+
+   /* Override that with a driconf-set value. */
+   drv-API.SwapInterval(drv, disp, surf, dri2_dpy-default_swap_interval);
+
+   return surf;
 }
 
 static _EGLSurface *
@@ -794,8 +813,6 @@ dri2_swap_interval(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *surf, EGLint
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
 
-   /* XXX Check vblank_mode here? */
-
if (interval  surf-Config-MaxSwapInterval)
   interval = surf-Config-MaxSwapInterval;
else if (interval  surf-Config-MinSwapInterval)
@@ -1017,6 +1034,51 @@ dri2_initialize_x11_swrast(_EGLDriver *drv, _EGLDisplay 
*disp)
return EGL_FALSE;
 }
 
+static void
+dri2_setup_swap_interval(struct dri2_egl_display *dri2_dpy)
+{
+   GLint vblank_mode = DRI_CONF_VBLANK_DEF_INTERVAL_1;
+   int arbitrary_max_interval = 1000;
+
+   /* default behavior for no SwapBuffers support: no vblank syncing
+* either.
+ 

Mesa (master): egl: Remove bogus invalidate code.

2012-10-09 Thread Eric Anholt
Module: Mesa
Branch: master
Commit: 1e7776ca2bc59a6978d9b933d23852d47078dfa8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1e7776ca2bc59a6978d9b933d23852d47078dfa8

Author: Eric Anholt e...@anholt.net
Date:   Tue Sep 25 14:45:16 2012 -0700

egl: Remove bogus invalidate code.

The invalidate event support is a careful dance between driver and loader,
where both have to say they can handle it, and then the loader reports
invalidate events for the driver so the driver can do the optimization.

The EGL code doesn't report __DRIuseInvalidateExtension to the driver, so it
has no responsibility to call the driver's invalidate function, and the driver
is doing the glViewport hack because it assume.  This is not
the only time invalidate would need to be called (we need it *any* time an
invalidate event comes down the pipe, but we don't watch for them), so just
stop calling the driver's function.

Acked-by: Chad Versace chad.vers...@linux.intel.com

---

 src/egl/drivers/dri2/platform_x11.c |5 -
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/src/egl/drivers/dri2/platform_x11.c 
b/src/egl/drivers/dri2/platform_x11.c
index 4757ccf..936e380 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -742,11 +742,6 @@ dri2_swap_buffers_msc(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *draw,
   free(reply);
}
 
-   /* If the server doesn't send invalidate events */
-   if (dri2_dpy-invalidate_available  dri2_dpy-flush 
-   dri2_dpy-flush-base.version = 3  dri2_dpy-flush-invalidate)
-  (*dri2_dpy-flush-invalidate)(dri2_surf-dri_drawable);
-
return swap_count;
 }
 

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


Mesa (master): r600g: remove the atom variable from r600_command_buffer

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: d8ea64697bbdbc1c7987db00a55954e4cf094ad5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d8ea64697bbdbc1c7987db00a55954e4cf094ad5

Author: Marek Olšák mar...@gmail.com
Date:   Fri Oct  5 00:20:27 2012 +0200

r600g: remove the atom variable from r600_command_buffer

r600_command_buffer is not an atom.

The atoms have evolved into state slots (or groups of state slots) where
you can bind states. There is a fixed amount of atoms (state slots)
in the context.

The command buffers are nothing like that. They represent states, not state
slots.

We could probably give r600_atom a better name someday.

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/evergreen_compute.c |4 +-
 src/gallium/drivers/r600/evergreen_state.c   |4 +-
 src/gallium/drivers/r600/r600_hw_context.c   |4 +-
 src/gallium/drivers/r600/r600_pipe.h |   44 +++--
 src/gallium/drivers/r600/r600_state.c|2 +-
 src/gallium/drivers/r600/r600_state_common.c |   13 +---
 6 files changed, 34 insertions(+), 37 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_compute.c 
b/src/gallium/drivers/r600/evergreen_compute.c
index 156e89a..402d458 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -329,7 +329,7 @@ static void compute_emit_cs(struct r600_context *ctx, const 
uint *block_layout,
 * See evergreen_init_atom_start_compute_cs() in this file for the list
 * of registers initialized by the start_compute_cs_cmd atom.
 */
-   r600_emit_atom(ctx, ctx-start_compute_cs_cmd.atom);
+   r600_emit_command_buffer(ctx-cs, ctx-start_compute_cs_cmd);
 
ctx-flags |= R600_CONTEXT_CB_FLUSH;
r600_flush_emit(ctx);
@@ -625,7 +625,7 @@ void evergreen_init_atom_start_compute_cs(struct 
r600_context *ctx)
/* since all required registers are initialised in the
 * start_compute_cs_cmd atom, we can EMIT_EARLY here.
 */
-   r600_init_command_buffer(ctx, cb, 1, 256);
+   r600_init_command_buffer(cb, 256);
cb-pkt_flags = RADEON_CP_PACKET3_COMPUTE_MODE;
 
switch (ctx-family) {
diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index e35314f..a073021 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -2373,7 +2373,7 @@ static void cayman_init_atom_start_cs(struct r600_context 
*rctx)
 {
struct r600_command_buffer *cb = rctx-start_cs_cmd;
 
-   r600_init_command_buffer(rctx, cb, 0, 256);
+   r600_init_command_buffer(cb, 256);
 
/* This must be first. */
r600_store_value(cb, PKT3(PKT3_CONTEXT_CONTROL, 1, 0));
@@ -2774,7 +2774,7 @@ void evergreen_init_atom_start_cs(struct r600_context 
*rctx)
return;
}
 
-   r600_init_command_buffer(rctx, cb, 0, 256);
+   r600_init_command_buffer(cb, 256);
 
/* This must be first. */
r600_store_value(cb, PKT3(PKT3_CONTEXT_CONTROL, 1, 0));
diff --git a/src/gallium/drivers/r600/r600_hw_context.c 
b/src/gallium/drivers/r600/r600_hw_context.c
index 8245059..723039a 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -815,7 +815,7 @@ void r600_context_flush(struct r600_context *ctx, unsigned 
flags)
 {
struct radeon_winsys_cs *cs = ctx-cs;
 
-   if (cs-cdw == ctx-start_cs_cmd.atom.num_dw)
+   if (cs-cdw == ctx-start_cs_cmd.num_dw)
return;
 
ctx-timer_queries_suspended = false;
@@ -875,7 +875,7 @@ void r600_begin_new_cs(struct r600_context *ctx)
ctx-flags = 0;
 
/* Begin a new CS. */
-   r600_emit_atom(ctx, ctx-start_cs_cmd.atom);
+   r600_emit_command_buffer(ctx-cs, ctx-start_cs_cmd);
 
/* Re-emit states. */
r600_atom_dirty(ctx, ctx-alphatest_state.atom);
diff --git a/src/gallium/drivers/r600/r600_pipe.h 
b/src/gallium/drivers/r600/r600_pipe.h
index 607116f..be7b891 100644
--- a/src/gallium/drivers/r600/r600_pipe.h
+++ b/src/gallium/drivers/r600/r600_pipe.h
@@ -59,8 +59,8 @@ struct r600_atom {
 /* This is an atom containing GPU commands that never change.
  * This is supposed to be copied directly into the CS. */
 struct r600_command_buffer {
-   struct r600_atom atom;
uint32_t *buf;
+   unsigned num_dw;
unsigned max_num_dw;
unsigned pkt_flags;
 };
@@ -504,6 +504,14 @@ struct r600_context {
int last_start_instance;
 };
 
+static INLINE void r600_emit_command_buffer(struct radeon_winsys_cs *cs,
+   struct r600_command_buffer *cb)
+{
+   assert(cs-cdw + cb-num_dw = RADEON_MAX_CMDBUF_DWORDS);
+   memcpy(cs-buf + cs-cdw, cb-buf, 4 * cb-num_dw);
+   cs-cdw += cb-num_dw;
+}
+
 static INLINE void r600_emit_atom(struct r600_context *rctx, struct 

Mesa (master): r600g: inline r600_atom_dirty

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: eb65fefa4bd5e9a6f08ec599b95f9d63d11c15fa
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=eb65fefa4bd5e9a6f08ec599b95f9d63d11c15fa

Author: Marek Olšák mar...@gmail.com
Date:   Sun Oct  7 03:47:43 2012 +0200

r600g: inline r600_atom_dirty

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/evergreen_compute.c |2 +-
 src/gallium/drivers/r600/evergreen_state.c   |   12 
 src/gallium/drivers/r600/r600_blit.c |6 ++--
 src/gallium/drivers/r600/r600_hw_context.c   |   26 +-
 src/gallium/drivers/r600/r600_pipe.h |5 ---
 src/gallium/drivers/r600/r600_query.c|2 +-
 src/gallium/drivers/r600/r600_state.c|8 +++---
 src/gallium/drivers/r600/r600_state_common.c |   38 +-
 8 files changed, 47 insertions(+), 52 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_compute.c 
b/src/gallium/drivers/r600/evergreen_compute.c
index 402d458..8f055bd 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -101,7 +101,7 @@ static void evergreen_cs_set_vertex_buffer(
rctx-flags |= R600_CONTEXT_TEX_FLUSH;
state-enabled_mask |= 1  vb_index;
state-dirty_mask |= 1  vb_index;
-   r600_atom_dirty(rctx, state-atom);
+   state-atom.dirty = true;
 }
 
 const struct u_resource_vtbl r600_global_buffer_vtbl =
diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index a073021..a3b76d9 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -1588,11 +1588,11 @@ static void evergreen_set_framebuffer_state(struct 
pipe_context *ctx,
surf = (struct r600_surface*)state-cbufs[0];
if (rctx-alphatest_state.bypass != surf-alphatest_bypass) {
rctx-alphatest_state.bypass = surf-alphatest_bypass;
-   r600_atom_dirty(rctx, rctx-alphatest_state.atom);
+   rctx-alphatest_state.atom.dirty = true;
}
if (rctx-alphatest_state.cb0_export_16bpc != 
surf-export_16bpc) {
rctx-alphatest_state.cb0_export_16bpc = 
surf-export_16bpc;
-   r600_atom_dirty(rctx, rctx-alphatest_state.atom);
+   rctx-alphatest_state.atom.dirty = true;
}
}
 
@@ -1609,18 +1609,18 @@ static void evergreen_set_framebuffer_state(struct 
pipe_context *ctx,
 
if (rctx-cb_misc_state.nr_cbufs != state-nr_cbufs) {
rctx-cb_misc_state.nr_cbufs = state-nr_cbufs;
-   r600_atom_dirty(rctx, rctx-cb_misc_state.atom);
+   rctx-cb_misc_state.atom.dirty = true;
}
 
if (state-nr_cbufs == 0  rctx-alphatest_state.bypass) {
rctx-alphatest_state.bypass = false;
-   r600_atom_dirty(rctx, rctx-alphatest_state.atom);
+   rctx-alphatest_state.atom.dirty = true;
}
 
log_samples = util_logbase2(rctx-framebuffer.nr_samples);
if (rctx-chip_class == CAYMAN  rctx-db_misc_state.log_samples != 
log_samples) {
rctx-db_misc_state.log_samples = log_samples;
-   r600_atom_dirty(rctx, rctx-db_misc_state.atom);
+   rctx-db_misc_state.atom.dirty = true;
}
 
/* Calculate the CS size. */
@@ -1669,7 +1669,7 @@ static void evergreen_set_framebuffer_state(struct 
pipe_context *ctx,
rctx-framebuffer.atom.num_dw += 4;
}
 
-   r600_atom_dirty(rctx, rctx-framebuffer.atom);
+   rctx-framebuffer.atom.dirty = true;
 }
 
 #define FILL_SREG(s0x, s0y, s1x, s1y, s2x, s2y, s3x, s3y)  \
diff --git a/src/gallium/drivers/r600/r600_blit.c 
b/src/gallium/drivers/r600/r600_blit.c
index 9bbbc45..062f6d9 100644
--- a/src/gallium/drivers/r600/r600_blit.c
+++ b/src/gallium/drivers/r600/r600_blit.c
@@ -159,7 +159,7 @@ void r600_blit_decompress_depth(struct pipe_context *ctx,
rctx-db_misc_state.copy_depth = util_format_has_depth(desc);
rctx-db_misc_state.copy_stencil = util_format_has_stencil(desc);
rctx-db_misc_state.copy_sample = first_sample;
-   r600_atom_dirty(rctx, rctx-db_misc_state.atom);
+   rctx-db_misc_state.atom.dirty = true;
 
 
for (level = first_level; level = last_level; level++) {
@@ -177,7 +177,7 @@ void r600_blit_decompress_depth(struct pipe_context *ctx,
 
if (sample != rctx-db_misc_state.copy_sample) {
rctx-db_misc_state.copy_sample = 
sample;
-   r600_atom_dirty(rctx, 
rctx-db_misc_state.atom);
+   rctx-db_misc_state.atom.dirty = true;
}
 
surf_tmpl.format = texture-resource.b.b.format;
@@ -217,7 +217,7 @@ void 

Mesa (master): r600g: remove the dual_src_blend flag from the shader key

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 8bf7044ec6ab041ebeb1db9ebe378f8e1f455f4e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8bf7044ec6ab041ebeb1db9ebe378f8e1f455f4e

Author: Marek Olšák mar...@gmail.com
Date:   Fri Oct  5 03:00:38 2012 +0200

r600g: remove the dual_src_blend flag from the shader key

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/r600_pipe.h |1 -
 src/gallium/drivers/r600/r600_shader.c   |2 +-
 src/gallium/drivers/r600/r600_state_common.c |4 +++-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_pipe.h 
b/src/gallium/drivers/r600/r600_pipe.h
index 449c785..95f9ea1 100644
--- a/src/gallium/drivers/r600/r600_pipe.h
+++ b/src/gallium/drivers/r600/r600_pipe.h
@@ -268,7 +268,6 @@ struct r600_pipe_shader_selector {
 struct r600_shader_key {
unsigned color_two_side:1;
unsigned alpha_to_one:1;
-   unsigned dual_src_blend:1;
unsigned nr_cbufs:4;
 };
 
diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index daa5082..0b45d4f 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1612,7 +1612,7 @@ static int r600_shader_from_tgsi(struct r600_screen 
*rscreen,
case TGSI_PROCESSOR_FRAGMENT:
if (shader-output[i].name == TGSI_SEMANTIC_COLOR) {
/* never export more colors than the number of 
CBs */
-   if (next_pixel_base  next_pixel_base = 
key.nr_cbufs + key.dual_src_blend) {
+   if (next_pixel_base  next_pixel_base = 
key.nr_cbufs) {
/* skip export */
j--;
continue;
diff --git a/src/gallium/drivers/r600/r600_state_common.c 
b/src/gallium/drivers/r600/r600_state_common.c
index 5ba0430..c28f2f1 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -747,8 +747,10 @@ static INLINE struct r600_shader_key 
r600_shader_selector_key(struct pipe_contex
key.alpha_to_one = rctx-alpha_to_one 
   rctx-multisample_enable 
   !rctx-framebuffer.cb0_is_integer;
-   key.dual_src_blend = rctx-dual_src_blend;
key.nr_cbufs = rctx-framebuffer.state.nr_cbufs;
+   /* Dual-source blending only makes sense with nr_cbufs == 1. */
+   if (key.nr_cbufs == 1  rctx-dual_src_blend)
+   key.nr_cbufs = 2;
}
return key;
 }

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


Mesa (master): r600g: atomize blend state

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: faaba52aedf9807ced2ddfccc4133589a7bacd5f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=faaba52aedf9807ced2ddfccc4133589a7bacd5f

Author: Marek Olšák mar...@gmail.com
Date:   Fri Oct  5 02:45:29 2012 +0200

r600g: atomize blend state

This is not so trivial, because we disable blending if the dual src
blending is turned on and the number of color outputs is less than 2.
I decided to create 2 command buffers in the blend state object and just
switch between them when needed, because there are other states unrelated
to blending (like the color mask) and those shouldn't be changed
(the old code had it wrong).

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/evergreen_hw_context.c |   20 
 src/gallium/drivers/r600/evergreen_state.c  |   87 
 src/gallium/drivers/r600/r600_blit.c|2 +-
 src/gallium/drivers/r600/r600_hw_context.c  |   19 +---
 src/gallium/drivers/r600/r600_hw_context_priv.h |1 -
 src/gallium/drivers/r600/r600_pipe.c|7 --
 src/gallium/drivers/r600/r600_pipe.h|   41 ++--
 src/gallium/drivers/r600/r600_state.c   |  121 ---
 src/gallium/drivers/r600/r600_state_common.c|   60 
 9 files changed, 182 insertions(+), 176 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_hw_context.c 
b/src/gallium/drivers/r600/evergreen_hw_context.c
index 666b18c..547f4f5 100644
--- a/src/gallium/drivers/r600/evergreen_hw_context.c
+++ b/src/gallium/drivers/r600/evergreen_hw_context.c
@@ -95,17 +95,8 @@ static const struct r600_reg evergreen_context_reg_list[] = {
{R_0286E0_SPI_BARYC_CNTL, 0, 0},
{R_0286E4_SPI_PS_IN_CONTROL_2, 0, 0},
{R_0286E8_SPI_COMPUTE_INPUT_CNTL, 0, 0},
-   {R_028780_CB_BLEND0_CONTROL, 0, 0},
-   {R_028784_CB_BLEND1_CONTROL, 0, 0},
-   {R_028788_CB_BLEND2_CONTROL, 0, 0},
-   {R_02878C_CB_BLEND3_CONTROL, 0, 0},
-   {R_028790_CB_BLEND4_CONTROL, 0, 0},
-   {R_028794_CB_BLEND5_CONTROL, 0, 0},
-   {R_028798_CB_BLEND6_CONTROL, 0, 0},
-   {R_02879C_CB_BLEND7_CONTROL, 0, 0},
{R_028800_DB_DEPTH_CONTROL, 0, 0},
{R_02880C_DB_SHADER_CONTROL, 0, 0},
-   {R_028808_CB_COLOR_CONTROL, 0, 0},
{R_028814_PA_SU_SC_MODE_CNTL, 0, 0},
{R_028840_SQ_PGM_START_PS, REG_FLAG_NEED_BO, 0},
{R_028844_SQ_PGM_RESOURCES_PS, 0, 0},
@@ -120,7 +111,6 @@ static const struct r600_reg evergreen_context_reg_list[] = 
{
{R_028A48_PA_SC_MODE_CNTL_0, 0, 0},
{R_028ABC_DB_HTILE_SURFACE, 0, 0},
{R_028B54_VGT_SHADER_STAGES_EN, 0, 0},
-   {R_028B70_DB_ALPHA_TO_MASK, 0, 0},
{R_028B78_PA_SU_POLY_OFFSET_DB_FMT_CNTL, 0, 0},
{R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 0, 0},
{R_028B80_PA_SU_POLY_OFFSET_FRONT_SCALE, 0, 0},
@@ -191,16 +181,7 @@ static const struct r600_reg cayman_context_reg_list[] = {
{R_0286E0_SPI_BARYC_CNTL, 0, 0},
{R_0286E4_SPI_PS_IN_CONTROL_2, 0, 0},
{R_0286E8_SPI_COMPUTE_INPUT_CNTL, 0, 0},
-   {R_028780_CB_BLEND0_CONTROL, 0, 0},
-   {R_028784_CB_BLEND1_CONTROL, 0, 0},
-   {R_028788_CB_BLEND2_CONTROL, 0, 0},
-   {R_02878C_CB_BLEND3_CONTROL, 0, 0},
-   {R_028790_CB_BLEND4_CONTROL, 0, 0},
-   {R_028794_CB_BLEND5_CONTROL, 0, 0},
-   {R_028798_CB_BLEND6_CONTROL, 0, 0},
-   {R_02879C_CB_BLEND7_CONTROL, 0, 0},
{R_028800_DB_DEPTH_CONTROL, 0, 0},
-   {R_028808_CB_COLOR_CONTROL, 0, 0},
{R_02880C_DB_SHADER_CONTROL, 0, 0},
{R_028814_PA_SU_SC_MODE_CNTL, 0, 0},
{R_028838_SQ_DYN_GPR_RESOURCE_LIMIT_1, 0, 0},
@@ -226,7 +207,6 @@ static const struct r600_reg cayman_context_reg_list[] = {
{R_028A48_PA_SC_MODE_CNTL_0, 0, 0},
{R_028ABC_DB_HTILE_SURFACE, 0, 0},
{R_028B54_VGT_SHADER_STAGES_EN, 0, 0},
-   {R_028B70_DB_ALPHA_TO_MASK, 0, 0},
{R_028B78_PA_SU_POLY_OFFSET_DB_FMT_CNTL, 0, 0},
{R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 0, 0},
{R_028B80_PA_SU_POLY_OFFSET_FRONT_SCALE, 0, 0},
diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index a3b76d9..9aef66b 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -683,22 +683,16 @@ boolean evergreen_is_format_supported(struct pipe_screen 
*screen,
 static void *evergreen_create_blend_state_mode(struct pipe_context *ctx,
   const struct pipe_blend_state 
*state, int mode)
 {
-   struct r600_context *rctx = (struct r600_context *)ctx;
-   struct r600_pipe_blend *blend = CALLOC_STRUCT(r600_pipe_blend);
-   struct r600_pipe_state *rstate;
-   uint32_t color_control = 0, target_mask;
-   /* XXX there is more then 8 framebuffer */
-   unsigned blend_cntl[8];
+   uint32_t color_control = 0, target_mask = 0;
+   struct r600_blend_state *blend = 

Mesa (master): r600g: atomize polygon offset state

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: ab075de53baa9829780cc133e5ac06e5498a763c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab075de53baa9829780cc133e5ac06e5498a763c

Author: Marek Olšák mar...@gmail.com
Date:   Fri Oct  5 04:59:50 2012 +0200

r600g: atomize polygon offset state

POLY_OFFSET_DB_FMT_CNTL is moved to the framebuffer state, because it only
depends on the zbuffer format.

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/evergreen_hw_context.c |   10 --
 src/gallium/drivers/r600/evergreen_state.c  |  105 ---
 src/gallium/drivers/r600/r600_hw_context.c  |6 +-
 src/gallium/drivers/r600/r600_pipe.h|   14 ++-
 src/gallium/drivers/r600/r600_resource.h|1 +
 src/gallium/drivers/r600/r600_state.c   |   98 +++--
 src/gallium/drivers/r600/r600_state_common.c|   10 ++-
 7 files changed, 121 insertions(+), 123 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_hw_context.c 
b/src/gallium/drivers/r600/evergreen_hw_context.c
index 57ebbb0..35cd639 100644
--- a/src/gallium/drivers/r600/evergreen_hw_context.c
+++ b/src/gallium/drivers/r600/evergreen_hw_context.c
@@ -110,12 +110,7 @@ static const struct r600_reg evergreen_context_reg_list[] 
= {
{R_028A48_PA_SC_MODE_CNTL_0, 0, 0},
{R_028ABC_DB_HTILE_SURFACE, 0, 0},
{R_028B54_VGT_SHADER_STAGES_EN, 0, 0},
-   {R_028B78_PA_SU_POLY_OFFSET_DB_FMT_CNTL, 0, 0},
{R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 0, 0},
-   {R_028B80_PA_SU_POLY_OFFSET_FRONT_SCALE, 0, 0},
-   {R_028B84_PA_SU_POLY_OFFSET_FRONT_OFFSET, 0, 0},
-   {R_028B88_PA_SU_POLY_OFFSET_BACK_SCALE, 0, 0},
-   {R_028B8C_PA_SU_POLY_OFFSET_BACK_OFFSET, 0, 0},
{R_028C08_PA_SU_VTX_CNTL, 0, 0},
 };
 
@@ -205,12 +200,7 @@ static const struct r600_reg cayman_context_reg_list[] = {
{R_028A48_PA_SC_MODE_CNTL_0, 0, 0},
{R_028ABC_DB_HTILE_SURFACE, 0, 0},
{R_028B54_VGT_SHADER_STAGES_EN, 0, 0},
-   {R_028B78_PA_SU_POLY_OFFSET_DB_FMT_CNTL, 0, 0},
{R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 0, 0},
-   {R_028B80_PA_SU_POLY_OFFSET_FRONT_SCALE, 0, 0},
-   {R_028B84_PA_SU_POLY_OFFSET_FRONT_OFFSET, 0, 0},
-   {R_028B88_PA_SU_POLY_OFFSET_BACK_SCALE, 0, 0},
-   {R_028B8C_PA_SU_POLY_OFFSET_BACK_OFFSET, 0, 0},
{CM_R_028BE4_PA_SU_VTX_CNTL, 0, 0},
 };
 
diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index d2bbc5b..4e3f2e5 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -871,6 +871,7 @@ static void *evergreen_create_rs_state(struct pipe_context 
*ctx,
/* offset */
rs-offset_units = state-offset_units;
rs-offset_scale = state-offset_scale * 12.0f;
+   rs-offset_enable = state-offset_point || state-offset_line || 
state-offset_tri;
 
rstate-id = R600_PIPE_STATE_RASTERIZER;
tmp = S_0286D4_FLAT_SHADE_ENA(1);
@@ -1496,6 +1497,25 @@ static void evergreen_init_depth_surface(struct 
r600_context *rctx,
surf-db_depth_size = S_028058_PITCH_TILE_MAX(pitch);
surf-db_depth_slice = S_02805C_SLICE_TILE_MAX(slice);
 
+   switch (surf-base.format) {
+   case PIPE_FORMAT_Z24X8_UNORM:
+   case PIPE_FORMAT_Z24_UNORM_S8_UINT:
+   surf-pa_su_poly_offset_db_fmt_cntl =
+   S_028B78_POLY_OFFSET_NEG_NUM_DB_BITS((char)-24);
+   break;
+   case PIPE_FORMAT_Z32_FLOAT:
+   case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT:
+   surf-pa_su_poly_offset_db_fmt_cntl =
+   S_028B78_POLY_OFFSET_NEG_NUM_DB_BITS((char)-23) |
+   S_028B78_POLY_OFFSET_DB_IS_FLOAT_FMT(1);
+   break;
+   case PIPE_FORMAT_Z16_UNORM:
+   surf-pa_su_poly_offset_db_fmt_cntl =
+   S_028B78_POLY_OFFSET_NEG_NUM_DB_BITS((char)-16);
+   break;
+   default:;
+   }
+
if (rtex-surface.flags  RADEON_SURF_SBUFFER) {
uint64_t stencil_offset = rtex-surface.stencil_offset;
unsigned i, stile_split = rtex-surface.stencil_tile_split;
@@ -1606,7 +1626,10 @@ static void evergreen_set_framebuffer_state(struct 
pipe_context *ctx,
evergreen_init_depth_surface(rctx, surf);
}
 
-   evergreen_polygon_offset_update(rctx);
+   if (state-zsbuf-format != rctx-poly_offset_state.zs_format) {
+   rctx-poly_offset_state.zs_format = 
state-zsbuf-format;
+   rctx-poly_offset_state.atom.dirty = true;
+   }
}
 
if (rctx-cb_misc_state.nr_cbufs != state-nr_cbufs) {
@@ -1664,7 +1687,7 @@ static void evergreen_set_framebuffer_state(struct 
pipe_context *ctx,
 
/* ZS buffer. */
if (state-zsbuf) {
-   rctx-framebuffer.atom.num_dw += 21;
+   

Mesa (master): r600g: initialize SQ_VTX_SEMANTIC_* in the start_cs command buffer

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 30bcc5538fe3d40799d6cdf38a288b71dd275d02
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=30bcc5538fe3d40799d6cdf38a288b71dd275d02

Author: Marek Olšák mar...@gmail.com
Date:   Fri Oct  5 05:50:30 2012 +0200

r600g: initialize SQ_VTX_SEMANTIC_* in the start_cs command buffer

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/r600_hw_context.c |   32 --
 src/gallium/drivers/r600/r600_state.c  |   40 +---
 2 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_hw_context.c 
b/src/gallium/drivers/r600/r600_hw_context.c
index db64159..247f804 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -233,38 +233,6 @@ static const struct r600_reg r600_context_reg_list[] = {
{R_028C08_PA_SU_VTX_CNTL, 0, 0},
{R_028DFC_PA_SU_POLY_OFFSET_CLAMP, 0, 0},
{R_028350_SX_MISC, 0, 0},
-   {R_028380_SQ_VTX_SEMANTIC_0, 0, 0},
-   {R_028384_SQ_VTX_SEMANTIC_1, 0, 0},
-   {R_028388_SQ_VTX_SEMANTIC_2, 0, 0},
-   {R_02838C_SQ_VTX_SEMANTIC_3, 0, 0},
-   {R_028390_SQ_VTX_SEMANTIC_4, 0, 0},
-   {R_028394_SQ_VTX_SEMANTIC_5, 0, 0},
-   {R_028398_SQ_VTX_SEMANTIC_6, 0, 0},
-   {R_02839C_SQ_VTX_SEMANTIC_7, 0, 0},
-   {R_0283A0_SQ_VTX_SEMANTIC_8, 0, 0},
-   {R_0283A4_SQ_VTX_SEMANTIC_9, 0, 0},
-   {R_0283A8_SQ_VTX_SEMANTIC_10, 0, 0},
-   {R_0283AC_SQ_VTX_SEMANTIC_11, 0, 0},
-   {R_0283B0_SQ_VTX_SEMANTIC_12, 0, 0},
-   {R_0283B4_SQ_VTX_SEMANTIC_13, 0, 0},
-   {R_0283B8_SQ_VTX_SEMANTIC_14, 0, 0},
-   {R_0283BC_SQ_VTX_SEMANTIC_15, 0, 0},
-   {R_0283C0_SQ_VTX_SEMANTIC_16, 0, 0},
-   {R_0283C4_SQ_VTX_SEMANTIC_17, 0, 0},
-   {R_0283C8_SQ_VTX_SEMANTIC_18, 0, 0},
-   {R_0283CC_SQ_VTX_SEMANTIC_19, 0, 0},
-   {R_0283D0_SQ_VTX_SEMANTIC_20, 0, 0},
-   {R_0283D4_SQ_VTX_SEMANTIC_21, 0, 0},
-   {R_0283D8_SQ_VTX_SEMANTIC_22, 0, 0},
-   {R_0283DC_SQ_VTX_SEMANTIC_23, 0, 0},
-   {R_0283E0_SQ_VTX_SEMANTIC_24, 0, 0},
-   {R_0283E4_SQ_VTX_SEMANTIC_25, 0, 0},
-   {R_0283E8_SQ_VTX_SEMANTIC_26, 0, 0},
-   {R_0283EC_SQ_VTX_SEMANTIC_27, 0, 0},
-   {R_0283F0_SQ_VTX_SEMANTIC_28, 0, 0},
-   {R_0283F4_SQ_VTX_SEMANTIC_29, 0, 0},
-   {R_0283F8_SQ_VTX_SEMANTIC_30, 0, 0},
-   {R_0283FC_SQ_VTX_SEMANTIC_31, 0, 0},
{R_028614_SPI_VS_OUT_ID_0, 0, 0},
{R_028618_SPI_VS_OUT_ID_1, 0, 0},
{R_02861C_SPI_VS_OUT_ID_2, 0, 0},
diff --git a/src/gallium/drivers/r600/r600_state.c 
b/src/gallium/drivers/r600/r600_state.c
index b675d27..76af2a7 100644
--- a/src/gallium/drivers/r600/r600_state.c
+++ b/src/gallium/drivers/r600/r600_state.c
@@ -2498,10 +2498,6 @@ void r600_init_atom_start_cs(struct r600_context *rctx)
 
r600_store_context_reg(cb, R_028B20_VGT_STRMOUT_BUFFER_EN, 0);
 
-   r600_store_context_reg_seq(cb, R_028400_VGT_MAX_VTX_INDX, 2);
-   r600_store_value(cb, ~0); /* R_028400_VGT_MAX_VTX_INDX */
-   r600_store_value(cb, 0); /* R_028404_VGT_MIN_VTX_INDX */
-
r600_store_ctl_const(cb, R_03CFF0_SQ_VTX_BASE_VTX_LOC, 0);
 
r600_store_context_reg_seq(cb, R_028028_DB_STENCIL_CLEAR, 2);
@@ -2557,6 +2553,42 @@ void r600_init_atom_start_cs(struct r600_context *rctx)
r600_store_value(cb, 0); /* R_0288CC_SQ_PGM_CF_OFFSET_PS */
r600_store_value(cb, 0); /* R_0288D0_SQ_PGM_CF_OFFSET_VS */
 
+   r600_store_context_reg_seq(cb, R_028380_SQ_VTX_SEMANTIC_0, 34);
+   r600_store_value(cb, 0); /* R_028380_SQ_VTX_SEMANTIC_0 */
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0);
+   r600_store_value(cb, 0); /* R_0283FC_SQ_VTX_SEMANTIC_31 */
+   r600_store_value(cb, ~0); /* R_028400_VGT_MAX_VTX_INDX */
+   r600_store_value(cb, 0); /* R_028404_VGT_MIN_VTX_INDX */
+
r600_store_context_reg(cb, R_0288A4_SQ_PGM_RESOURCES_FS, 0);
r600_store_context_reg(cb, R_0288DC_SQ_PGM_CF_OFFSET_FS, 0);
 


Mesa (master): r600g: sort variables in r600_context

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 9a683d1bd82a2252df5a3841dc9108ba767a023a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a683d1bd82a2252df5a3841dc9108ba767a023a

Author: Marek Olšák mar...@gmail.com
Date:   Fri Oct  5 16:51:41 2012 +0200

r600g: sort variables in r600_context

Some variables have been removed from there too.

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/evergreen_state.c   |5 +-
 src/gallium/drivers/r600/r600_pipe.h |  144 --
 src/gallium/drivers/r600/r600_state.c|5 +-
 src/gallium/drivers/r600/r600_state_common.c |   18 ++--
 4 files changed, 79 insertions(+), 93 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index 872fedf..d6214fe 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -3148,6 +3148,7 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, 
struct r600_pipe_shader
boolean have_linear = FALSE, have_centroid = FALSE, have_perspective = 
FALSE;
unsigned spi_baryc_cntl, sid, tmp, idx = 0;
unsigned z_export = 0, stencil_export = 0;
+   unsigned sprite_coord_enable = rctx-rasterizer ? 
rctx-rasterizer-sprite_coord_enable : 0;
 
rstate-nregs = 0;
 
@@ -3183,7 +3184,7 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, 
struct r600_pipe_shader
}
 
if (rshader-input[i].name == TGSI_SEMANTIC_GENERIC 
-   (rctx-sprite_coord_enable  (1  
rshader-input[i].sid))) {
+   (sprite_coord_enable  (1  
rshader-input[i].sid))) {
tmp |= S_028644_PT_SPRITE_TEX(1);
}
 
@@ -3281,7 +3282,7 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, 
struct r600_pipe_shader
shader-db_shader_control = db_shader_control;
shader-ps_depth_export = z_export | stencil_export;
 
-   shader-sprite_coord_enable = rctx-sprite_coord_enable;
+   shader-sprite_coord_enable = sprite_coord_enable;
if (rctx-rasterizer)
shader-flatshade = rctx-rasterizer-flatshade;
 }
diff --git a/src/gallium/drivers/r600/r600_pipe.h 
b/src/gallium/drivers/r600/r600_pipe.h
index fc3591d..68e2f3b 100644
--- a/src/gallium/drivers/r600/r600_pipe.h
+++ b/src/gallium/drivers/r600/r600_pipe.h
@@ -370,44 +370,38 @@ struct r600_scissor_state
 
 struct r600_context {
struct pipe_context context;
+   struct r600_screen  *screen;
+   struct radeon_winsys*ws;
+   struct radeon_winsys_cs *cs;
struct blitter_context  *blitter;
+   struct u_upload_mgr *uploader;
+   struct util_slab_mempoolpool_transfers;
+
+   /* Hardware info. */
enum radeon_family  family;
enum chip_class chip_class;
boolean has_vertex_cache;
boolean keep_tiling_flags;
+   unsigneddefault_ps_gprs, default_vs_gprs;
unsignedr6xx_num_clause_temp_gprs;
+   unsignedbackend_mask;
+   unsignedmax_db; /* for OQ */
+
+   /* Miscellaneous state objects. */
void*custom_dsa_flush;
void*custom_blend_resolve;
void*custom_blend_decompress;
+   /* With rasterizer discard, there doesn't have to be a pixel shader.
+* In that case, we bind this one: */
+   void*dummy_pixel_shader;
+   /* These dummy CMASK and FMASK buffers are used to get around the R6xx 
hardware
+* bug where valid CMASK and FMASK are required to be present to avoid
+* a hardlock in certain operations but aren't actually used
+* for anything useful. */
+   struct r600_resource*dummy_fmask;
+   struct r600_resource*dummy_cmask;
 
-   struct r600_screen  *screen;
-   struct radeon_winsys*ws;
-   struct r600_pipe_state  *states[R600_PIPE_NSTATES];
-   unsignedcompute_cb_target_mask;
-   unsigneddb_shader_control;
-   unsignedpa_sc_line_stipple;
-   /* for saving when using blitter */
-   struct r600_pipe_shader_selector*ps_shader;
-   struct r600_pipe_shader_selector*vs_shader;
-   struct r600_pipe_rasterizer *rasterizer;
-   struct r600_pipe_state  spi;
-   struct pipe_query   *current_render_cond;
-   unsignedcurrent_render_cond_mode;
-   /* shader information */
-   boolean 

Mesa (master): r600g: atomize rasterizer state

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 711f3bae9d8bde9750448c23fde4a15efbcfacb5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=711f3bae9d8bde9750448c23fde4a15efbcfacb5

Author: Marek Olšák mar...@gmail.com
Date:   Fri Oct  5 19:39:14 2012 +0200

r600g: atomize rasterizer state

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/evergreen_hw_context.c |   18 
 src/gallium/drivers/r600/evergreen_state.c  |  114 ++---
 src/gallium/drivers/r600/r600_blit.c|2 +-
 src/gallium/drivers/r600/r600_hw_context.c  |   12 +--
 src/gallium/drivers/r600/r600_pipe.h|   10 +-
 src/gallium/drivers/r600/r600_state.c   |  123 ++-
 src/gallium/drivers/r600/r600_state_common.c|   20 ++--
 7 files changed, 126 insertions(+), 173 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_hw_context.c 
b/src/gallium/drivers/r600/evergreen_hw_context.c
index f9b344d..93642db 100644
--- a/src/gallium/drivers/r600/evergreen_hw_context.c
+++ b/src/gallium/drivers/r600/evergreen_hw_context.c
@@ -38,7 +38,6 @@ static const struct r600_reg evergreen_context_reg_list[] = {
{R_028014_DB_HTILE_DATA_BASE, REG_FLAG_NEED_BO, 0},
{GROUP_FORCE_NEW_BLOCK, 0, 0},
{R_028234_PA_SU_HARDWARE_SCREEN_OFFSET, 0, 0},
-   {R_028350_SX_MISC, 0, 0},
{GROUP_FORCE_NEW_BLOCK, 0, 0},
{R_02861C_SPI_VS_OUT_ID_0, 0, 0},
{R_028620_SPI_VS_OUT_ID_1, 0, 0},
@@ -88,28 +87,20 @@ static const struct r600_reg evergreen_context_reg_list[] = 
{
{R_0286C8_SPI_THREAD_GROUPING, 0, 0},
{R_0286CC_SPI_PS_IN_CONTROL_0, 0, 0},
{R_0286D0_SPI_PS_IN_CONTROL_1, 0, 0},
-   {R_0286D4_SPI_INTERP_CONTROL_0, 0, 0},
{R_0286D8_SPI_INPUT_Z, 0, 0},
{R_0286E0_SPI_BARYC_CNTL, 0, 0},
{R_0286E4_SPI_PS_IN_CONTROL_2, 0, 0},
{R_0286E8_SPI_COMPUTE_INPUT_CNTL, 0, 0},
{R_028800_DB_DEPTH_CONTROL, 0, 0},
{R_02880C_DB_SHADER_CONTROL, 0, 0},
-   {R_028814_PA_SU_SC_MODE_CNTL, 0, 0},
{R_028840_SQ_PGM_START_PS, REG_FLAG_NEED_BO, 0},
{R_028844_SQ_PGM_RESOURCES_PS, 0, 0},
{R_02884C_SQ_PGM_EXPORTS_PS, 0, 0},
{R_02885C_SQ_PGM_START_VS, REG_FLAG_NEED_BO, 0},
{R_028860_SQ_PGM_RESOURCES_VS, 0, 0},
{R_0288EC_SQ_LDS_ALLOC_PS, 0, 0},
-   {R_028A00_PA_SU_POINT_SIZE, 0, 0},
-   {R_028A04_PA_SU_POINT_MINMAX, 0, 0},
-   {R_028A08_PA_SU_LINE_CNTL, 0, 0},
-   {R_028A48_PA_SC_MODE_CNTL_0, 0, 0},
{R_028ABC_DB_HTILE_SURFACE, 0, 0},
{R_028B54_VGT_SHADER_STAGES_EN, 0, 0},
-   {R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 0, 0},
-   {R_028C08_PA_SU_VTX_CNTL, 0, 0},
 };
 
 static const struct r600_reg cayman_context_reg_list[] = {
@@ -118,7 +109,6 @@ static const struct r600_reg cayman_context_reg_list[] = {
{R_028014_DB_HTILE_DATA_BASE, REG_FLAG_NEED_BO, 0},
{GROUP_FORCE_NEW_BLOCK, 0, 0},
{R_028234_PA_SU_HARDWARE_SCREEN_OFFSET, 0, 0},
-   {R_028350_SX_MISC, 0, 0},
{GROUP_FORCE_NEW_BLOCK, 0, 0},
{R_02861C_SPI_VS_OUT_ID_0, 0, 0},
{R_028620_SPI_VS_OUT_ID_1, 0, 0},
@@ -166,14 +156,12 @@ static const struct r600_reg cayman_context_reg_list[] = {
{R_0286C8_SPI_THREAD_GROUPING, 0, 0},
{R_0286CC_SPI_PS_IN_CONTROL_0, 0, 0},
{R_0286D0_SPI_PS_IN_CONTROL_1, 0, 0},
-   {R_0286D4_SPI_INTERP_CONTROL_0, 0, 0},
{R_0286D8_SPI_INPUT_Z, 0, 0},
{R_0286E0_SPI_BARYC_CNTL, 0, 0},
{R_0286E4_SPI_PS_IN_CONTROL_2, 0, 0},
{R_0286E8_SPI_COMPUTE_INPUT_CNTL, 0, 0},
{R_028800_DB_DEPTH_CONTROL, 0, 0},
{R_02880C_DB_SHADER_CONTROL, 0, 0},
-   {R_028814_PA_SU_SC_MODE_CNTL, 0, 0},
{R_028838_SQ_DYN_GPR_RESOURCE_LIMIT_1, 0, 0},
{R_028840_SQ_PGM_START_PS, REG_FLAG_NEED_BO, 0},
{R_028844_SQ_PGM_RESOURCES_PS, 0, 0},
@@ -190,14 +178,8 @@ static const struct r600_reg cayman_context_reg_list[] = {
{R_028920_SQ_GS_VERT_ITEMSIZE_1, 0, 0},
{R_028924_SQ_GS_VERT_ITEMSIZE_2, 0, 0},
{R_028928_SQ_GS_VERT_ITEMSIZE_3, 0, 0},
-   {R_028A00_PA_SU_POINT_SIZE, 0, 0},
-   {R_028A04_PA_SU_POINT_MINMAX, 0, 0},
-   {R_028A08_PA_SU_LINE_CNTL, 0, 0},
-   {R_028A48_PA_SC_MODE_CNTL_0, 0, 0},
{R_028ABC_DB_HTILE_SURFACE, 0, 0},
{R_028B54_VGT_SHADER_STAGES_EN, 0, 0},
-   {R_028B7C_PA_SU_POLY_OFFSET_CLAMP, 0, 0},
-   {CM_R_028BE4_PA_SU_VTX_CNTL, 0, 0},
 };
 
 int evergreen_context_init(struct r600_context *ctx)
diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index d6214fe..46b2fd7 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -837,23 +837,16 @@ static void *evergreen_create_rs_state(struct 
pipe_context *ctx,
const struct pipe_rasterizer_state 
*state)
 {
struct r600_context *rctx = (struct 

Mesa (master): r600g: emit PS_PARTIAL_FLUSH at the beginning of CS

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: ae25b932456eb368ea91d167614751172edacfee
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ae25b932456eb368ea91d167614751172edacfee

Author: Marek Olšák mar...@gmail.com
Date:   Sun Oct  7 15:38:32 2012 +0200

r600g: emit PS_PARTIAL_FLUSH at the beginning of CS

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/evergreen_state.c |8 
 src/gallium/drivers/r600/r600_state.c  |4 
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index bc3aedb..2e58a28 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -2441,6 +2441,10 @@ static void cayman_init_atom_start_cs(struct 
r600_context *rctx)
r600_store_value(cb, 0x8000);
r600_store_value(cb, 0x8000);
 
+   /* We're setting config registers here. */
+   r600_store_value(cb, PKT3(PKT3_EVENT_WRITE, 0, 0));
+   r600_store_value(cb, EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | 
EVENT_INDEX(4));
+
r600_store_config_reg_seq(cb, R_008C00_SQ_CONFIG, 2);
r600_store_value(cb, S_008C00_EXPORT_SRC_C(1)); /* R_008C00_SQ_CONFIG */
/* always set the temp clauses */
@@ -2842,6 +2846,10 @@ void evergreen_init_atom_start_cs(struct r600_context 
*rctx)
r600_store_value(cb, 0x8000);
r600_store_value(cb, 0x8000);
 
+   /* We're setting config registers here. */
+   r600_store_value(cb, PKT3(PKT3_EVENT_WRITE, 0, 0));
+   r600_store_value(cb, EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | 
EVENT_INDEX(4));
+
evergreen_init_common_regs(cb, rctx-chip_class
, rctx-family, rctx-screen-info.drm_minor);
 
diff --git a/src/gallium/drivers/r600/r600_state.c 
b/src/gallium/drivers/r600/r600_state.c
index 5244143..567835f 100644
--- a/src/gallium/drivers/r600/r600_state.c
+++ b/src/gallium/drivers/r600/r600_state.c
@@ -2246,6 +2246,10 @@ void r600_init_atom_start_cs(struct r600_context *rctx)
r600_store_value(cb, 0x8000);
r600_store_value(cb, 0x8000);
 
+   /* We're setting config registers here. */
+   r600_store_value(cb, PKT3(PKT3_EVENT_WRITE, 0, 0));
+   r600_store_value(cb, EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | 
EVENT_INDEX(4));
+
family = rctx-family;
ps_prio = 0;
vs_prio = 1;

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


Mesa (master): r600g: move SQ_GPR_RESOURCE_MGMT_1 into new config_state

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 87a34131c427b40a561cfef1513b446a0eeabc39
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=87a34131c427b40a561cfef1513b446a0eeabc39

Author: Marek Olšák mar...@gmail.com
Date:   Sat Oct  6 06:18:24 2012 +0200

r600g: move SQ_GPR_RESOURCE_MGMT_1 into new config_state

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/r600_hw_context.c |   10 +-
 src/gallium/drivers/r600/r600_pipe.h   |8 +++-
 src/gallium/drivers/r600/r600_state.c  |   18 ++
 3 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_hw_context.c 
b/src/gallium/drivers/r600/r600_hw_context.c
index 884813b..97c7d6d 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -213,11 +213,6 @@ int r600_context_add_block(struct r600_context *ctx, const 
struct r600_reg *reg,
return 0;
 }
 
-/* R600/R700 configuration */
-static const struct r600_reg r600_config_reg_list[] = {
-   {R_008C04_SQ_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS | 
REG_FLAG_FLUSH_CHANGE, 0},
-};
-
 static const struct r600_reg r600_context_reg_list[] = {
{R_028D24_DB_HTILE_SURFACE, 0, 0},
{R_028614_SPI_VS_OUT_ID_0, 0, 0},
@@ -345,10 +340,6 @@ int r600_context_init(struct r600_context *ctx)
int r;
 
/* add blocks */
-   r = r600_context_add_block(ctx, r600_config_reg_list,
-  Elements(r600_config_reg_list), 
PKT3_SET_CONFIG_REG, R600_CONFIG_REG_OFFSET);
-   if (r)
-   goto out_err;
r = r600_context_add_block(ctx, r600_context_reg_list,
   Elements(r600_context_reg_list), 
PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET);
if (r)
@@ -820,6 +811,7 @@ void r600_begin_new_cs(struct r600_context *ctx)
ctx-vgt2_state.atom.dirty = true;
ctx-sample_mask.atom.dirty = true;
ctx-scissor.atom.dirty = true;
+   ctx-config_state.atom.dirty = true;
ctx-stencil_ref.atom.dirty = true;
ctx-vertex_fetch_shader.atom.dirty = true;
ctx-viewport.atom.dirty = true;
diff --git a/src/gallium/drivers/r600/r600_pipe.h 
b/src/gallium/drivers/r600/r600_pipe.h
index 1be9ff4..ef2b946 100644
--- a/src/gallium/drivers/r600/r600_pipe.h
+++ b/src/gallium/drivers/r600/r600_pipe.h
@@ -35,7 +35,7 @@
 #include r600_resource.h
 #include evergreen_compute.h
 
-#define R600_NUM_ATOMS 35
+#define R600_NUM_ATOMS 36
 
 #define R600_MAX_CONST_BUFFERS 2
 #define R600_MAX_CONST_BUFFER_SIZE 4096
@@ -143,6 +143,11 @@ struct r600_sample_mask {
uint16_t sample_mask; /* there are only 8 bits on EG, 16 bits on Cayman 
*/
 };
 
+struct r600_config_state {
+   struct r600_atom atom;
+   unsigned sq_gpr_resource_mgmt_1;
+};
+
 struct r600_stencil_ref
 {
ubyte ref_value[2];
@@ -418,6 +423,7 @@ struct r600_context {
struct r600_sample_mask sample_mask;
struct r600_scissor_state   scissor;
struct r600_seamless_cube_map   seamless_cube_map;
+   struct r600_config_stateconfig_state;
struct r600_stencil_ref_state   stencil_ref;
struct r600_vgt_state   vgt_state;
struct r600_vgt2_state  vgt2_state;
diff --git a/src/gallium/drivers/r600/r600_state.c 
b/src/gallium/drivers/r600/r600_state.c
index 1cff200..208973a 100644
--- a/src/gallium/drivers/r600/r600_state.c
+++ b/src/gallium/drivers/r600/r600_state.c
@@ -1862,6 +1862,14 @@ static void r600_emit_db_misc_state(struct r600_context 
*rctx, struct r600_atom
r600_write_context_reg(cs, R_02880C_DB_SHADER_CONTROL, 
a-db_shader_control);
 }
 
+static void r600_emit_config_state(struct r600_context *rctx, struct r600_atom 
*atom)
+{
+   struct radeon_winsys_cs *cs = rctx-cs;
+   struct r600_config_state *a = (struct r600_config_state*)atom;
+
+   r600_write_config_reg(cs, R_008C04_SQ_GPR_RESOURCE_MGMT_1, 
a-sq_gpr_resource_mgmt_1);
+}
+
 static void r600_emit_vertex_buffers(struct r600_context *rctx, struct 
r600_atom *atom)
 {
struct radeon_winsys_cs *cs = rctx-cs;
@@ -2168,6 +2176,7 @@ void r600_init_state_functions(struct r600_context *rctx)
r600_init_atom(rctx, rctx-poly_offset_state.atom, id++, 
r600_emit_polygon_offset, 6);
r600_init_atom(rctx, rctx-rasterizer_state.atom, id++, 
r600_emit_cso_state, 0);
r600_init_atom(rctx, rctx-scissor.atom, id++, 
r600_emit_scissor_state, 4);
+   r600_init_atom(rctx, rctx-config_state.atom, id++, 
r600_emit_config_state, 3);
r600_init_atom(rctx, rctx-stencil_ref.atom, id++, 
r600_emit_stencil_ref, 4);
r600_init_atom(rctx, rctx-viewport.atom, id++, 
r600_emit_viewport_state, 8);
r600_init_atom(rctx, rctx-vertex_fetch_shader.atom, id++, 
r600_emit_vertex_fetch_shader, 5);
@@ -2185,7 +2194,6 @@ void r600_init_state_functions(struct r600_context *rctx)
 /* Adjust GPR allocation on 

Mesa (master): r600g: move DB_SHADER_CONTROL into db_misc_state

2012-10-09 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: c5584e93b186bdec3d47c993db4c6461dcf6a75c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c5584e93b186bdec3d47c993db4c6461dcf6a75c

Author: Marek Olšák mar...@gmail.com
Date:   Sat Oct  6 06:05:32 2012 +0200

r600g: move DB_SHADER_CONTROL into db_misc_state

Also update the register value in more appropriate places
than r600_update_derived_state.

Reviewed-by: Jerome Glisse jgli...@redhat.com

---

 src/gallium/drivers/r600/evergreen_hw_context.c |2 -
 src/gallium/drivers/r600/evergreen_state.c  |   24 +-
 src/gallium/drivers/r600/r600_hw_context.c  |2 -
 src/gallium/drivers/r600/r600_pipe.h|6 ++--
 src/gallium/drivers/r600/r600_state.c   |   17 +++
 src/gallium/drivers/r600/r600_state_common.c|   12 +-
 6 files changed, 27 insertions(+), 36 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_hw_context.c 
b/src/gallium/drivers/r600/evergreen_hw_context.c
index f684a5a..0ca7f9e 100644
--- a/src/gallium/drivers/r600/evergreen_hw_context.c
+++ b/src/gallium/drivers/r600/evergreen_hw_context.c
@@ -91,7 +91,6 @@ static const struct r600_reg evergreen_context_reg_list[] = {
{R_0286E0_SPI_BARYC_CNTL, 0, 0},
{R_0286E4_SPI_PS_IN_CONTROL_2, 0, 0},
{R_0286E8_SPI_COMPUTE_INPUT_CNTL, 0, 0},
-   {R_02880C_DB_SHADER_CONTROL, 0, 0},
{R_028840_SQ_PGM_START_PS, REG_FLAG_NEED_BO, 0},
{R_028844_SQ_PGM_RESOURCES_PS, 0, 0},
{R_02884C_SQ_PGM_EXPORTS_PS, 0, 0},
@@ -159,7 +158,6 @@ static const struct r600_reg cayman_context_reg_list[] = {
{R_0286E0_SPI_BARYC_CNTL, 0, 0},
{R_0286E4_SPI_PS_IN_CONTROL_2, 0, 0},
{R_0286E8_SPI_COMPUTE_INPUT_CNTL, 0, 0},
-   {R_02880C_DB_SHADER_CONTROL, 0, 0},
{R_028838_SQ_DYN_GPR_RESOURCE_LIMIT_1, 0, 0},
{R_028840_SQ_PGM_START_PS, REG_FLAG_NEED_BO, 0},
{R_028844_SQ_PGM_RESOURCES_PS, 0, 0},
diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index 2e58a28..37f1392 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -1639,6 +1639,8 @@ static void evergreen_set_framebuffer_state(struct 
pipe_context *ctx,
rctx-db_misc_state.atom.dirty = true;
}
 
+   evergreen_update_db_shader_control(rctx);
+
/* Calculate the CS size. */
rctx-framebuffer.atom.num_dw = 4; /* SCISSOR */
 
@@ -2107,6 +2109,7 @@ static void evergreen_emit_db_misc_state(struct 
r600_context *rctx, struct r600_
r600_write_value(cs, db_render_control); /* R_028000_DB_RENDER_CONTROL 
*/
r600_write_value(cs, db_count_control); /* R_028004_DB_COUNT_CONTROL */
r600_write_context_reg(cs, R_02800C_DB_RENDER_OVERRIDE, 
db_render_override);
+   r600_write_context_reg(cs, R_02880C_DB_SHADER_CONTROL, 
a-db_shader_control);
 }
 
 static void evergreen_emit_vertex_buffers(struct r600_context *rctx,
@@ -2410,7 +2413,7 @@ void evergreen_init_state_functions(struct r600_context 
*rctx)
r600_init_atom(rctx, rctx-cb_misc_state.atom, id++, 
evergreen_emit_cb_misc_state, 4);
r600_init_atom(rctx, rctx-clip_misc_state.atom, id++, 
r600_emit_clip_misc_state, 6);
r600_init_atom(rctx, rctx-clip_state.atom, id++, 
evergreen_emit_clip_state, 26);
-   r600_init_atom(rctx, rctx-db_misc_state.atom, id++, 
evergreen_emit_db_misc_state, 7);
+   r600_init_atom(rctx, rctx-db_misc_state.atom, id++, 
evergreen_emit_db_misc_state, 10);
r600_init_atom(rctx, rctx-dsa_state.atom, id++, r600_emit_cso_state, 
0);
r600_init_atom(rctx, rctx-poly_offset_state.atom, id++, 
evergreen_emit_polygon_offset, 6);
r600_init_atom(rctx, rctx-rasterizer_state.atom, id++, 
r600_emit_cso_state, 0);
@@ -3367,26 +3370,19 @@ void *evergreen_create_db_flush_dsa(struct r600_context 
*rctx)
return rctx-context.create_depth_stencil_alpha_state(rctx-context, 
dsa);
 }
 
-void evergreen_update_dual_export_state(struct r600_context * rctx)
+void evergreen_update_db_shader_control(struct r600_context * rctx)
 {
bool dual_export = rctx-framebuffer.export_16bpc 
   !rctx-ps_shader-current-ps_depth_export;
 
-   unsigned db_source_format = dual_export ? V_02880C_EXPORT_DB_TWO :
- V_02880C_EXPORT_DB_FULL;
-
unsigned db_shader_control = 
rctx-ps_shader-current-db_shader_control |
S_02880C_DUAL_EXPORT_ENABLE(dual_export) |
-   S_02880C_DB_SOURCE_FORMAT(db_source_format) |
+   S_02880C_DB_SOURCE_FORMAT(dual_export ? 
V_02880C_EXPORT_DB_TWO :
+   
V_02880C_EXPORT_DB_FULL) |

S_02880C_ALPHA_TO_MASK_DISABLE(rctx-framebuffer.cb0_is_integer);
 
-   if (db_shader_control != rctx-db_shader_control) {
-