Re: [Mesa-dev] [PATCH] i965: Always reserve binding table space for at least one render target.

2013-11-27 Thread Eric Anholt
Kenneth Graunke  writes:

> In brw_update_renderbuffer_surfaces(), if there are no color draw
> buffers, we always set up a null render target at surface index 0 so we
> have something to use with the FB write marking the end of thread.
>
> However, when we recently began computing surface indexes dynamically,
> we failed to reserve space for it.  This meant that the first texture
> would be assigned surface index 0, and our closing FB write would
> clobber the texture.
>
> Fixes Piglit's EXT_packed_depth_stencil/fbo-blit-d24s8 test on Gen4-5,
> which regressed as of commit 4e5306453da6a1c076309e543ec92d999e02f67a
> ("i965/fs: Dynamically set up the WM binding table offsets.")
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70605
> Signed-off-by: Kenneth Graunke 
> Cc: Eric Anholt 
> Cc: "10.0" mesa-sta...@lists.freedesktop.org

Reviewed-by: Eric Anholt 



pgpwvCC6JgyKo.pgp
Description: PGP signature
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] i965: Always reserve binding table space for at least one render target.

2013-11-26 Thread Kenneth Graunke
In brw_update_renderbuffer_surfaces(), if there are no color draw
buffers, we always set up a null render target at surface index 0 so we
have something to use with the FB write marking the end of thread.

However, when we recently began computing surface indexes dynamically,
we failed to reserve space for it.  This meant that the first texture
would be assigned surface index 0, and our closing FB write would
clobber the texture.

Fixes Piglit's EXT_packed_depth_stencil/fbo-blit-d24s8 test on Gen4-5,
which regressed as of commit 4e5306453da6a1c076309e543ec92d999e02f67a
("i965/fs: Dynamically set up the WM binding table offsets.")

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70605
Signed-off-by: Kenneth Graunke 
Cc: Eric Anholt 
Cc: "10.0" mesa-sta...@lists.freedesktop.org
---
 src/mesa/drivers/dri/i965/brw_fs.cpp | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

This works on 9.2, and fails on 10.0-rc2, so this fix absolutely must land
before the final 10.0 release (in keeping with our "no known regressions"
policy).

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp 
b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 261f906..b96a0c2 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -3181,8 +3181,11 @@ fs_visitor::assign_binding_table_offsets()
 {
uint32_t next_binding_table_offset = 0;
 
+   /* If there are no color regions, we still perform an FB write to a null
+* renderbuffer, which we place at surface index 0.
+*/
c->prog_data.binding_table.render_target_start = next_binding_table_offset;
-   next_binding_table_offset += c->key.nr_color_regions;
+   next_binding_table_offset += MAX2(c->key.nr_color_regions, 1);
 
assign_common_binding_table_offsets(next_binding_table_offset);
 }
-- 
1.8.4.2

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