VERSION | 2 bin/.cherry-ignore | 4 debian/changelog | 6 docs/relnotes/10.2.2.html | 3 docs/relnotes/10.2.3.html | 127 +++++++++++++ include/pci_ids/i965_pci_ids.h | 36 +-- src/gallium/auxiliary/draw/draw_private.h | 2 src/gallium/drivers/freedreno/a2xx/a2xx.xml.h | 21 +- src/gallium/drivers/freedreno/a2xx/fd2_blend.c | 25 ++ src/gallium/drivers/freedreno/a3xx/a3xx.xml.h | 33 ++- src/gallium/drivers/freedreno/a3xx/fd3_blend.c | 25 ++ src/gallium/drivers/freedreno/a3xx/fd3_emit.c | 20 +- src/gallium/drivers/freedreno/a3xx/fd3_gmem.c | 40 ++-- src/gallium/drivers/freedreno/a3xx/fd3_texture.c | 4 src/gallium/drivers/freedreno/a3xx/fd3_util.c | 134 +++++++------- src/gallium/drivers/freedreno/adreno_common.xml.h | 17 - src/gallium/drivers/freedreno/adreno_pm4.xml.h | 8 src/gallium/drivers/freedreno/freedreno_resource.c | 4 src/gallium/drivers/freedreno/freedreno_screen.c | 8 src/gallium/drivers/freedreno/freedreno_texture.c | 4 src/gallium/drivers/freedreno/freedreno_util.c | 20 -- src/gallium/drivers/freedreno/freedreno_util.h | 1 src/gallium/drivers/llvmpipe/lp_texture.c | 2 src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h | 1 src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 31 +++ src/gallium/drivers/nouveau/nv50/nv50_context.c | 29 ++- src/gallium/drivers/nouveau/nv50/nv50_context.h | 1 src/gallium/drivers/nouveau/nv50/nv50_vbo.c | 29 ++- src/gallium/drivers/nouveau/nvc0/nvc0_context.c | 22 ++ src/gallium/drivers/nouveau/nvc0/nvc0_context.h | 2 src/gallium/drivers/nouveau/nvc0/nvc0_state.c | 5 src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c | 27 ++ src/gallium/drivers/nouveau/nvc0/nvc0_winsys.h | 5 src/gallium/drivers/radeon/radeon_llvm_util.c | 10 - src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c | 4 src/gallium/state_trackers/xa/xa_composite.c | 3 src/gallium/state_trackers/xa/xa_tracker.c | 7 src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c | 19 + src/mesa/drivers/dri/i965/brw_shader.cpp | 9 src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 14 - src/mesa/drivers/dri/i965/gen8_fs_generator.cpp | 2 41 files changed, 575 insertions(+), 191 deletions(-)
New commits: commit 28be2582c3ab87a8150bfed30e830e411de31582 Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Wed Jul 9 11:59:25 2014 +0200 bump changelog diff --git a/debian/changelog b/debian/changelog index 44cf9fd..7542bc1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +mesa (10.2.3-1) UNRELEASED; urgency=low + + * New upstream release. + + -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Wed, 09 Jul 2014 11:57:29 +0200 + mesa (10.2.2-1) unstable; urgency=medium [ Andreas Boll ] commit 33cb9f9503cc57c341da8ecec6c16c33fd4f0ae5 Author: Carl Worth <cwo...@cworth.org> Date: Mon Jul 7 16:12:42 2014 -0700 docs: Add release notes for the 10.2.3 release. Which is imminent. diff --git a/VERSION b/VERSION index 68e8fce..ea657e0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -10.2.2 +10.2.3 diff --git a/docs/relnotes/10.2.3.html b/docs/relnotes/10.2.3.html new file mode 100644 index 0000000..205b491 --- /dev/null +++ b/docs/relnotes/10.2.3.html @@ -0,0 +1,127 @@ +<!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> + +<div class="header"> + <h1>The Mesa 3D Graphics Library</h1> +</div> + +<iframe src="../contents.html"></iframe> +<div class="content"> + +<h1>Mesa 10.2.3 Release Notes / July 7, 2014</h1> + +<p> +Mesa 10.2.3 is a bug fix release which fixes bugs found since the 10.2.2 release. +</p> +<p> +Mesa 10.2.3 implements the OpenGL 3.3 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.3. OpenGL +3.3 is <strong>only</strong> available if requested at context creation +because compatibility contexts are not supported. +</p> + + +<h2>SHA256 checksums</h2> +<pre> +</pre> + + +<h2>New features</h2> +<p>None</p> + +<h2>Bug fixes</h2> + +<p>This list is likely incomplete.</p> + +<ul> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=76223">Bug 76223</a> - </li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=79823">Bug 79823</a> - </li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=80015">Bug 80015</a> - </li> + +</ul> + +<h2>Changes</h2> + +<p>Aaron Watry (1):</p> +<ul> + <li>radeon/llvm: Allocate space for kernel metadata operands</li> +</ul> + +<p>Carl Worth (2):</p> +<ul> + <li>docs: Add sha256 sums for the 10.2.2 release</li> + <li>cherry-ignore: Add a patch that's been rejected</li> +</ul> + +<p>Ilia Mirkin (4):</p> +<ul> + <li>nouveau: dup fd before passing it to device</li> + <li>nv50: disable dedicated ubo upload method</li> + <li>nv50: do an explicit flush on draw when there are persistent buffers</li> + <li>nvc0: add a memory barrier when there are persistent UBOs</li> +</ul> + +<p>Jasper St. Pierre (1):</p> +<ul> + <li>glxext: Send the Drawable's ID in the GLX_BufferSwapComplete event</li> +</ul> + +<p>Kenneth Graunke (3):</p> +<ul> + <li>i965: Don't emit SURFACE_STATEs for gather workarounds on Broadwell.</li> + <li>i965: Include marketing names for Broadwell GPUs.</li> + <li>i965/disasm: Fix INTEL_DEBUG=fs on Broadwell for ARB_fp applications.</li> +</ul> + +<p>Michel Dänzer (1):</p> +<ul> + <li>radeon/llvm: Use the llvm.rsq.clamped intrinsic for RSQ</li> +</ul> + +<p>Rob Clark (9):</p> +<ul> + <li>xa: fix segfault</li> + <li>freedreno: use OUT_RELOCW when buffer is written</li> + <li>freedreno/a3xx: fix depth/stencil GMEM positioning</li> + <li>freedreno/a3xx: fix depth/stencil gmem restore</li> + <li>freedreno/a3xx: fix blend opcode</li> + <li>freedreno: few caps fixes</li> + <li>freedreno/a3xx: texture fixes</li> + <li>freedreno: fix for null textures</li> + <li>freedreno/a3xx: vtx formats</li> +</ul> + +<p>Roland Scheidegger (1):</p> +<ul> + <li>draw: (trivial) fix clamping of viewport index</li> +</ul> + +<p>Takashi Iwai (1):</p> +<ul> + <li>llvmpipe: Fix zero-division in llvmpipe_texture_layout()</li> +</ul> + +<p>Thomas Hellstrom (1):</p> +<ul> + <li>st/xa: Don't close the drm fd on failure v2</li> +</ul> + +<p>Tobias Klausmann (1):</p> +<ul> + <li>nv50/ir: allow gl_ViewportIndex to work on non-provoking vertices</li> +</ul> + +</div> +</body> +</html> commit 018685822756405fc4f1a9e5581458cc4d383c48 Author: Rob Clark <robcl...@freedesktop.org> Date: Fri Jun 13 13:34:55 2014 -0400 freedreno/a3xx: vtx formats Add support for more vertex buffer formats. Signed-off-by: Rob Clark <robcl...@freedesktop.org> (cherry picked from commit 06e9536e5f5f0cc280385bcf813ecdcf6573401b) Squashed with: freedreno: update generated headers Signed-off-by: Rob Clark <robcl...@freedesktop.org> (cherry picked from commit ba6a490bbc81380fdffcb080752682b7f38b95e6) diff --git a/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h b/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h index 113fd00..d6ce26b 100644 --- a/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h +++ b/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h @@ -10,11 +10,11 @@ git clone https://github.com/freedreno/envytools.git The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno.xml ( 364 bytes, from 2013-11-30 14:47:15) - /home/robclark/src/freedreno/envytools/rnndb/freedreno_copyright.xml ( 1453 bytes, from 2013-03-31 16:51:27) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-06-02 15:21:30) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-06-02 15:21:30) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57954 bytes, from 2014-05-26 12:57:46) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 58020 bytes, from 2014-06-13 17:29:47) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-06-13 17:28:10) Copyright (C) 2013-2014 by the following authors: - Rob Clark <robdcl...@gmail.com> (robclark) diff --git a/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h b/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h index 92380eb..5878807 100644 --- a/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h +++ b/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h @@ -10,11 +10,11 @@ git clone https://github.com/freedreno/envytools.git The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno.xml ( 364 bytes, from 2013-11-30 14:47:15) - /home/robclark/src/freedreno/envytools/rnndb/freedreno_copyright.xml ( 1453 bytes, from 2013-03-31 16:51:27) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-06-02 15:21:30) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-06-02 15:21:30) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57954 bytes, from 2014-05-26 12:57:46) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 58020 bytes, from 2014-06-13 17:29:47) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-06-13 17:28:10) Copyright (C) 2013-2014 by the following authors: - Rob Clark <robdcl...@gmail.com> (robclark) @@ -988,6 +988,7 @@ static inline uint32_t A3XX_RB_COPY_CONTROL_MSAA_RESOLVE(enum a3xx_msaa_samples { return ((val) << A3XX_RB_COPY_CONTROL_MSAA_RESOLVE__SHIFT) & A3XX_RB_COPY_CONTROL_MSAA_RESOLVE__MASK; } +#define A3XX_RB_COPY_CONTROL_DEPTHCLEAR 0x00000008 #define A3XX_RB_COPY_CONTROL_MODE__MASK 0x00000070 #define A3XX_RB_COPY_CONTROL_MODE__SHIFT 4 static inline uint32_t A3XX_RB_COPY_CONTROL_MODE(enum adreno_rb_copy_control_mode val) @@ -1536,6 +1537,12 @@ static inline uint32_t A3XX_VFD_DECODE_INSTR_REGID(uint32_t val) { return ((val) << A3XX_VFD_DECODE_INSTR_REGID__SHIFT) & A3XX_VFD_DECODE_INSTR_REGID__MASK; } +#define A3XX_VFD_DECODE_INSTR_SWAP__MASK 0x00c00000 +#define A3XX_VFD_DECODE_INSTR_SWAP__SHIFT 22 +static inline uint32_t A3XX_VFD_DECODE_INSTR_SWAP(enum a3xx_color_swap val) +{ + return ((val) << A3XX_VFD_DECODE_INSTR_SWAP__SHIFT) & A3XX_VFD_DECODE_INSTR_SWAP__MASK; +} #define A3XX_VFD_DECODE_INSTR_SHIFTCNT__MASK 0x1f000000 #define A3XX_VFD_DECODE_INSTR_SHIFTCNT__SHIFT 24 static inline uint32_t A3XX_VFD_DECODE_INSTR_SHIFTCNT(uint32_t val) diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c index 4c6b5c1..878d6ff 100644 --- a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c +++ b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c @@ -327,9 +327,12 @@ fd3_emit_vertex_bufs(struct fd_ringbuffer *ring, if (vp->inputs[i].compmask) { struct pipe_resource *prsc = vbufs[i].prsc; struct fd_resource *rsc = fd_resource(prsc); - enum a3xx_vtx_fmt fmt = fd3_pipe2vtx(vbufs[i].format); + enum pipe_format pfmt = vbufs[i].format; + enum a3xx_vtx_fmt fmt = fd3_pipe2vtx(pfmt); bool switchnext = (i != last); - uint32_t fs = util_format_get_blocksize(vbufs[i].format); + uint32_t fs = util_format_get_blocksize(pfmt); + + debug_assert(fmt != ~0); OUT_PKT0(ring, REG_A3XX_VFD_FETCH(j), 2); OUT_RING(ring, A3XX_VFD_FETCH_INSTR_0_FETCHSIZE(fs - 1) | @@ -343,6 +346,7 @@ fd3_emit_vertex_bufs(struct fd_ringbuffer *ring, OUT_RING(ring, A3XX_VFD_DECODE_INSTR_CONSTFILL | A3XX_VFD_DECODE_INSTR_WRITEMASK(vp->inputs[i].compmask) | A3XX_VFD_DECODE_INSTR_FORMAT(fmt) | + A3XX_VFD_DECODE_INSTR_SWAP(fd3_pipe2swap(pfmt)) | A3XX_VFD_DECODE_INSTR_REGID(vp->inputs[i].regid) | A3XX_VFD_DECODE_INSTR_SHIFTCNT(fs) | A3XX_VFD_DECODE_INSTR_LASTCOMPVALID | diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_util.c b/src/gallium/drivers/freedreno/a3xx/fd3_util.c index 682b47d..43f30ba 100644 --- a/src/gallium/drivers/freedreno/a3xx/fd3_util.c +++ b/src/gallium/drivers/freedreno/a3xx/fd3_util.c @@ -37,70 +37,44 @@ fd3_pipe2vtx(enum pipe_format format) { switch (format) { /* 8-bit buffers. */ - case PIPE_FORMAT_A8_UNORM: - case PIPE_FORMAT_I8_UNORM: - case PIPE_FORMAT_L8_UNORM: case PIPE_FORMAT_R8_UNORM: - case PIPE_FORMAT_L8_SRGB: return VFMT_NORM_UBYTE_8; - case PIPE_FORMAT_A8_SNORM: - case PIPE_FORMAT_I8_SNORM: - case PIPE_FORMAT_L8_SNORM: case PIPE_FORMAT_R8_SNORM: return VFMT_NORM_BYTE_8; - case PIPE_FORMAT_A8_UINT: - case PIPE_FORMAT_I8_UINT: - case PIPE_FORMAT_L8_UINT: case PIPE_FORMAT_R8_UINT: return VFMT_UBYTE_8; - case PIPE_FORMAT_A8_SINT: - case PIPE_FORMAT_I8_SINT: - case PIPE_FORMAT_L8_SINT: case PIPE_FORMAT_R8_SINT: return VFMT_BYTE_8; /* 16-bit buffers. */ case PIPE_FORMAT_R16_UNORM: - case PIPE_FORMAT_A16_UNORM: - case PIPE_FORMAT_L16_UNORM: - case PIPE_FORMAT_I16_UNORM: case PIPE_FORMAT_Z16_UNORM: return VFMT_NORM_USHORT_16; case PIPE_FORMAT_R16_SNORM: - case PIPE_FORMAT_A16_SNORM: - case PIPE_FORMAT_L16_SNORM: - case PIPE_FORMAT_I16_SNORM: return VFMT_NORM_SHORT_16; case PIPE_FORMAT_R16_UINT: - case PIPE_FORMAT_A16_UINT: - case PIPE_FORMAT_L16_UINT: - case PIPE_FORMAT_I16_UINT: return VFMT_USHORT_16; case PIPE_FORMAT_R16_SINT: - case PIPE_FORMAT_A16_SINT: - case PIPE_FORMAT_L16_SINT: - case PIPE_FORMAT_I16_SINT: return VFMT_SHORT_16; - case PIPE_FORMAT_L8A8_UNORM: + case PIPE_FORMAT_R16_FLOAT: + return VFMT_FLOAT_16; + case PIPE_FORMAT_R8G8_UNORM: return VFMT_NORM_UBYTE_8_8; - case PIPE_FORMAT_L8A8_SNORM: case PIPE_FORMAT_R8G8_SNORM: return VFMT_NORM_BYTE_8_8; - case PIPE_FORMAT_L8A8_UINT: case PIPE_FORMAT_R8G8_UINT: return VFMT_UBYTE_8_8; - case PIPE_FORMAT_L8A8_SINT: case PIPE_FORMAT_R8G8_SINT: return VFMT_BYTE_8_8; @@ -121,42 +95,62 @@ fd3_pipe2vtx(enum pipe_format format) case PIPE_FORMAT_A8B8G8R8_UNORM: case PIPE_FORMAT_A8R8G8B8_UNORM: case PIPE_FORMAT_B8G8R8A8_UNORM: - case PIPE_FORMAT_B8G8R8X8_UNORM: case PIPE_FORMAT_R8G8B8A8_UNORM: - case PIPE_FORMAT_R8G8B8X8_UNORM: - case PIPE_FORMAT_X8B8G8R8_UNORM: - case PIPE_FORMAT_X8R8G8B8_UNORM: - case PIPE_FORMAT_A8B8G8R8_SRGB: - case PIPE_FORMAT_B8G8R8A8_SRGB: return VFMT_NORM_UBYTE_8_8_8_8; case PIPE_FORMAT_R8G8B8A8_SNORM: - case PIPE_FORMAT_R8G8B8X8_SNORM: return VFMT_NORM_BYTE_8_8_8_8; case PIPE_FORMAT_R8G8B8A8_UINT: - case PIPE_FORMAT_R8G8B8X8_UINT: return VFMT_UBYTE_8_8_8_8; case PIPE_FORMAT_R8G8B8A8_SINT: - case PIPE_FORMAT_R8G8B8X8_SINT: return VFMT_BYTE_8_8_8_8; -/* TODO probably need gles3 blob drivers to find the 32bit int formats: - case PIPE_FORMAT_R32_UINT: - case PIPE_FORMAT_R32_SINT: - case PIPE_FORMAT_A32_UINT: - case PIPE_FORMAT_A32_SINT: - case PIPE_FORMAT_L32_UINT: - case PIPE_FORMAT_L32_SINT: - case PIPE_FORMAT_I32_UINT: - case PIPE_FORMAT_I32_SINT: -*/ + case PIPE_FORMAT_R16G16_SSCALED: + return VFMT_SHORT_16_16; + + case PIPE_FORMAT_R16G16_FLOAT: + return VFMT_FLOAT_16_16; + + case PIPE_FORMAT_R16G16_UINT: + return VFMT_USHORT_16_16; + + case PIPE_FORMAT_R16G16_UNORM: + return VFMT_NORM_USHORT_16_16; + + case PIPE_FORMAT_R16G16_SNORM: + return VFMT_NORM_SHORT_16_16; + + case PIPE_FORMAT_R10G10B10A2_UNORM: + return VFMT_NORM_UINT_10_10_10_2; + + case PIPE_FORMAT_R10G10B10A2_SNORM: + return VFMT_NORM_INT_10_10_10_2; + + case PIPE_FORMAT_R10G10B10A2_USCALED: + return VFMT_UINT_10_10_10_2; + + case PIPE_FORMAT_R10G10B10A2_SSCALED: + return VFMT_INT_10_10_10_2; + + /* 48-bit buffers. */ + case PIPE_FORMAT_R16G16B16_FLOAT: + return VFMT_FLOAT_16_16_16; + + case PIPE_FORMAT_R16G16B16_SSCALED: + return VFMT_SHORT_16_16_16; + + case PIPE_FORMAT_R16G16B16_UINT: + return VFMT_USHORT_16_16_16; + + case PIPE_FORMAT_R16G16B16_SNORM: + return VFMT_NORM_SHORT_16_16_16; + + case PIPE_FORMAT_R16G16B16_UNORM: + return VFMT_NORM_USHORT_16_16_16; case PIPE_FORMAT_R32_FLOAT: - case PIPE_FORMAT_A32_FLOAT: - case PIPE_FORMAT_L32_FLOAT: - case PIPE_FORMAT_I32_FLOAT: case PIPE_FORMAT_Z32_FLOAT: return VFMT_FLOAT_32; @@ -177,23 +171,14 @@ fd3_pipe2vtx(enum pipe_format format) return VFMT_SHORT_16_16_16_16; case PIPE_FORMAT_R32G32_FLOAT: - case PIPE_FORMAT_L32A32_FLOAT: return VFMT_FLOAT_32_32; case PIPE_FORMAT_R32G32_FIXED: return VFMT_FIXED_32_32; case PIPE_FORMAT_R16G16B16A16_FLOAT: - case PIPE_FORMAT_R16G16B16X16_FLOAT: return VFMT_FLOAT_16_16_16_16; -/* TODO probably need gles3 blob drivers to find the 32bit int formats: - case PIPE_FORMAT_R32G32_SINT: - case PIPE_FORMAT_R32G32_UINT: - case PIPE_FORMAT_L32A32_UINT: - case PIPE_FORMAT_L32A32_SINT: -*/ - /* 96-bit buffers. */ case PIPE_FORMAT_R32G32B32_FLOAT: return VFMT_FLOAT_32_32_32; @@ -203,7 +188,6 @@ fd3_pipe2vtx(enum pipe_format format) /* 128-bit buffers. */ case PIPE_FORMAT_R32G32B32A32_FLOAT: - case PIPE_FORMAT_R32G32B32X32_FLOAT: return VFMT_FLOAT_32_32_32_32; case PIPE_FORMAT_R32G32B32A32_FIXED: @@ -214,6 +198,20 @@ fd3_pipe2vtx(enum pipe_format format) case PIPE_FORMAT_R32G32B32A32_UNORM: case PIPE_FORMAT_R32G32B32A32_SINT: case PIPE_FORMAT_R32G32B32A32_UINT: + + case PIPE_FORMAT_R32_UINT: + case PIPE_FORMAT_R32_SINT: + case PIPE_FORMAT_A32_UINT: + case PIPE_FORMAT_A32_SINT: + case PIPE_FORMAT_L32_UINT: + case PIPE_FORMAT_L32_SINT: + case PIPE_FORMAT_I32_UINT: + case PIPE_FORMAT_I32_SINT: + + case PIPE_FORMAT_R32G32_SINT: + case PIPE_FORMAT_R32G32_UINT: + case PIPE_FORMAT_L32A32_UINT: + case PIPE_FORMAT_L32A32_SINT: */ default: @@ -358,8 +356,22 @@ fd3_pipe2swap(enum pipe_format format) switch (format) { case PIPE_FORMAT_B8G8R8A8_UNORM: case PIPE_FORMAT_B8G8R8X8_UNORM: + case PIPE_FORMAT_B8G8R8A8_SRGB: + case PIPE_FORMAT_B8G8R8X8_SRGB: return WXYZ; + case PIPE_FORMAT_A8R8G8B8_UNORM: + case PIPE_FORMAT_X8R8G8B8_UNORM: + case PIPE_FORMAT_A8R8G8B8_SRGB: + case PIPE_FORMAT_X8R8G8B8_SRGB: + return ZYXW; + + case PIPE_FORMAT_A8B8G8R8_UNORM: + case PIPE_FORMAT_X8B8G8R8_UNORM: + case PIPE_FORMAT_A8B8G8R8_SRGB: + case PIPE_FORMAT_X8B8G8R8_SRGB: + return XYZW; + case PIPE_FORMAT_R8G8B8A8_UNORM: case PIPE_FORMAT_R8G8B8X8_UNORM: case PIPE_FORMAT_Z24X8_UNORM: diff --git a/src/gallium/drivers/freedreno/adreno_common.xml.h b/src/gallium/drivers/freedreno/adreno_common.xml.h index c06bec0..3317ae3 100644 --- a/src/gallium/drivers/freedreno/adreno_common.xml.h +++ b/src/gallium/drivers/freedreno/adreno_common.xml.h @@ -10,11 +10,11 @@ git clone https://github.com/freedreno/envytools.git The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno.xml ( 364 bytes, from 2013-11-30 14:47:15) - /home/robclark/src/freedreno/envytools/rnndb/freedreno_copyright.xml ( 1453 bytes, from 2013-03-31 16:51:27) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-06-02 15:21:30) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-06-02 15:21:30) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57954 bytes, from 2014-05-26 12:57:46) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 58020 bytes, from 2014-06-13 17:29:47) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-06-13 17:28:10) Copyright (C) 2013-2014 by the following authors: - Rob Clark <robdcl...@gmail.com> (robclark) diff --git a/src/gallium/drivers/freedreno/adreno_pm4.xml.h b/src/gallium/drivers/freedreno/adreno_pm4.xml.h index 8fb59a4..08f2673 100644 --- a/src/gallium/drivers/freedreno/adreno_pm4.xml.h +++ b/src/gallium/drivers/freedreno/adreno_pm4.xml.h @@ -10,11 +10,11 @@ git clone https://github.com/freedreno/envytools.git The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno.xml ( 364 bytes, from 2013-11-30 14:47:15) - /home/robclark/src/freedreno/envytools/rnndb/freedreno_copyright.xml ( 1453 bytes, from 2013-03-31 16:51:27) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-06-02 15:21:30) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-06-02 15:21:30) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57954 bytes, from 2014-05-26 12:57:46) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 58020 bytes, from 2014-06-13 17:29:47) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-06-13 17:28:10) Copyright (C) 2013-2014 by the following authors: - Rob Clark <robdcl...@gmail.com> (robclark) commit b20c82f74c44941368c681fb118338a29c2b1ea5 Author: Rob Clark <robcl...@freedesktop.org> Date: Mon Jun 9 13:34:07 2014 -0400 freedreno: fix for null textures Some apps seem to give us a null sampler/view for texture slots which come before the last used texture slot. In particular 0ad triggers this. Signed-off-by: Rob Clark <robcl...@freedesktop.org> (cherry picked from commit 6aeeb706d218be030b39e431e53ec07edb974564) diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c index c78d5e8..4c6b5c1 100644 --- a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c +++ b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c @@ -195,8 +195,10 @@ emit_textures(struct fd_ringbuffer *ring, OUT_RING(ring, CP_LOAD_STATE_1_STATE_TYPE(ST_CONSTANTS) | CP_LOAD_STATE_1_EXT_SRC_ADDR(0)); for (i = 0; i < tex->num_textures; i++) { - struct fd3_pipe_sampler_view *view = - fd3_pipe_sampler_view(tex->textures[i]); + static const struct fd3_pipe_sampler_view dummy_view = {}; + const struct fd3_pipe_sampler_view *view = tex->textures[i] ? + fd3_pipe_sampler_view(tex->textures[i]) : + &dummy_view; OUT_RING(ring, view->texconst0); OUT_RING(ring, view->texconst1); OUT_RING(ring, view->texconst2 | @@ -213,8 +215,10 @@ emit_textures(struct fd_ringbuffer *ring, OUT_RING(ring, CP_LOAD_STATE_1_STATE_TYPE(ST_CONSTANTS) | CP_LOAD_STATE_1_EXT_SRC_ADDR(0)); for (i = 0; i < tex->num_textures; i++) { - struct fd3_pipe_sampler_view *view = - fd3_pipe_sampler_view(tex->textures[i]); + static const struct fd3_pipe_sampler_view dummy_view = {}; + const struct fd3_pipe_sampler_view *view = tex->textures[i] ? + fd3_pipe_sampler_view(tex->textures[i]) : + &dummy_view; struct fd_resource *rsc = view->tex_resource; for (j = 0; j < view->mipaddrs; j++) { diff --git a/src/gallium/drivers/freedreno/freedreno_texture.c b/src/gallium/drivers/freedreno/freedreno_texture.c index 8fb9419..212e506 100644 --- a/src/gallium/drivers/freedreno/freedreno_texture.c +++ b/src/gallium/drivers/freedreno/freedreno_texture.c @@ -57,7 +57,7 @@ static void bind_sampler_states(struct fd_texture_stateobj *prog, for (i = 0; i < nr; i++) { if (hwcso[i]) - new_nr++; + new_nr = i + 1; prog->samplers[i] = hwcso[i]; prog->dirty_samplers |= (1 << i); } @@ -78,7 +78,7 @@ static void set_sampler_views(struct fd_texture_stateobj *prog, for (i = 0; i < nr; i++) { if (views[i]) - new_nr++; + new_nr = i + 1; pipe_sampler_view_reference(&prog->textures[i], views[i]); prog->dirty_samplers |= (1 << i); } commit 8f77fbb6af25d62a63114512a5b0161693df9023 Author: Rob Clark <robcl...@freedesktop.org> Date: Mon May 26 08:58:17 2014 -0400 freedreno/a3xx: texture fixes Signed-off-by: Rob Clark <robcl...@freedesktop.org> (cherry picked from commit aa78c4586d42856dcc86b143c2e72c05a1422016) Squashed with: freedreno: update generated headers Signed-off-by: Rob Clark <robcl...@freedesktop.org> (cherry picked from commit 2456be63e9cdc3c811a799caf51a56871ff6119c) diff --git a/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h b/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h index cd55c9f..113fd00 100644 --- a/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h +++ b/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h @@ -13,7 +13,7 @@ The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57856 bytes, from 2014-05-21 20:43:33) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57954 bytes, from 2014-05-26 12:57:46) - /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) Copyright (C) 2013-2014 by the following authors: diff --git a/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h b/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h index 6d9e657..92380eb 100644 --- a/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h +++ b/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h @@ -13,7 +13,7 @@ The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57856 bytes, from 2014-05-21 20:43:33) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57954 bytes, from 2014-05-26 12:57:46) - /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) Copyright (C) 2013-2014 by the following authors: @@ -197,13 +197,15 @@ enum a3xx_rb_blend_opcode { enum a3xx_tex_filter { A3XX_TEX_NEAREST = 0, A3XX_TEX_LINEAR = 1, + A3XX_TEX_ANISO = 2, }; enum a3xx_tex_clamp { A3XX_TEX_REPEAT = 0, A3XX_TEX_CLAMP_TO_EDGE = 1, A3XX_TEX_MIRROR_REPEAT = 2, - A3XX_TEX_CLAMP_NONE = 3, + A3XX_TEX_CLAMP_TO_BORDER = 3, + A3XX_TEX_MIRROR_CLAMP = 4, }; enum a3xx_tex_swiz { diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_texture.c b/src/gallium/drivers/freedreno/a3xx/fd3_texture.c index 2081775..f28919f 100644 --- a/src/gallium/drivers/freedreno/a3xx/fd3_texture.c +++ b/src/gallium/drivers/freedreno/a3xx/fd3_texture.c @@ -48,12 +48,14 @@ tex_clamp(unsigned wrap) case PIPE_TEX_WRAP_REPEAT: return A3XX_TEX_REPEAT; case PIPE_TEX_WRAP_CLAMP: - case PIPE_TEX_WRAP_CLAMP_TO_BORDER: case PIPE_TEX_WRAP_CLAMP_TO_EDGE: return A3XX_TEX_CLAMP_TO_EDGE; + case PIPE_TEX_WRAP_CLAMP_TO_BORDER: + return A3XX_TEX_CLAMP_TO_BORDER; case PIPE_TEX_WRAP_MIRROR_CLAMP: case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER: case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE: + return A3XX_TEX_MIRROR_CLAMP; case PIPE_TEX_WRAP_MIRROR_REPEAT: return A3XX_TEX_MIRROR_REPEAT; default: diff --git a/src/gallium/drivers/freedreno/adreno_common.xml.h b/src/gallium/drivers/freedreno/adreno_common.xml.h index 37b7e44..c06bec0 100644 --- a/src/gallium/drivers/freedreno/adreno_common.xml.h +++ b/src/gallium/drivers/freedreno/adreno_common.xml.h @@ -13,7 +13,7 @@ The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57856 bytes, from 2014-05-21 20:43:33) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57954 bytes, from 2014-05-26 12:57:46) - /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) Copyright (C) 2013-2014 by the following authors: diff --git a/src/gallium/drivers/freedreno/adreno_pm4.xml.h b/src/gallium/drivers/freedreno/adreno_pm4.xml.h index 3082156..8fb59a4 100644 --- a/src/gallium/drivers/freedreno/adreno_pm4.xml.h +++ b/src/gallium/drivers/freedreno/adreno_pm4.xml.h @@ -13,7 +13,7 @@ The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57856 bytes, from 2014-05-21 20:43:33) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57954 bytes, from 2014-05-26 12:57:46) - /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) Copyright (C) 2013-2014 by the following authors: commit afcb63802f733199b36f736b7f622615df4a4654 Author: Rob Clark <robcl...@freedesktop.org> Date: Sat May 24 10:07:13 2014 -0400 freedreno: few caps fixes Signed-off-by: Rob Clark <robcl...@freedesktop.org> (cherry picked from commit 286863939f9b0896db1b382c967d0d92b14729c9) diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c index 289f365..ebc134a 100644 --- a/src/gallium/drivers/freedreno/freedreno_resource.c +++ b/src/gallium/drivers/freedreno/freedreno_resource.c @@ -48,6 +48,10 @@ realloc_bo(struct fd_resource *rsc, uint32_t size) uint32_t flags = DRM_FREEDRENO_GEM_CACHE_WCOMBINE | DRM_FREEDRENO_GEM_TYPE_KMEM; /* TODO */ + /* if we start using things other than write-combine, + * be sure to check for PIPE_RESOURCE_FLAG_MAP_COHERENT + */ + if (rsc->bo) fd_bo_del(rsc->bo); diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index 1c10689..332501e 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -161,9 +161,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT: case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER: - case PIPE_CAP_SM3: case PIPE_CAP_SEAMLESS_CUBE_MAP: - case PIPE_CAP_TEXTURE_BARRIER: case PIPE_CAP_VERTEX_COLOR_UNCLAMPED: case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: case PIPE_CAP_TGSI_INSTANCEID: @@ -173,8 +171,8 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_COMPUTE: case PIPE_CAP_START_INSTANCE: case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS: - case PIPE_CAP_TEXTURE_MULTISAMPLE: case PIPE_CAP_USER_CONSTANT_BUFFERS: + case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT: return 1; case PIPE_CAP_SHADER_STENCIL_EXPORT: @@ -182,6 +180,9 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER: case PIPE_CAP_CONDITIONAL_RENDER: case PIPE_CAP_PRIMITIVE_RESTART: + case PIPE_CAP_TEXTURE_MULTISAMPLE: + case PIPE_CAP_TEXTURE_BARRIER: + case PIPE_CAP_SM3: return 0; case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT: @@ -207,7 +208,6 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_TGSI_VS_LAYER: case PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS: case PIPE_CAP_TEXTURE_GATHER_SM5: - case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT: case PIPE_CAP_FAKE_SW_MSAA: case PIPE_CAP_TEXTURE_QUERY_LOD: case PIPE_CAP_SAMPLE_SHADING: commit 8b2d1068b5f0e4b3c1bf5dce05b64bef7f63e425 Author: Rob Clark <robcl...@freedesktop.org> Date: Wed May 21 16:51:12 2014 -0400 freedreno/a3xx: fix blend opcode Seems the opcodes are slightly different from a2xx. Resync headers and move blend_func() helper into hw generation specific code. Signed-off-by: Rob Clark <robcl...@freedesktop.org> (cherry picked from commit a4d229b0992806f759ab4c71fc5712e8ab2e1c9d) diff --git a/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h b/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h index 2300c68..cd55c9f 100644 --- a/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h +++ b/src/gallium/drivers/freedreno/a2xx/a2xx.xml.h @@ -10,11 +10,11 @@ git clone https://github.com/freedreno/envytools.git The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno.xml ( 364 bytes, from 2013-11-30 14:47:15) - /home/robclark/src/freedreno/envytools/rnndb/freedreno_copyright.xml ( 1453 bytes, from 2013-03-31 16:51:27) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32580 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 10186 bytes, from 2014-05-16 11:51:57) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57830 bytes, from 2014-05-20 22:44:52) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26293 bytes, from 2014-05-16 11:51:57) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57856 bytes, from 2014-05-21 20:43:33) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) Copyright (C) 2013-2014 by the following authors: - Rob Clark <robdcl...@gmail.com> (robclark) @@ -203,6 +203,15 @@ enum a2xx_rb_copy_sample_select { SAMPLE_0123 = 6, }; +enum a2xx_rb_blend_opcode { + BLEND_DST_PLUS_SRC = 0, + BLEND_SRC_MINUS_DST = 1, + BLEND_MIN_DST_SRC = 2, + BLEND_MAX_DST_SRC = 3, + BLEND_DST_MINUS_SRC = 4, + BLEND_DST_PLUS_SRC_BIAS = 5, +}; + enum adreno_mmu_clnt_beh { BEH_NEVR = 0, BEH_TRAN_RNG = 1, @@ -996,7 +1005,7 @@ static inline uint32_t A2XX_RB_BLEND_CONTROL_COLOR_SRCBLEND(enum adreno_rb_blend } #define A2XX_RB_BLEND_CONTROL_COLOR_COMB_FCN__MASK 0x000000e0 #define A2XX_RB_BLEND_CONTROL_COLOR_COMB_FCN__SHIFT 5 -static inline uint32_t A2XX_RB_BLEND_CONTROL_COLOR_COMB_FCN(enum adreno_rb_blend_opcode val) +static inline uint32_t A2XX_RB_BLEND_CONTROL_COLOR_COMB_FCN(enum a2xx_rb_blend_opcode val) { return ((val) << A2XX_RB_BLEND_CONTROL_COLOR_COMB_FCN__SHIFT) & A2XX_RB_BLEND_CONTROL_COLOR_COMB_FCN__MASK; } @@ -1014,7 +1023,7 @@ static inline uint32_t A2XX_RB_BLEND_CONTROL_ALPHA_SRCBLEND(enum adreno_rb_blend } #define A2XX_RB_BLEND_CONTROL_ALPHA_COMB_FCN__MASK 0x00e00000 #define A2XX_RB_BLEND_CONTROL_ALPHA_COMB_FCN__SHIFT 21 -static inline uint32_t A2XX_RB_BLEND_CONTROL_ALPHA_COMB_FCN(enum adreno_rb_blend_opcode val) +static inline uint32_t A2XX_RB_BLEND_CONTROL_ALPHA_COMB_FCN(enum a2xx_rb_blend_opcode val) { return ((val) << A2XX_RB_BLEND_CONTROL_ALPHA_COMB_FCN__SHIFT) & A2XX_RB_BLEND_CONTROL_ALPHA_COMB_FCN__MASK; } diff --git a/src/gallium/drivers/freedreno/a2xx/fd2_blend.c b/src/gallium/drivers/freedreno/a2xx/fd2_blend.c index d0b324d..b3cb239 100644 --- a/src/gallium/drivers/freedreno/a2xx/fd2_blend.c +++ b/src/gallium/drivers/freedreno/a2xx/fd2_blend.c @@ -34,6 +34,27 @@ #include "fd2_context.h" #include "fd2_util.h" + +static enum a2xx_rb_blend_opcode +blend_func(unsigned func) +{ + switch (func) { + case PIPE_BLEND_ADD: + return BLEND_DST_PLUS_SRC; + case PIPE_BLEND_MIN: + return BLEND_MIN_DST_SRC; + case PIPE_BLEND_MAX: + return BLEND_MAX_DST_SRC; + case PIPE_BLEND_SUBTRACT: + return BLEND_SRC_MINUS_DST; + case PIPE_BLEND_REVERSE_SUBTRACT: + return BLEND_DST_MINUS_SRC; + default: + DBG("invalid blend func: %x", func); + return 0; + } +} + void * fd2_blend_state_create(struct pipe_context *pctx, const struct pipe_blend_state *cso) @@ -61,10 +82,10 @@ fd2_blend_state_create(struct pipe_context *pctx, so->rb_blendcontrol = A2XX_RB_BLEND_CONTROL_COLOR_SRCBLEND(fd_blend_factor(rt->rgb_src_factor)) | - A2XX_RB_BLEND_CONTROL_COLOR_COMB_FCN(fd_blend_func(rt->rgb_func)) | + A2XX_RB_BLEND_CONTROL_COLOR_COMB_FCN(blend_func(rt->rgb_func)) | A2XX_RB_BLEND_CONTROL_COLOR_DESTBLEND(fd_blend_factor(rt->rgb_dst_factor)) | A2XX_RB_BLEND_CONTROL_ALPHA_SRCBLEND(fd_blend_factor(rt->alpha_src_factor)) | - A2XX_RB_BLEND_CONTROL_ALPHA_COMB_FCN(fd_blend_func(rt->alpha_func)) | + A2XX_RB_BLEND_CONTROL_ALPHA_COMB_FCN(blend_func(rt->alpha_func)) | A2XX_RB_BLEND_CONTROL_ALPHA_DESTBLEND(fd_blend_factor(rt->alpha_dst_factor)); if (rt->colormask & PIPE_MASK_R) diff --git a/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h b/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h index b7f2561..6d9e657 100644 --- a/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h +++ b/src/gallium/drivers/freedreno/a3xx/a3xx.xml.h @@ -10,11 +10,11 @@ git clone https://github.com/freedreno/envytools.git The rules-ng-ng source files this header was generated from are: - /home/robclark/src/freedreno/envytools/rnndb/adreno.xml ( 364 bytes, from 2013-11-30 14:47:15) - /home/robclark/src/freedreno/envytools/rnndb/freedreno_copyright.xml ( 1453 bytes, from 2013-03-31 16:51:27) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32580 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 10186 bytes, from 2014-05-16 11:51:57) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a2xx.xml ( 32901 bytes, from 2014-05-21 20:40:21) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_common.xml ( 9859 bytes, from 2014-05-21 20:39:42) - /home/robclark/src/freedreno/envytools/rnndb/adreno/adreno_pm4.xml ( 14477 bytes, from 2014-05-16 11:51:57) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57830 bytes, from 2014-05-20 22:44:52) -- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26293 bytes, from 2014-05-16 11:51:57) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a3xx.xml ( 57856 bytes, from 2014-05-21 20:43:33) +- /home/robclark/src/freedreno/envytools/rnndb/adreno/a4xx.xml ( 26602 bytes, from 2014-05-21 20:46:17) Copyright (C) 2013-2014 by the following authors: - Rob Clark <robdcl...@gmail.com> (robclark) @@ -186,6 +186,14 @@ enum a3xx_rop_code { ROP_SET = 15, }; +enum a3xx_rb_blend_opcode { + BLEND_DST_PLUS_SRC = 0, + BLEND_SRC_MINUS_DST = 1, + BLEND_DST_MINUS_SRC = 2, + BLEND_MIN_DST_SRC = 3, + BLEND_MAX_DST_SRC = 4, +}; + enum a3xx_tex_filter { A3XX_TEX_NEAREST = 0, A3XX_TEX_LINEAR = 1, @@ -877,7 +885,7 @@ static inline uint32_t A3XX_RB_MRT_BLEND_CONTROL_RGB_SRC_FACTOR(enum adreno_rb_b } #define A3XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE__MASK 0x000000e0 #define A3XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE__SHIFT 5 -static inline uint32_t A3XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE(enum adreno_rb_blend_opcode val) +static inline uint32_t A3XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE(enum a3xx_rb_blend_opcode val) { return ((val) << A3XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE__SHIFT) & A3XX_RB_MRT_BLEND_CONTROL_RGB_BLEND_OPCODE__MASK; } @@ -895,7 +903,7 @@ static inline uint32_t A3XX_RB_MRT_BLEND_CONTROL_ALPHA_SRC_FACTOR(enum adreno_rb } #define A3XX_RB_MRT_BLEND_CONTROL_ALPHA_BLEND_OPCODE__MASK 0x00e00000 #define A3XX_RB_MRT_BLEND_CONTROL_ALPHA_BLEND_OPCODE__SHIFT 21 -static inline uint32_t A3XX_RB_MRT_BLEND_CONTROL_ALPHA_BLEND_OPCODE(enum adreno_rb_blend_opcode val) -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/e1x4svf-000481...@moszumanska.debian.org