Mesa (master): docs: update FAQ
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 .
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.
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.
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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) { -