mesa: Changes to 'debian-experimental'
Android.common.mk | 4
configs/current.in | 1
configs/default | 5
configure.ac | 233 -
debian/changelog | 2
docs/GL3.txt | 12
docs/helpwanted.html | 7
docs/intro.html | 11
docs/relnotes-8.1.html | 70
docs/relnotes-9.0.html | 77
docs/utilities.html | 26
include/GL/internal/dri_interface.h | 12
src/egl/drivers/dri2/Makefile.am | 1
src/egl/drivers/dri2/egl_dri2.c | 2
src/egl/main/eglcontext.c | 2
src/gallium/auxiliary/draw/draw_context.c | 12
src/gallium/auxiliary/util/u_blitter.c | 68
src/gallium/auxiliary/util/u_blitter.h | 15
src/gallium/auxiliary/util/u_tile.c | 36
src/gallium/auxiliary/util/u_vbuf.c | 4
src/gallium/drivers/llvmpipe/lp_limits.h | 5
src/gallium/drivers/llvmpipe/lp_texture.c | 6
src/gallium/drivers/r300/compiler/radeon_opcodes.c | 7
src/gallium/drivers/r300/compiler/radeon_opcodes.h | 3
src/gallium/drivers/r300/compiler/radeon_program_alu.c | 31
src/gallium/drivers/r300/compiler/radeon_rename_regs.c | 31
src/gallium/drivers/r300/r300_tgsi_to_rc.c | 2
src/gallium/drivers/r600/evergreen_hw_context.c | 129
src/gallium/drivers/r600/evergreen_state.c | 281 +
src/gallium/drivers/r600/evergreend.h | 97
src/gallium/drivers/r600/r600_asm.c | 13
src/gallium/drivers/r600/r600_blit.c | 138
src/gallium/drivers/r600/r600_buffer.c | 5
src/gallium/drivers/r600/r600_hw_context.c | 16
src/gallium/drivers/r600/r600_pipe.c | 22
src/gallium/drivers/r600/r600_pipe.h | 40
src/gallium/drivers/r600/r600_resource.c | 2
src/gallium/drivers/r600/r600_resource.h | 35
src/gallium/drivers/r600/r600_state.c | 412 ++
src/gallium/drivers/r600/r600_state_common.c | 154
src/gallium/drivers/r600/r600_texture.c | 146
src/gallium/drivers/r600/r600d.h | 20
src/gallium/drivers/radeon/AMDGPU.h | 2
src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp | 128
src/gallium/drivers/radeon/AMDGPUAsmPrinter.h | 43
src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp | 11
src/gallium/drivers/radeon/AMDGPUISelLowering.h | 2
src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp | 14
src/gallium/drivers/radeon/AMDGPUInstrInfo.h | 8
src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp | 82
src/gallium/drivers/radeon/AMDGPUMCInstLower.h | 30
src/gallium/drivers/radeon/AMDGPUSubtarget.cpp | 12
src/gallium/drivers/radeon/AMDGPUTargetMachine.cpp | 31
src/gallium/drivers/radeon/AMDGPUTargetMachine.h | 4
src/gallium/drivers/radeon/AMDIL7XXDevice.cpp | 13
src/gallium/drivers/radeon/AMDIL7XXDevice.h | 2
src/gallium/drivers/radeon/AMDILDevice.h | 7
src/gallium/drivers/radeon/AMDILEvergreenDevice.cpp | 13
src/gallium/drivers/radeon/AMDILEvergreenDevice.h | 2
src/gallium/drivers/radeon/AMDILInstrInfo.td | 7
src/gallium/drivers/radeon/AMDILIntrinsicInfo.cpp | 2
src/gallium/drivers/radeon/AMDILIntrinsicInfo.h | 1
src/gallium/drivers/radeon/InstPrinter/AMDGPUInstPrinter.cpp | 34
src/gallium/drivers/radeon/InstPrinter/AMDGPUInstPrinter.h | 34
src/gallium/drivers/radeon/MCTargetDesc/AMDGPUAsmBackend.cpp | 80
src/gallium/drivers/radeon/MCTargetDesc/AMDGPUMCAsmInfo.cpp | 96
src/gallium/drivers/radeon/MCTargetDesc/AMDGPUMCAsmInfo.h | 30
src/gallium/drivers/radeon/MCTargetDesc/AMDGPUMCCodeEmitter.h | 59
src/gallium/drivers/radeon/MCTargetDesc/AMDGPUMCTargetDesc.cpp | 111
src/gallium/drivers/radeon/MCTargetDesc/AMDGPUMCTargetDesc.h | 51
src/gallium/drivers/radeon/MCTargetDesc/AMDILMCAsmInfo.cpp | 107
src/gallium/drivers/radeon/MCTargetDesc/AMDILMCAsmInfo.h | 30
src/gallium/drivers/radeon/MCTargetDesc/AMDILMCTargetDesc.cpp | 61
src/gallium/drivers/radeon/MCTargetDesc/AMDILMCTargetDesc.h | 35
src/gallium/drivers/radeon/MCTargetDesc/R600MCCodeEmitter.cpp | 689 ++++
src/gallium/drivers/radeon/MCTargetDesc/SIMCCodeEmitter.cpp | 303 +
src/gallium/drivers/radeon/Makefile | 3
src/gallium/drivers/radeon/Makefile.sources | 16
src/gallium/drivers/radeon/Processors.td | 2
src/gallium/drivers/radeon/R600CodeEmitter.cpp | 649 ----
src/gallium/drivers/radeon/R600Defines.h | 23
src/gallium/drivers/radeon/R600ExpandSpecialInstrs.cpp | 163 +
src/gallium/drivers/radeon/R600ISelLowering.cpp | 114
src/gallium/drivers/radeon/R600InstrInfo.cpp | 125
src/gallium/drivers/radeon/R600InstrInfo.h | 19
src/gallium/drivers/radeon/R600Instructions.td | 229 -
src/gallium/drivers/radeon/R600KernelParameters.cpp | 16
src/gallium/drivers/radeon/R600RegisterInfo.cpp | 14
src/gallium/drivers/radeon/R600RegisterInfo.h | 4
src/gallium/drivers/radeon/SIAssignInterpRegs.cpp | 4
src/gallium/drivers/radeon/SICodeEmitter.cpp | 354 --
src/gallium/drivers/radeon/SIGenRegisterInfo.pl | 9
src/gallium/drivers/radeon/SIISelLowering.cpp | 57
src/gallium/drivers/radeon/SIISelLowering.h | 4
src/gallium/drivers/radeon/SIInstrInfo.cpp | 35
src/gallium/drivers/radeon/SIInstrInfo.h | 28
src/gallium/drivers/radeon/SIInstrInfo.td | 2
src/gallium/drivers/radeon/SIInstructions.td | 48
src/gallium/drivers/radeon/SIIntrinsics.td | 3
src/gallium/drivers/radeon/SIRegisterInfo.cpp | 2
src/gallium/drivers/radeon/TargetInfo/AMDGPUTargetInfo.cpp | 26
src/gallium/drivers/radeon/TargetInfo/AMDILTargetInfo.cpp | 26
src/gallium/drivers/radeon/radeon_llvm_emit.cpp | 4
src/gallium/drivers/radeonsi/r600_resource.h | 9
src/gallium/drivers/radeonsi/r600_texture.c | 275 -
src/gallium/drivers/radeonsi/radeonsi_pipe.h | 7
src/gallium/drivers/radeonsi/radeonsi_pm4.c | 7
src/gallium/drivers/radeonsi/radeonsi_shader.c | 133
src/gallium/drivers/radeonsi/radeonsi_shader.h | 24
src/gallium/drivers/radeonsi/si_state.c | 357 +-
src/gallium/drivers/radeonsi/si_state.h | 11
src/gallium/drivers/radeonsi/si_state_draw.c | 59
src/gallium/include/state_tracker/st_api.h | 14
src/gallium/state_trackers/clover/api/memory.cpp | 8
src/gallium/state_trackers/dri/common/dri_context.c | 11
src/gallium/state_trackers/dri/common/dri_screen.c | 11
src/gallium/state_trackers/dri/drm/dri2.c | 26
src/gallium/state_trackers/wgl/stw_framebuffer.h | 2
src/gallium/state_trackers/wgl/stw_winsys.h | 2
src/gallium/targets/dri-swrast/swrast_drm_api.c | 3
src/gbm/Makefile.am | 3
src/gbm/backends/dri/gbm_dri.c | 74
src/gbm/backends/dri/gbm_driint.h | 8
src/glsl/Android.mk | 2
src/glsl/glsl_parser_extras.h | 2
src/glsl/link_uniforms.cpp | 2
src/glu/Makefile | 2
src/glx/Makefile.am | 5
src/mapi/es1api/.gitignore | 1
src/mapi/es1api/Makefile | 137
src/mapi/es1api/Makefile.am | 60
src/mapi/es1api/glesv1_cm.pc.in | 12
src/mapi/es2api/.gitignore | 4
src/mapi/es2api/Makefile | 3
src/mapi/es2api/Makefile.am | 59
src/mapi/es2api/glesv2.pc.in | 12
src/mapi/glapi/gen/Makefile.am | 16
src/mapi/glapi/gen/es_EXT.xml | 26
src/mapi/glapi/gen/glX_proto_send.py | 35
src/mapi/glapi/gen/glapi_gen.mk | 4
src/mapi/glapi/gen/gles_api.py | 5
src/mapi/vgapi/.gitignore | 1
src/mapi/vgapi/Makefile | 94
src/mapi/vgapi/Makefile.am | 62
src/mapi/vgapi/vg.pc.in | 12
src/mesa/Android.gen.mk | 8
src/mesa/Makefile.am | 34
src/mesa/SConscript | 22
src/mesa/drivers/common/meta.c | 431 ++
src/mesa/drivers/dri/common/dri_util.c | 10
src/mesa/drivers/dri/i915/i830_state.c | 10
src/mesa/drivers/dri/i915/i915_fragprog.c | 8
src/mesa/drivers/dri/i915/i915_state.c | 10
src/mesa/drivers/dri/i965/Makefile.sources | 1
src/mesa/drivers/dri/i965/brw_clear.c | 6
src/mesa/drivers/dri/i965/brw_context.c | 33
src/mesa/drivers/dri/i965/brw_context.h | 1
src/mesa/drivers/dri/i965/brw_draw.c | 43
src/mesa/drivers/dri/i965/brw_draw_upload.c | 7
src/mesa/drivers/dri/i965/brw_fallback.c | 89
src/mesa/drivers/dri/i965/brw_fs.cpp | 47
src/mesa/drivers/dri/i965/brw_fs.h | 11
src/mesa/drivers/dri/i965/brw_fs_emit.cpp | 12
src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp | 1
src/mesa/drivers/dri/i965/brw_fs_live_variables.h | 5
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 54
src/mesa/drivers/dri/i965/brw_program.h | 2
src/mesa/drivers/dri/i965/brw_queryobj.c | 72
src/mesa/drivers/dri/i965/brw_shader.cpp | 4
src/mesa/drivers/dri/i965/brw_state.h | 3
src/mesa/drivers/dri/i965/brw_state_cache.c | 4
src/mesa/drivers/dri/i965/brw_state_upload.c | 17
src/mesa/drivers/dri/i965/brw_vec4_emit.cpp | 3
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 1
src/mesa/drivers/dri/i965/brw_vs.c | 82
src/mesa/drivers/dri/i965/brw_vs.h | 3
src/mesa/drivers/dri/i965/brw_vs_emit.c | 2
src/mesa/drivers/dri/i965/brw_wm.c | 84
src/mesa/drivers/dri/i965/brw_wm.h | 1
src/mesa/drivers/dri/i965/brw_wm_sampler_state.c | 48
src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 73
src/mesa/drivers/dri/i965/gen7_sampler_state.c | 37
src/mesa/drivers/dri/i965/gen7_wm_surface_state.c | 22
src/mesa/drivers/dri/intel/intel_context.c | 42
src/mesa/drivers/dri/intel/intel_context.h | 6
src/mesa/drivers/dri/intel/intel_extensions.c | 21
src/mesa/drivers/dri/intel/intel_fbo.c | 3
src/mesa/drivers/dri/intel/intel_reg.h | 2
src/mesa/drivers/dri/intel/intel_regions.h | 1
src/mesa/drivers/dri/intel/intel_resolve_map.c | 6
src/mesa/drivers/dri/intel/intel_screen.c | 86
src/mesa/drivers/dri/intel/intel_span.c | 44
src/mesa/drivers/dri/intel/intel_state.c | 16
src/mesa/drivers/dri/intel/intel_tex.c | 2
src/mesa/drivers/dri/intel/intel_tex_validate.c | 10
src/mesa/drivers/dri/nouveau/nouveau_texture.c | 3
src/mesa/drivers/dri/r200/r200_context.c | 2
src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c | 4
src/mesa/drivers/dri/radeon/radeon_texture.c | 5
src/mesa/drivers/dri/radeon/radeon_texture.h | 1
src/mesa/drivers/dri/swrast/swrast.c | 3
src/mesa/drivers/osmesa/Makefile.am | 5
src/mesa/drivers/x11/Makefile.am | 9
src/mesa/drivers/x11/xm_api.c | 2
src/mesa/drivers/x11/xm_dd.c | 25
src/mesa/drivers/x11/xmesaP.h | 2
src/mesa/libdricore/Makefile.am | 2
src/mesa/main/.gitignore | 3
src/mesa/main/APIspec.xml | 1620 ----------
src/mesa/main/api_exec.c | 300 +
src/mesa/main/api_validate.c | 83
src/mesa/main/arrayobj.c | 2
src/mesa/main/attrib.c | 3
src/mesa/main/blend.c | 15
src/mesa/main/bufferobj.c | 54
src/mesa/main/clear.c | 11
src/mesa/main/compiler.h | 3
src/mesa/main/context.c | 12
src/mesa/main/dd.h | 18
src/mesa/main/dlopen.c | 112
src/mesa/main/dlopen.h | 83
src/mesa/main/enable.c | 303 +
src/mesa/main/es1_conversion.c | 494 ---
src/mesa/main/extensions.c | 8
src/mesa/main/fbobject.c | 276 +
src/mesa/main/ff_fragment_shader.cpp | 3
src/mesa/main/fog.c | 15
src/mesa/main/get.c | 44
src/mesa/main/getstring.c | 58
src/mesa/main/glformats.c | 63
src/mesa/main/glformats.h | 3
src/mesa/main/hint.c | 31
src/mesa/main/light.c | 19
src/mesa/main/lines.c | 17
src/mesa/main/macros.h | 194 -
src/mesa/main/matrix.c | 7
src/mesa/main/mipmap.c | 3
src/mesa/main/mtypes.h | 10
src/mesa/main/pixelstore.c | 39
src/mesa/main/points.c | 131
src/mesa/main/polygon.c | 8
src/mesa/main/queryobj.c | 37
src/mesa/main/readpix.c | 33
src/mesa/main/shaderapi.c | 92
src/mesa/main/texcompress.c | 26
src/mesa/main/texcompress.h | 2
src/mesa/main/texcompress_cpal.c | 231 +
src/mesa/main/texcompress_cpal.h | 45
src/mesa/main/texcompress_rgtc.c | 100
src/mesa/main/texcompress_rgtc.h | 32
src/mesa/main/texcompress_s3tc.c | 60
src/mesa/main/texcompress_s3tc.h | 32
src/mesa/main/texenv.c | 41
src/mesa/main/texformat.c | 42
src/mesa/main/texformat.h | 4
src/mesa/main/texgen.c | 63
src/mesa/main/texgen.h | 3
src/mesa/main/teximage.c | 1256 ++++---
src/mesa/main/teximage.h | 8
src/mesa/main/texobj.c | 42
src/mesa/main/texobj.h | 11
src/mesa/main/texpal.c | 216 -
src/mesa/main/texpal.h | 45
src/mesa/main/texparam.c | 265 +
src/mesa/main/texstorage.c | 5
src/mesa/main/uniform_query.cpp | 3
src/mesa/main/varray.c | 147
src/mesa/main/version.c | 1
src/mesa/main/version.h | 6
src/mesa/main/vtxfmt.c | 14
src/mesa/sources.mak | 4
src/mesa/state_tracker/st_cb_texture.c | 12
src/mesa/state_tracker/st_context.c | 10
src/mesa/state_tracker/st_context.h | 5
src/mesa/state_tracker/st_extensions.c | 5
src/mesa/state_tracker/st_format.c | 12
src/mesa/state_tracker/st_format.h | 3
src/mesa/state_tracker/st_manager.c | 10
src/mesa/swrast/s_lines.c | 4
src/mesa/swrast/s_texfetch.c | 96
src/mesa/swrast/s_texfilter.c | 115
src/mesa/swrast/s_texture.c | 5
src/mesa/tnl/t_vertex_generic.c | 5
src/mesa/vbo/vbo_exec_api.c | 36
284 files changed, 9192 insertions(+), 7548 deletions(-)
New commits:
commit c35e29e14f5912949cfc6e48c23ff7fe789e8bf5
Author: Timo Aaltonen <tjaalton@ubuntu.com>
Date: Fri Aug 31 13:06:56 2012 +0300
bump the version, new snapshot
diff --git a/debian/changelog b/debian/changelog
index f973a3d..786bcbc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-mesa (9.0~git20120821.c1114c61-1) UNRELEASED; urgency=low
+mesa (9.0~git20120830.2d2f1fd1-1) UNRELEASED; urgency=low
[ Julien Cristau ]
* Use xz for all binary packages not just *-dbg.
commit 2d2f1fd164218eacf2b142bc808be1f25f66e72c
Author: Ian Romanick <ian.d.romanick@intel.com>
Date: Thu Aug 30 15:22:37 2012 -0700
docs: Add some missing features to 9.0 release notes and GL3.txt
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
diff --git a/docs/GL3.txt b/docs/GL3.txt
index 1d55282..24b70a1 100644
--- a/docs/GL3.txt
+++ b/docs/GL3.txt
@@ -42,13 +42,13 @@ GLX_ARB_create_context (GLX 1.4 is required) DONE
GL 3.1:
-GLSL 1.40 needs UBOs (in progress)
-Forward compatibile context support/deprecations not started
+GLSL 1.40 DONE (i965)
+Forward compatibile context support/deprecations DONE (i965)
Instanced drawing (GL_ARB_draw_instanced) DONE (i965, gallium, swrast)
Buffer copying (GL_ARB_copy_buffer) DONE (i965, r300, r600, swrast)
Primitive restart (GL_NV_primitive_restart) DONE (i965, r600)
16 vertex texture image units DONE
-Texture buffer objs (GL_ARB_texture_buffer_object) needs GL3.1 enabling (i965)
+Texture buffer objs (GL_ARB_texture_buffer_object) DONE for OpenGL 3.1 contexts (i965)
Rectangular textures (GL_ARB_texture_rectangle) DONE (i965, r300, r600, swrast)
Uniform buffer objs (GL_ARB_uniform_buffer_object) DONE (i965)
Signed normalized textures (GL_EXT_texture_snorm) DONE (i965, r300, r600)
@@ -56,7 +56,7 @@ Signed normalized textures (GL_EXT_texture_snorm) DONE (i965, r300, r600)
GL 3.2:
-Core/compatibility profiles not started
+Core/compatibility profiles DONE
GLSL 1.50 not started
Geometry shaders (GL_ARB_geometry_shader4) partially done (Zack)
BGRA vertex order (GL_ARB_vertex_array_bgra) DONE (i965, r300, r600, swrast)
diff --git a/docs/relnotes-9.0.html b/docs/relnotes-9.0.html
index f8b993a..164c8e9 100644
--- a/docs/relnotes-9.0.html
+++ b/docs/relnotes-9.0.html
@@ -43,9 +43,11 @@ Note: some of the new features are only available with certain drivers.
<li>GL_ARB_invalidate_subdate - Currently a "no-op" implementation. This
extension is always enabled in all drivers.</li>
<li>GL_ARB_shader_bit_encoding</li>
+<li>GL_ARB_texture_buffer_object</li>
<li>GL_ARB_timer_query</li>
<li>GL_ARB_transform_feedback3</li>
<li>GL_ARB_transform_feedback_instanced</li>
+<li>GL_ARB_uniform_buffer_object</li>
<li>GL_EXT_unpack_subimage for ES 2.0</li>
<li>GL_EXT_read_format_bgra for ES 1.1 and 2.0</li>
<li>GL_EXT_texture_rg for ES 2.x</li>
commit 0791484c4233f3b474b1d9ba1af2f4608fe7e962
Author: Ian Romanick <ian.d.romanick@intel.com>
Date: Thu Aug 30 13:55:02 2012 -0700
mesa: Bump version to 9.0
Now that OpenGL 3.1 is supported by at least one driver, follow
tradition and bump the major version number.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
diff --git a/configs/default b/configs/default
index 1f167b5..85a863f 100644
--- a/configs/default
+++ b/configs/default
@@ -8,8 +8,8 @@
CONFIG_NAME = default
# Version info
-MESA_MAJOR=8
-MESA_MINOR=1
+MESA_MAJOR=9
+MESA_MINOR=0
MESA_TINY=0
MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY)
diff --git a/docs/intro.html b/docs/intro.html
index ef04f35..3f21b93 100644
--- a/docs/intro.html
+++ b/docs/intro.html
@@ -166,6 +166,17 @@ of the OpenGL specification is implemented.
</p>
+<h2>Version 9.x features</h2>
+<p>
+Version 9.x of Mesa implements the OpenGL 3.1 API.
+While the driver for Intel Sandy Bridge and Ivy Bridge is the only
+driver to support OpenGL 3.1, many developers across the open-source
+community contributed features required for OpenGL 3.1. The primary
+features added since the Mesa 8.0 release are
+GL_ARB_texture_buffer_object and GL_ARB_uniform_buffer_object.
+</p>
+
+
<h2>Version 8.x features</h2>
<p>
Version 8.x of Mesa implements the OpenGL 3.0 API.
diff --git a/docs/relnotes-8.1.html b/docs/relnotes-8.1.html
deleted file mode 100644
index 8d27c66..0000000
--- a/docs/relnotes-8.1.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>Mesa Release Notes</title>
- <link rel="stylesheet" type="text/css" href="mesa.css">
-</head>
-<body>
-
-<h1>Mesa 8.1 Release Notes / date TBD</h1>
-
-<p>
-Mesa 8.1 is a new development release.
-</p>
-<p>
-Mesa 8.1 implements the OpenGL 3.0 API, but the version reported by
-glGetString(GL_VERSION) depends on the particular driver being used.
-Some drivers don't support all the features required in OpenGL 3.0.
-</p>
-
-
-<h2>MD5 checksums</h2>
-<pre>
-tbd
-</pre>
-
-
-<h2>New features</h2>
-
-<p>
-Note: some of the new features are only available with certain drivers.
-</p>
-
-<ul>
-<li>GL_ARB_base_instance</li>
-<li>GL_ARB_blend_func_extended</li>
-<li>GL_ARB_debug_output</li>
-<li>GL_ARB_invalidate_subdate - Currently a "no-op" implementation. This
-extension is always enabled in all drivers.</li>
-<li>GL_ARB_shader_bit_encoding</li>
-<li>GL_ARB_timer_query</li>
-<li>GL_ARB_transform_feedback3</li>
-<li>GL_ARB_transform_feedback_instanced</li>
-<li>GL_EXT_unpack_subimage for ES 2.0</li>
-<li>GL_EXT_read_format_bgra for ES 1.1 and 2.0</li>
-<li>GL_EXT_texture_rg for ES 2.x</li>
-<li>GL_NV_read_buffer for ES 2.0</li>
-<li>EGL_KHR_create_context</li>
-<li>EGL_KHR_surfaceless_context - This replaces the
-EGL_KHR_surfaceless_{gles1,gles2,opengl} extensions that were never approved
-by Khronos.</li>
-<li>EGL_EXT_create_context_robustness</li>
-</ul>
-
-
-<h2>Bug fixes</h2>
-
-<p>TBD -- This list is likely incomplete.</p>
-
-
-<h2>Changes</h2>
-
-<p>
-The legacy/static Makefile system (ex: 'make linux-dri') has been removed.
-The two supported build methods are now autoconf/automake and SCons.
-</p>
-
-
-</body>
-</html>
diff --git a/docs/relnotes-9.0.html b/docs/relnotes-9.0.html
new file mode 100644
index 0000000..f8b993a
--- /dev/null
+++ b/docs/relnotes-9.0.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
+ <title>Mesa Release Notes</title>
+ <link rel="stylesheet" type="text/css" href="mesa.css">
+</head>
+<body>
+
+<h1>Mesa 9.0 Release Notes / date TBD</h1>
+
+<p>
+Mesa 9.0 is a new development release.
+People who are concerned with stability and reliability should stick
+with a previous release or wait for Mesa 9.0.1.
+</p>
+<p>
+Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by
+glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
+glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 3.1. OpenGL
+3.1 is <strong>only</strong> available if requested at context creation
+because GL_ARB_compatibility is not supported.
+</p>
+
+
+<h2>MD5 checksums</h2>
+<pre>
+tbd
+</pre>
+
+
+<h2>New features</h2>
+
+<p>
+Note: some of the new features are only available with certain drivers.
+</p>
+
+<ul>
+<li>GL_ARB_base_instance</li>
+<li>GL_ARB_blend_func_extended</li>
+<li>GL_ARB_debug_output</li>
+<li>GL_ARB_invalidate_subdate - Currently a "no-op" implementation. This
+extension is always enabled in all drivers.</li>
+<li>GL_ARB_shader_bit_encoding</li>
+<li>GL_ARB_timer_query</li>
+<li>GL_ARB_transform_feedback3</li>
+<li>GL_ARB_transform_feedback_instanced</li>
+<li>GL_EXT_unpack_subimage for ES 2.0</li>
+<li>GL_EXT_read_format_bgra for ES 1.1 and 2.0</li>
+<li>GL_EXT_texture_rg for ES 2.x</li>
+<li>GL_NV_read_buffer for ES 2.0</li>
+<li>EGL_KHR_create_context</li>
+<li>EGL_KHR_surfaceless_context - This replaces the
+EGL_KHR_surfaceless_{gles1,gles2,opengl} extensions that were never approved
+by Khronos.</li>
+<li>EGL_EXT_create_context_robustness</li>
+</ul>
+
+
+<h2>Bug fixes</h2>
+
+<p>TBD -- This list is likely incomplete.</p>
+
+
+<h2>Changes</h2>
+
+<p>
+The legacy/static Makefile system (ex: 'make linux-dri') has been removed.
+The two supported build methods are now autoconf/automake and SCons.
+</p>
+
+
+</body>
+</html>
diff --git a/src/mesa/main/version.h b/src/mesa/main/version.h
index 94a9855..5b2e85a 100644
--- a/src/mesa/main/version.h
+++ b/src/mesa/main/version.h
@@ -32,10 +32,10 @@ struct gl_context;
/* Mesa version */
-#define MESA_MAJOR 8
-#define MESA_MINOR 1
+#define MESA_MAJOR 9
+#define MESA_MINOR 0
#define MESA_PATCH 0
-#define MESA_VERSION_STRING "8.1-devel"
+#define MESA_VERSION_STRING "9.0-devel"
/* To make version comparison easy */
#define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
commit 0e470533ad0aecb58341a8935618c8cdf642bedd
Author: Marek Olšák <maraeo@gmail.com>
Date: Thu Aug 30 16:33:36 2012 +0200
r600g: enable transform feedback on Cayman
There doesn't seem to be anything wrong with it.
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index 7856e62..286c676 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -934,14 +934,12 @@ struct pipe_screen *r600_screen_create(struct radeon_winsys *ws)
switch (rscreen->chip_class) {
case R600:
case EVERGREEN:
+ case CAYMAN:
rscreen->has_streamout = rscreen->info.drm_minor >= 14;
break;
case R700:
rscreen->has_streamout = rscreen->info.drm_minor >= 17;
break;
- /* TODO: Cayman */
- default:
- rscreen->has_streamout = debug_get_bool_option("R600_STREAMOUT", FALSE);
}
if (r600_init_tiling(rscreen)) {
commit 64db3cc6ad2d52dec46119e5b80030393cb60bf4
Author: Marek Olšák <maraeo@gmail.com>
Date: Thu Aug 30 05:38:02 2012 +0200
r600g: implement MSAA for Cayman
Everything works except for blitting MSAA colorbuffers, which isn't
so trivial on Cayman. It's a rarely-used feature anyway.
diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c
index 03ed91f..44295c1 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -1492,6 +1492,7 @@ void util_blitter_custom_resolve_color(struct blitter_context *blitter,
unsigned dst_layer,
struct pipe_resource *src,
unsigned src_layer,
+ unsigned sample_mask,
void *custom_blend)
{
struct blitter_context_priv *ctx = (struct blitter_context_priv*)blitter;
@@ -1508,7 +1509,7 @@ void util_blitter_custom_resolve_color(struct blitter_context *blitter,
pipe->bind_depth_stencil_alpha_state(pipe, ctx->dsa_keep_depth_stencil);
pipe->bind_vertex_elements_state(pipe, ctx->velem_state);
pipe->bind_fs_state(pipe, blitter_get_fs_col(ctx, 1, FALSE));
- pipe->set_sample_mask(pipe, (1ull << MAX2(1, src->nr_samples)) - 1);
+ pipe->set_sample_mask(pipe, sample_mask);
memset(&surf_tmpl, 0, sizeof(surf_tmpl));
surf_tmpl.format = dst->format;
diff --git a/src/gallium/auxiliary/util/u_blitter.h b/src/gallium/auxiliary/util/u_blitter.h
index 2055fd6..6804073 100644
--- a/src/gallium/auxiliary/util/u_blitter.h
+++ b/src/gallium/auxiliary/util/u_blitter.h
@@ -329,6 +329,7 @@ void util_blitter_custom_resolve_color(struct blitter_context *blitter,
unsigned dst_layer,
struct pipe_resource *src,
unsigned src_layer,
+ unsigned sampled_mask,
void *custom_blend);
/* The functions below should be used to save currently bound constant state
diff --git a/src/gallium/drivers/r600/evergreen_hw_context.c b/src/gallium/drivers/r600/evergreen_hw_context.c
index d2f0949..b2ea7e2 100644
--- a/src/gallium/drivers/r600/evergreen_hw_context.c
+++ b/src/gallium/drivers/r600/evergreen_hw_context.c
@@ -500,6 +500,7 @@ static const struct r600_reg cayman_context_reg_list[] = {
{R_028798_CB_BLEND6_CONTROL, 0, 0},
{R_02879C_CB_BLEND7_CONTROL, 0, 0},
{R_028800_DB_DEPTH_CONTROL, 0, 0},
+ {CM_R_028804_DB_EQAA},
{R_028808_CB_COLOR_CONTROL, 0, 0},
{R_02880C_DB_SHADER_CONTROL, 0, 0},
{R_028810_PA_CL_CLIP_CNTL, 0, 0},
diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c
index 35bc391..28a83f2 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -635,9 +635,6 @@ boolean evergreen_is_format_supported(struct pipe_screen *screen,
if (rscreen->info.drm_minor < 19)
return FALSE;
- if (rscreen->chip_class != EVERGREEN)
- return FALSE;
-
switch (sample_count) {
case 2:
case 4:
@@ -1102,8 +1099,12 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte
view->tex_resource_words[5] = S_030014_BASE_ARRAY(state->u.tex.first_layer) |
S_030014_LAST_ARRAY(state->u.tex.last_layer);
if (texture->nr_samples > 1) {
+ unsigned log_samples = util_logbase2(texture->nr_samples);
+ if (rscreen->chip_class == CAYMAN) {
+ view->tex_resource_words[4] |= S_030010_LOG2_NUM_FRAGMENTS(log_samples);
+ }
/* LAST_LEVEL holds log2(nr_samples) for multisample textures */
- view->tex_resource_words[5] |= S_030014_LAST_LEVEL(util_logbase2(texture->nr_samples));
+ view->tex_resource_words[5] |= S_030014_LAST_LEVEL(log_samples);
} else {
view->tex_resource_words[4] |= S_030010_BASE_LEVEL(state->u.tex.first_level);
view->tex_resource_words[5] |= S_030014_LAST_LEVEL(state->u.tex.last_level);
@@ -1324,6 +1325,12 @@ void evergreen_init_color_surface(struct r600_context *rctx,
S_028C74_NON_DISP_TILING_ORDER(tile_type) |
S_028C74_FMASK_BANK_HEIGHT(fmask_bankh);
+ if (rctx->chip_class == CAYMAN && rtex->resource.b.b.nr_samples > 1) {
+ unsigned log_samples = util_logbase2(rtex->resource.b.b.nr_samples);
+ color_attrib |= S_028C74_NUM_SAMPLES(log_samples) |
+ S_028C74_NUM_FRAGMENTS(log_samples);
+ }
+
ntype = V_028C70_NUMBER_UNORM;
if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB)
ntype = V_028C70_NUMBER_SRGB;
@@ -1478,6 +1485,9 @@ static void evergreen_init_depth_surface(struct r600_context *rctx,
S_028040_BANK_WIDTH(bankw) |
S_028040_BANK_HEIGHT(bankh) |
S_028040_MACRO_TILE_ASPECT(macro_aspect);
+ if (rscreen->chip_class == CAYMAN && rtex->resource.b.b.nr_samples > 1) {
+ surf->db_depth_info |= S_028040_NUM_SAMPLES(util_logbase2(rtex->resource.b.b.nr_samples));
+ }
surf->db_depth_base = offset;
surf->db_depth_view = S_028008_SLICE_START(surf->base.u.tex.first_layer) |
S_028008_SLICE_MAX(surf->base.u.tex.last_layer);
@@ -1530,7 +1540,7 @@ static uint32_t evergreen_set_ms_pos(struct pipe_context *ctx, struct r600_pipe_
};
static unsigned max_dist_4x = 6;
/* 8xMSAA */
- static uint32_t eg_sample_locs_8x[] = {
+ static uint32_t sample_locs_8x[] = {
FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
FILL_SREG( 6, 0, 0, 0, -5, 3, 4, 4),
FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
@@ -1540,7 +1550,57 @@ static uint32_t evergreen_set_ms_pos(struct pipe_context *ctx, struct r600_pipe_
FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
FILL_SREG( 6, 0, 0, 0, -5, 3, 4, 4),
};
- static uint32_t cm_sample_locs_8x[] = {
+ static unsigned max_dist_8x = 8;
+ struct r600_context *rctx = (struct r600_context *)ctx;
+ unsigned i;
+
+ switch (nsample) {
+ case 2:
+ for (i = 0; i < Elements(sample_locs_2x); i++) {
+ r600_pipe_state_add_reg(rstate, R_028C1C_PA_SC_AA_SAMPLE_LOCS_0 + i*4,
+ sample_locs_2x[i]);
+ }
+ return max_dist_2x;
+ case 4:
+ for (i = 0; i < Elements(sample_locs_4x); i++) {
+ r600_pipe_state_add_reg(rstate, R_028C1C_PA_SC_AA_SAMPLE_LOCS_0 + i*4,
+ sample_locs_4x[i]);
+ }
+ return max_dist_4x;
+ case 8:
+ for (i = 0; i < Elements(sample_locs_8x); i++) {
+ r600_pipe_state_add_reg(rstate, R_028C1C_PA_SC_AA_SAMPLE_LOCS_0 + i*4,
+ sample_locs_8x[i]);
+ }
+ return max_dist_8x;
+ default:
+ R600_ERR("Invalid nr_samples %i\n", nsample);
+ return 0;
+ }
+}
+
+static uint32_t cayman_set_ms_pos(struct pipe_context *ctx, struct r600_pipe_state *rstate, int nsample)
+{
+ /* 2xMSAA
+ * There are two locations (-4, 4), (4, -4). */
+ static uint32_t sample_locs_2x[] = {
+ FILL_SREG(-4, 4, 4, -4, -4, 4, 4, -4),
+ FILL_SREG(-4, 4, 4, -4, -4, 4, 4, -4),
+ FILL_SREG(-4, 4, 4, -4, -4, 4, 4, -4),
+ FILL_SREG(-4, 4, 4, -4, -4, 4, 4, -4),
+ };
+ static unsigned max_dist_2x = 4;
+ /* 4xMSAA
+ * There are 4 locations: (-2, -2), (2, 2), (-6, 6), (6, -6). */
+ static uint32_t sample_locs_4x[] = {
+ FILL_SREG(-2, -2, 2, 2, -6, 6, 6, -6),
+ FILL_SREG(-2, -2, 2, 2, -6, 6, 6, -6),
+ FILL_SREG(-2, -2, 2, 2, -6, 6, 6, -6),
+ FILL_SREG(-2, -2, 2, 2, -6, 6, 6, -6),
+ };
+ static unsigned max_dist_4x = 6;
+ /* 8xMSAA */
+ static uint32_t sample_locs_8x[] = {
FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
@@ -1552,7 +1612,7 @@ static uint32_t evergreen_set_ms_pos(struct pipe_context *ctx, struct r600_pipe_
};
static unsigned max_dist_8x = 8;
/* 16xMSAA */
- static uint32_t cm_sample_locs_16x[] = {
+ static uint32_t sample_locs_16x[] = {
FILL_SREG(-7, -3, 7, 3, 1, -5, -5, 5),
FILL_SREG(-7, -3, 7, 3, 1, -5, -5, 5),
FILL_SREG(-7, -3, 7, 3, 1, -5, -5, 5),
@@ -1572,7 +1632,7 @@ static uint32_t evergreen_set_ms_pos(struct pipe_context *ctx, struct r600_pipe_
};
static unsigned max_dist_16x = 8;
struct r600_context *rctx = (struct r600_context *)ctx;
- uint32_t max_dist, num_regs, *sample_locs, i;
+ uint32_t max_dist, num_regs, *sample_locs;
switch (nsample) {
case 2:
@@ -1586,55 +1646,39 @@ static uint32_t evergreen_set_ms_pos(struct pipe_context *ctx, struct r600_pipe_
max_dist = max_dist_4x;
break;
case 8:
- if (rctx->chip_class == CAYMAN) {
- sample_locs = cm_sample_locs_8x;
- num_regs = Elements(cm_sample_locs_8x);
- } else {
- sample_locs = eg_sample_locs_8x;
- num_regs = Elements(eg_sample_locs_8x);
- }
+ sample_locs = sample_locs_8x;
+ num_regs = Elements(sample_locs_8x);
max_dist = max_dist_8x;
break;
case 16:
- if (rctx->chip_class == CAYMAN) {
- sample_locs = cm_sample_locs_16x;
- num_regs = Elements(cm_sample_locs_16x);
- max_dist = max_dist_16x;
- break;
- }
- /* fall through */
+ sample_locs = sample_locs_16x;
+ num_regs = Elements(sample_locs_16x);
+ max_dist = max_dist_16x;
+ break;
default:
R600_ERR("Invalid nr_samples %i\n", nsample);
return 0;
}
- /* All the regs must be initialized. Otherwise weird rendering may occur. */
- if (rctx->chip_class == CAYMAN) {
- r600_pipe_state_add_reg(rstate, CM_R_028BF8_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0, sample_locs[0]);
- r600_pipe_state_add_reg(rstate, CM_R_028C08_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0, sample_locs[1]);
- r600_pipe_state_add_reg(rstate, CM_R_028C18_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0, sample_locs[2]);
- r600_pipe_state_add_reg(rstate, CM_R_028C28_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0, sample_locs[3]);
- if (num_regs <= 8) {
- r600_pipe_state_add_reg(rstate, CM_R_028BFC_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1, sample_locs[4]);
- r600_pipe_state_add_reg(rstate, CM_R_028C0C_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1, sample_locs[5]);
- r600_pipe_state_add_reg(rstate, CM_R_028C1C_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1, sample_locs[6]);
- r600_pipe_state_add_reg(rstate, CM_R_028C2C_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1, sample_locs[7]);
- }
- if (num_regs <= 16) {
- r600_pipe_state_add_reg(rstate, CM_R_028C00_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2, sample_locs[8]);
- r600_pipe_state_add_reg(rstate, CM_R_028C10_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2, sample_locs[9]);
- r600_pipe_state_add_reg(rstate, CM_R_028C20_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2, sample_locs[10]);
- r600_pipe_state_add_reg(rstate, CM_R_028C30_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2, sample_locs[11]);
- r600_pipe_state_add_reg(rstate, CM_R_028C04_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3, sample_locs[12]);
- r600_pipe_state_add_reg(rstate, CM_R_028C14_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3, sample_locs[13]);
- r600_pipe_state_add_reg(rstate, CM_R_028C24_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3, sample_locs[14]);
- r600_pipe_state_add_reg(rstate, CM_R_028C34_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3, sample_locs[15]);
- }
- } else {
- for (i = 0; i < num_regs; i++) {
- r600_pipe_state_add_reg(rstate, R_028C1C_PA_SC_AA_SAMPLE_LOCS_0 + i*4,
- sample_locs[i]);
- }
+ r600_pipe_state_add_reg(rstate, CM_R_028BF8_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0, sample_locs[0]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C08_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0, sample_locs[1]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C18_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0, sample_locs[2]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C28_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0, sample_locs[3]);
+ if (num_regs <= 8) {
+ r600_pipe_state_add_reg(rstate, CM_R_028BFC_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1, sample_locs[4]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C0C_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1, sample_locs[5]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C1C_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1, sample_locs[6]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C2C_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1, sample_locs[7]);
+ }
+ if (num_regs <= 16) {
+ r600_pipe_state_add_reg(rstate, CM_R_028C00_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2, sample_locs[8]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C10_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2, sample_locs[9]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C20_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2, sample_locs[10]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C30_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2, sample_locs[11]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C04_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3, sample_locs[12]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C14_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3, sample_locs[13]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C24_PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3, sample_locs[14]);
+ r600_pipe_state_add_reg(rstate, CM_R_028C34_PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3, sample_locs[15]);
}
return max_dist;
}
@@ -1647,7 +1691,7 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx,
struct r600_surface *surf;
struct r600_resource *res;
struct r600_texture *rtex;
- uint32_t tl, br, i, nr_samples;
+ uint32_t tl, br, i, nr_samples, log_samples;
if (rstate == NULL)
return;
@@ -1702,7 +1746,9 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx,
r600_pipe_state_add_reg(rstate, R_028C88_CB_COLOR0_FMASK_SLICE + i * 0x3c,
surf->cb_color_fmask_slice);
- if (rtex->fmask_size && rtex->cmask_size) {
+ /* Cayman can fetch from a compressed MSAA colorbuffer,
+ * so it's pointless to track them. */
+ if (rctx->chip_class != CAYMAN && rtex->fmask_size && rtex->cmask_size) {
rctx->compressed_cb_mask |= 1 << i;
}
}
@@ -1775,27 +1821,43 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx,
nr_samples = 0;
if (nr_samples > 1) {
- unsigned log_samples = util_logbase2(nr_samples);
- unsigned max_dist, line_cntl, aa_config;
-
- max_dist = evergreen_set_ms_pos(ctx, rstate, nr_samples);
-
- line_cntl = S_028C00_LAST_PIXEL(1) |
- S_028C00_EXPAND_LINE_WIDTH(1);
- aa_config = S_028C04_MSAA_NUM_SAMPLES(log_samples) |
- S_028C04_MAX_SAMPLE_DIST(max_dist);
+ unsigned line_cntl = S_028C00_LAST_PIXEL(1) |
+ S_028C00_EXPAND_LINE_WIDTH(1);
+ log_samples = util_logbase2(nr_samples);
if (rctx->chip_class == CAYMAN) {
+ unsigned max_dist = cayman_set_ms_pos(ctx, rstate, nr_samples);
+
r600_pipe_state_add_reg(rstate, CM_R_028BDC_PA_SC_LINE_CNTL, line_cntl);
- r600_pipe_state_add_reg(rstate, CM_R_028BE0_PA_SC_AA_CONFIG, aa_config);
+ r600_pipe_state_add_reg(rstate, CM_R_028BE0_PA_SC_AA_CONFIG,
+ S_028BE0_MSAA_NUM_SAMPLES(log_samples) |
+ S_028BE0_MAX_SAMPLE_DIST(max_dist) |
+ S_028BE0_MSAA_EXPOSED_SAMPLES(log_samples));
+ r600_pipe_state_add_reg(rstate, CM_R_028804_DB_EQAA,
+ S_028804_MAX_ANCHOR_SAMPLES(log_samples) |
+ S_028804_PS_ITER_SAMPLES(log_samples) |
+ S_028804_MASK_EXPORT_NUM_SAMPLES(log_samples) |
+ S_028804_ALPHA_TO_MASK_NUM_SAMPLES(log_samples) |
+ S_028804_HIGH_QUALITY_INTERSECTIONS(1) |
+ S_028804_STATIC_ANCHOR_ASSOCIATIONS(1));
} else {
+ unsigned max_dist = evergreen_set_ms_pos(ctx, rstate, nr_samples);
+
r600_pipe_state_add_reg(rstate, R_028C00_PA_SC_LINE_CNTL, line_cntl);
- r600_pipe_state_add_reg(rstate, R_028C04_PA_SC_AA_CONFIG, aa_config);
+ r600_pipe_state_add_reg(rstate, R_028C04_PA_SC_AA_CONFIG,
+ S_028C04_MSAA_NUM_SAMPLES(log_samples) |
+ S_028C04_MAX_SAMPLE_DIST(max_dist));
}
} else {
+ log_samples = 0;
+
if (rctx->chip_class == CAYMAN) {
r600_pipe_state_add_reg(rstate, CM_R_028BDC_PA_SC_LINE_CNTL, S_028C00_LAST_PIXEL(1));
r600_pipe_state_add_reg(rstate, CM_R_028BE0_PA_SC_AA_CONFIG, 0);
+ r600_pipe_state_add_reg(rstate, CM_R_028804_DB_EQAA,
+ S_028804_HIGH_QUALITY_INTERSECTIONS(1) |
+ S_028804_STATIC_ANCHOR_ASSOCIATIONS(1));
+
} else {
r600_pipe_state_add_reg(rstate, R_028C00_PA_SC_LINE_CNTL, S_028C00_LAST_PIXEL(1));
r600_pipe_state_add_reg(rstate, R_028C04_PA_SC_AA_CONFIG, 0);
@@ -1819,6 +1881,11 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx,
rctx->alphatest_state.bypass = false;
r600_atom_dirty(rctx, &rctx->alphatest_state.atom);
}
+
+ 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);
+ }
}
static void evergreen_emit_cb_misc_state(struct r600_context *rctx, struct r600_atom *atom)
@@ -1849,6 +1916,9 @@ static void evergreen_emit_db_misc_state(struct r600_context *rctx, struct r600_
if (a->occlusion_query_enabled) {
db_count_control |= S_028004_PERFECT_ZPASS_COUNTS(1);
+ if (rctx->chip_class == CAYMAN) {
+ db_count_control |= S_028004_SAMPLE_RATE(a->log_samples);
+ }
db_render_override |= S_02800C_NOOP_CULL_DISABLE(1);
}
@@ -2214,8 +2284,6 @@ static void cayman_init_atom_start_cs(struct r600_context *rctx)
r600_store_value(cb, 0); /* CM_R_0288E8_SQ_LDS_ALLOC */
r600_store_value(cb, 0); /* R_0288EC_SQ_LDS_ALLOC_PS */
- r600_store_context_reg(cb, CM_R_028804_DB_EQAA, 0x110000);
-
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);
diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h
index 0c56aa6..91d78f8 100644
--- a/src/gallium/drivers/r600/evergreend.h
+++ b/src/gallium/drivers/r600/evergreend.h
@@ -378,6 +378,9 @@
#define S_028C74_BANK_HEIGHT(x) (((x) & 0x3) << 16)
#define S_028C74_MACRO_TILE_ASPECT(x) (((x) & 0x3) << 19)
#define S_028C74_FMASK_BANK_HEIGHT(x) (((x) & 0x3) << 22)
Reply to: