Mesa (master): r600g: Drop references to destroyed blend state

2014-10-22 Thread Michel Dänzer
Module: Mesa
Branch: master
Commit: ae879718c4086fc5905070e7f26dfa2757df0c86
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ae879718c4086fc5905070e7f26dfa2757df0c86

Author: Michel Dänzer michel.daen...@amd.com
Date:   Tue Oct 21 12:40:15 2014 +0900

r600g: Drop references to destroyed blend state

Fixes use-after-free when the currently bound blend state is destroyed.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85267
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84140

Reviewed-by: Marek Olšák marek.ol...@amd.com
Tested-by: Dieter Nützel die...@nuetzel-hh.de

Cc: mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/r600/r600_state_common.c |9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/r600/r600_state_common.c 
b/src/gallium/drivers/r600/r600_state_common.c
index 68365f9..879ec35 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -158,8 +158,10 @@ static void r600_bind_blend_state(struct pipe_context 
*ctx, void *state)
struct r600_context *rctx = (struct r600_context *)ctx;
struct r600_blend_state *blend = (struct r600_blend_state *)state;
 
-   if (blend == NULL)
+   if (blend == NULL) {
+   r600_set_cso_state_with_cb(rctx-blend_state, NULL, NULL);
return;
+   }
 
r600_bind_blend_state_internal(rctx, blend, rctx-force_blend_disable);
 }
@@ -447,8 +449,13 @@ static void r600_delete_sampler_state(struct pipe_context 
*ctx, void *state)
 
 static void r600_delete_blend_state(struct pipe_context *ctx, void *state)
 {
+   struct r600_context *rctx = (struct r600_context *)ctx;
struct r600_blend_state *blend = (struct r600_blend_state*)state;
 
+   if (rctx-blend_state.cso == state) {
+   ctx-bind_blend_state(ctx, NULL);
+   }
+
r600_release_command_buffer(blend-buffer);
r600_release_command_buffer(blend-buffer_no_blend);
FREE(blend);

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


Mesa (10.3): glsl_to_tgsi: fix the value of gl_FrontFacing with native integers

2014-10-22 Thread Emil Velikov
Module: Mesa
Branch: 10.3
Commit: 6fa07d1d4842169906155c6de58475fefe780204
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6fa07d1d4842169906155c6de58475fefe780204

Author: Marek Olšák marek.ol...@amd.com
Date:   Thu Oct 16 16:21:54 2014 +0200

glsl_to_tgsi: fix the value of gl_FrontFacing with native integers

We must convert it to boolean from the DX9 float encoding that Gallium
specifies.

Later, we should probably define that FACE should be 0 or ~0 if native
integers are supported.

Cc: 10.2 10.3 mesa-sta...@lists.freedesktop.org
Reviewed-by: Eric Anholt e...@anholt.net
(cherry picked from commit 9ec305ead7750c7f91c79b043584c1997bacd9a7)

---

 src/mesa/state_tracker/st_glsl_to_tgsi.cpp |   14 +-
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 34f7e9c..57416d1 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -4818,15 +4818,19 @@ emit_wpos(struct st_context *st,
  * saturating the value to [0,1] does the job.
  */
 static void
-emit_face_var(struct st_translate *t)
+emit_face_var(struct gl_context *ctx, struct st_translate *t)
 {
struct ureg_program *ureg = t-ureg;
struct ureg_dst face_temp = ureg_DECL_temporary(ureg);
struct ureg_src face_input = t-inputs[t-inputMapping[VARYING_SLOT_FACE]];
 
-   /* MOV_SAT face_temp, input[face] */
-   face_temp = ureg_saturate(face_temp);
-   ureg_MOV(ureg, face_temp, face_input);
+   if (ctx-Const.NativeIntegers) {
+  ureg_FSGE(ureg, face_temp, face_input, ureg_imm1f(ureg, 0));
+   }
+   else {
+  /* MOV_SAT face_temp, input[face] */
+  ureg_MOV(ureg, ureg_saturate(face_temp), face_input);
+   }
 
/* Use face_temp as face input from here on: */
t-inputs[t-inputMapping[VARYING_SLOT_FACE]] = ureg_src(face_temp);
@@ -4946,7 +4950,7 @@ st_translate_program(
   }
 
   if (proginfo-InputsRead  VARYING_BIT_FACE)
- emit_face_var(t);
+ emit_face_var(ctx, t);
 
   /*
* Declare output attributes.

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


Mesa (10.3): glsl: fix several use-after-free bugs

2014-10-22 Thread Emil Velikov
Module: Mesa
Branch: 10.3
Commit: 8f6f6a28fac7d3c3dc14884fce53129b9ce89de7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f6f6a28fac7d3c3dc14884fce53129b9ce89de7

Author: Brian Paul bri...@vmware.com
Date:   Fri Oct 17 13:31:53 2014 -0600

glsl: fix several use-after-free bugs

The get_variable_being_redeclared() function can free the 'var' argument.
Thereafter, we cannot assume that 'var' is a valid  pointer.  This patch
replaces 'var-name' with 'earlier-name' in two places and calls
is_gl_identifier(var-name) before 'var' might get freed.

This fixes several piglit GLSL crashes, including:
spec/glsl-1.50/execution/geometry/clip-distance-in-param
spec/glsl-1.50/execution/geometry/clip-distance-bulk-copy
spec/glsl-1.50/compiler/gs-redeclares-pervertex-out-before-global-redeclaration.geom

I'm not sure why these were not spotted sooner.
A similar bug was previously fixed by f9cecca7a.

Cc: mesa-sta...@lists.freedesktop.org
Reviewed-by: Chris Forbes chr...@ijw.co.nz
(cherry picked from commit 14379a0644ed69c5b7a6c6150ae91eba6f316e33)

---

 src/glsl/ast_to_hir.cpp |   10 +++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index 30b02d0..e238cd1 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -3760,7 +3760,7 @@ ast_declarator_list::hir(exec_list *instructions,
  earlier-data.how_declared == ir_var_declared_in_block) {
 _mesa_glsl_error(loc, state,
  `%s' has already been redeclared using 
- gl_PerVertex, var-name);
+ gl_PerVertex, earlier-name);
  }
  earlier-data.how_declared = ir_var_declared_normally;
   }
@@ -5674,17 +5674,21 @@ ast_interface_block::hir(exec_list *instructions,
 
  var-data.stream = this-layout.stream;
 
+ /* Examine var name here since var may get deleted in the next call */
+ bool var_is_gl_id = is_gl_identifier(var-name);
+
  if (redeclaring_per_vertex) {
 ir_variable *earlier =
get_variable_being_redeclared(var, loc, state,
  true /* allow_all_redeclarations 
*/);
-if (!is_gl_identifier(var-name) || earlier == NULL) {
+if (!var_is_gl_id || earlier == NULL) {
_mesa_glsl_error(loc, state,
 redeclaration of gl_PerVertex can only 
 include built-in variables);
 } else if (earlier-data.how_declared == ir_var_declared_normally) 
{
_mesa_glsl_error(loc, state,
-`%s' has already been redeclared, var-name);
+`%s' has already been redeclared,
+earlier-name);
 } else {
earlier-data.how_declared = ir_var_declared_in_block;
earlier-reinit_interface_type(block_type);

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


Mesa (10.3): r600g: Drop references to destroyed blend state

2014-10-22 Thread Emil Velikov
Module: Mesa
Branch: 10.3
Commit: 724f71ef3905289eee7b45955243fdc7dc5f1251
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=724f71ef3905289eee7b45955243fdc7dc5f1251

Author: Michel Dänzer michel.daen...@amd.com
Date:   Tue Oct 21 12:40:15 2014 +0900

r600g: Drop references to destroyed blend state

Fixes use-after-free when the currently bound blend state is destroyed.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85267
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84140

Reviewed-by: Marek Olšák marek.ol...@amd.com
Tested-by: Dieter Nützel die...@nuetzel-hh.de

Cc: mesa-sta...@lists.freedesktop.org
(cherry picked from commit ae879718c4086fc5905070e7f26dfa2757df0c86)

---

 src/gallium/drivers/r600/r600_state_common.c |9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/r600/r600_state_common.c 
b/src/gallium/drivers/r600/r600_state_common.c
index d9174a5..a050a53 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -158,8 +158,10 @@ static void r600_bind_blend_state(struct pipe_context 
*ctx, void *state)
struct r600_context *rctx = (struct r600_context *)ctx;
struct r600_blend_state *blend = (struct r600_blend_state *)state;
 
-   if (blend == NULL)
+   if (blend == NULL) {
+   r600_set_cso_state_with_cb(rctx-blend_state, NULL, NULL);
return;
+   }
 
r600_bind_blend_state_internal(rctx, blend, rctx-force_blend_disable);
 }
@@ -447,8 +449,13 @@ static void r600_delete_sampler_state(struct pipe_context 
*ctx, void *state)
 
 static void r600_delete_blend_state(struct pipe_context *ctx, void *state)
 {
+   struct r600_context *rctx = (struct r600_context *)ctx;
struct r600_blend_state *blend = (struct r600_blend_state*)state;
 
+   if (rctx-blend_state.cso == state) {
+   ctx-bind_blend_state(ctx, NULL);
+   }
+
r600_release_command_buffer(blend-buffer);
r600_release_command_buffer(blend-buffer_no_blend);
FREE(blend);

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


Mesa (master): r600g: implement pipe_rasterizer_state::clip_halfz

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

Author: Marek Olšák marek.ol...@amd.com
Date:   Wed Oct 22 10:59:49 2014 +0200

r600g: implement pipe_rasterizer_state::clip_halfz

Reviewed-by: Alex Deucher alexander.deuc...@amd.com

---

 src/gallium/drivers/r600/evergreen_state.c |1 +
 src/gallium/drivers/r600/r600_state.c  |1 +
 2 files changed, 2 insertions(+)

diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index 78c1b68..f74dd91 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -476,6 +476,7 @@ static void *evergreen_create_rs_state(struct pipe_context 
*ctx,

S_028A0C_REPEAT_COUNT(state-line_stipple_factor) : 0;
rs-pa_cl_clip_cntl =
S_028810_PS_UCP_MODE(3) |
+   S_028810_DX_CLIP_SPACE_DEF(state-clip_halfz) |
S_028810_ZCLIP_NEAR_DISABLE(!state-depth_clip) |
S_028810_ZCLIP_FAR_DISABLE(!state-depth_clip) |
S_028810_DX_LINEAR_ATTR_CLIP_ENA(1) |
diff --git a/src/gallium/drivers/r600/r600_state.c 
b/src/gallium/drivers/r600/r600_state.c
index 1f933ef..8dc25da 100644
--- a/src/gallium/drivers/r600/r600_state.c
+++ b/src/gallium/drivers/r600/r600_state.c
@@ -461,6 +461,7 @@ static void *r600_create_rs_state(struct pipe_context *ctx,

S_028A0C_REPEAT_COUNT(state-line_stipple_factor) : 0;
rs-pa_cl_clip_cntl =
S_028810_PS_UCP_MODE(3) |
+   S_028810_DX_CLIP_SPACE_DEF(state-clip_halfz) |
S_028810_ZCLIP_NEAR_DISABLE(!state-depth_clip) |
S_028810_ZCLIP_FAR_DISABLE(!state-depth_clip) |
S_028810_DX_LINEAR_ATTR_CLIP_ENA(1);

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


Mesa (master): radeonsi: implement pipe_rasterizer_state::clip_halfz

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

Author: Marek Olšák marek.ol...@amd.com
Date:   Wed Oct 22 10:59:49 2014 +0200

radeonsi: implement pipe_rasterizer_state::clip_halfz

Reviewed-by: Michel Dänzer michel.daen...@amd.com
Reviewed-by: Alex Deucher alexander.deuc...@amd.com

---

 src/gallium/drivers/radeonsi/si_state.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index c845df1..16d8493 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -607,6 +607,7 @@ static void *si_create_rs_state(struct pipe_context *ctx,

S_028814_POLYMODE_BACK_PTYPE(si_translate_fill(state-fill_back));
rs-pa_cl_clip_cntl =
S_028810_PS_UCP_MODE(3) |
+   S_028810_DX_CLIP_SPACE_DEF(state-clip_halfz) |
S_028810_ZCLIP_NEAR_DISABLE(!state-depth_clip) |
S_028810_ZCLIP_FAR_DISABLE(!state-depth_clip) |
S_028810_DX_RASTERIZATION_KILL(state-rasterizer_discard) |

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


Mesa (master): r300g: implement pipe_rasterizer_state::clip_halfz

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

Author: Marek Olšák marek.ol...@amd.com
Date:   Wed Oct 22 10:59:49 2014 +0200

r300g: implement pipe_rasterizer_state::clip_halfz

Reviewed-by: Alex Deucher alexander.deuc...@amd.com

---

 src/gallium/drivers/r300/r300_context.h |1 +
 src/gallium/drivers/r300/r300_emit.c|1 +
 src/gallium/drivers/r300/r300_state.c   |7 +++
 3 files changed, 9 insertions(+)

diff --git a/src/gallium/drivers/r300/r300_context.h 
b/src/gallium/drivers/r300/r300_context.h
index 92a35d5..4d2b153 100644
--- a/src/gallium/drivers/r300/r300_context.h
+++ b/src/gallium/drivers/r300/r300_context.h
@@ -580,6 +580,7 @@ struct r300_context {
 /* Whether two-sided color selection is enabled (AKA light_twoside). */
 boolean two_sided_color;
 boolean flatshade;
+boolean clip_halfz;
 /* Whether fast color clear is enabled. */
 boolean cbzb_clear;
 /* Whether fragment shader needs to be validated. */
diff --git a/src/gallium/drivers/r300/r300_emit.c 
b/src/gallium/drivers/r300/r300_emit.c
index b201334..b632963 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -1136,6 +1136,7 @@ void r300_emit_vs_state(struct r300_context* r300, 
unsigned size, void* state)
 R300_PVS_NUM_CNTLRS(pvs_num_controllers) |
 R300_PVS_NUM_FPUS(r300screen-caps.num_vert_fpus) |
 R300_PVS_VF_MAX_VTX_NUM(12) |
+(r300-clip_halfz ? R300_DX_CLIP_SPACE_DEF : 0) |
 (r300screen-caps.is_r500 ? R500_TCL_STATE_OPTIMIZATION : 0));
 
 /* Emit flow control instructions.  Even if there are no fc instructions,
diff --git a/src/gallium/drivers/r300/r300_state.c 
b/src/gallium/drivers/r300/r300_state.c
index fd67e35..cfcc19d 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -1390,6 +1390,7 @@ static void r300_bind_rs_state(struct pipe_context* pipe, 
void* state)
 boolean last_two_sided_color = r300-two_sided_color;
 boolean last_msaa_enable = r300-msaa_enable;
 boolean last_flatshade = r300-flatshade;
+boolean last_clip_halfz = r300-clip_halfz;
 
 if (r300-draw  rs) {
 draw_set_rasterizer_state(r300-draw, rs-rs_draw, state);
@@ -1401,12 +1402,14 @@ static void r300_bind_rs_state(struct pipe_context* 
pipe, void* state)
 r300-two_sided_color = rs-rs.light_twoside;
 r300-msaa_enable = rs-rs.multisample;
 r300-flatshade = rs-rs.flatshade;
+r300-clip_halfz = rs-rs.clip_halfz;
 } else {
 r300-polygon_offset_enabled = FALSE;
 r300-sprite_coord_enable = 0;
 r300-two_sided_color = FALSE;
 r300-msaa_enable = FALSE;
 r300-flatshade = FALSE;
+r300-clip_halfz = FALSE;
 }
 
 UPDATE_STATE(state, r300-rs_state);
@@ -1428,6 +1431,10 @@ static void r300_bind_rs_state(struct pipe_context* 
pipe, void* state)
 r300-fs_status = FRAGMENT_SHADER_MAYBE_DIRTY;
 }
 }
+
+if (last_clip_halfz != r300-clip_halfz) {
+r300_mark_atom_dirty(r300, r300-vs_state);
+}
 }
 
 /* Free rasterizer state. */

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


Mesa (master): glsl: Fix crash due to negative array index

2014-10-22 Thread Anuj Phogat
Module: Mesa
Branch: master
Commit: 6f0089e92e9a3b096b978bb09a87db6a38acb7b2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6f0089e92e9a3b096b978bb09a87db6a38acb7b2

Author: Anuj Phogat anuj.pho...@gmail.com
Date:   Thu Sep 18 16:30:31 2014 -0700

glsl: Fix crash due to negative array index

Currently Mesa crashes with a shader like this:

[fragmnet shader]
float[5] array;
int idx = -2;
void main()
{
   gl_FragColor = vec4(0.0, 1.0, 0.0, array[idx]);
}

Cc: mesa-sta...@lists.freedesktop.org
Signed-off-by: Anuj Phogat anuj.pho...@gmail.com
Reviewed-by: Chris Forbes chr...@ijw.co.nz

---

 src/glsl/opt_array_splitting.cpp |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/glsl/opt_array_splitting.cpp b/src/glsl/opt_array_splitting.cpp
index ebb076b..9e73f3c 100644
--- a/src/glsl/opt_array_splitting.cpp
+++ b/src/glsl/opt_array_splitting.cpp
@@ -295,7 +295,7 @@ ir_array_splitting_visitor::split_deref(ir_dereference 
**deref)
ir_constant *constant = deref_array-array_index-as_constant();
assert(constant);
 
-   if (constant-value.i[0]  (int)entry-size) {
+   if (constant-value.i[0] = 0  constant-value.i[0]  (int)entry-size) {
   *deref = new(entry-mem_ctx)
 ir_dereference_variable(entry-components[constant-value.i[0]]);
} else {

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


Mesa (master): glsl: Use signed array index in update_max_array_access()

2014-10-22 Thread Anuj Phogat
Module: Mesa
Branch: master
Commit: 7a652c41b4de4bdbb954a4ebf6cdb605d197e999
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a652c41b4de4bdbb954a4ebf6cdb605d197e999

Author: Anuj Phogat anuj.pho...@gmail.com
Date:   Mon Sep 22 15:10:28 2014 -0700

glsl: Use signed array index in update_max_array_access()

Avoids a crash in case of negative array index is used in a
shader program.

Cc: mesa-sta...@lists.freedesktop.org
Signed-off-by: Anuj Phogat anuj.pho...@gmail.com
Reviewed-by: Chris Forbes chr...@ijw.co.nz

---

 src/glsl/ast_array_index.cpp |6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/glsl/ast_array_index.cpp b/src/glsl/ast_array_index.cpp
index 49a8574..ff0c757 100644
--- a/src/glsl/ast_array_index.cpp
+++ b/src/glsl/ast_array_index.cpp
@@ -49,12 +49,12 @@ ast_array_specifier::print(void) const
  * loc and state to report the error.
  */
 static void
-update_max_array_access(ir_rvalue *ir, unsigned idx, YYLTYPE *loc,
+update_max_array_access(ir_rvalue *ir, int idx, YYLTYPE *loc,
 struct _mesa_glsl_parse_state *state)
 {
if (ir_dereference_variable *deref_var = ir-as_dereference_variable()) {
   ir_variable *var = deref_var-var;
-  if (idx  var-data.max_array_access) {
+  if (idx  (int)var-data.max_array_access) {
  var-data.max_array_access = idx;
 
  /* Check whether this access will, as a side effect, implicitly cause
@@ -94,7 +94,7 @@ update_max_array_access(ir_rvalue *ir, unsigned idx, YYLTYPE 
*loc,
 
 assert(max_ifc_array_access != NULL);
 
-if (idx  max_ifc_array_access[field_index]) {
+if (idx  (int)max_ifc_array_access[field_index]) {
max_ifc_array_access[field_index] = idx;
 
/* Check whether this access will, as a side effect, implicitly

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


Mesa (master): u_blitter: do error checking assertions for shader caching

2014-10-22 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 27de89d2667bb154a4334f839397420a11b02bab
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=27de89d2667bb154a4334f839397420a11b02bab

Author: Brian Paul bri...@vmware.com
Date:   Tue Oct 21 10:22:35 2014 -0600

u_blitter: do error checking assertions for shader caching

If the user calls util_blitter_cache_all_shaders() set a flag and assert
that we never try to create any new fragment shaders after that point.
If the assertions fails, it means we missed generating some shader in
util_blitter_cache_all_shaders().

Reviewed-by: Marek Olšák marek.ol...@amd.com

---

 src/gallium/auxiliary/util/u_blitter.c |   51 +++-
 1 file changed, 30 insertions(+), 21 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_blitter.c 
b/src/gallium/auxiliary/util/u_blitter.c
index f3fe949..abcacff 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -134,6 +134,7 @@ struct blitter_context_priv
boolean has_stream_out;
boolean has_stencil_export;
boolean has_texture_multisample;
+   boolean cached_all_shaders;
 
/* The Draw module overrides these functions.
 * Always create the blitter before Draw. */
@@ -356,6 +357,7 @@ static void bind_fs_empty(struct blitter_context_priv *ctx)
struct pipe_context *pipe = ctx-base.pipe;
 
if (!ctx-fs_empty) {
+  assert(!ctx-cached_all_shaders);
   ctx-fs_empty = util_make_empty_fragment_shader(pipe);
}
 
@@ -367,6 +369,7 @@ static void bind_fs_write_one_cbuf(struct 
blitter_context_priv *ctx)
struct pipe_context *pipe = ctx-base.pipe;
 
if (!ctx-fs_write_one_cbuf) {
+  assert(!ctx-cached_all_shaders);
   ctx-fs_write_one_cbuf =
  util_make_fragment_passthrough_shader(pipe, TGSI_SEMANTIC_GENERIC,
TGSI_INTERPOLATE_CONSTANT, 
FALSE);
@@ -380,6 +383,7 @@ static void bind_fs_write_all_cbufs(struct 
blitter_context_priv *ctx)
struct pipe_context *pipe = ctx-base.pipe;
 
if (!ctx-fs_write_all_cbufs) {
+  assert(!ctx-cached_all_shaders);
   ctx-fs_write_all_cbufs =
  util_make_fragment_passthrough_shader(pipe, TGSI_SEMANTIC_GENERIC,
TGSI_INTERPOLATE_CONSTANT, 
TRUE);
@@ -850,6 +854,7 @@ static void *blitter_get_fs_texfetch_col(struct 
blitter_context_priv *ctx,
 shader = ctx-fs_resolve[target][index][filter];
 
  if (!*shader) {
+assert(!ctx-cached_all_shaders);
 if (filter == PIPE_TEX_FILTER_LINEAR) {
*shader = util_make_fs_msaa_resolve_bilinear(pipe, tgsi_tex,
src_nr_samples,
@@ -870,6 +875,7 @@ static void *blitter_get_fs_texfetch_col(struct 
blitter_context_priv *ctx,
 
  /* Create the fragment shader on-demand. */
  if (!*shader) {
+assert(!ctx-cached_all_shaders);
 *shader = util_make_fs_blit_msaa_color(pipe, tgsi_tex);
  }
   }
@@ -880,6 +886,7 @@ static void *blitter_get_fs_texfetch_col(struct 
blitter_context_priv *ctx,
 
   /* Create the fragment shader on-demand. */
   if (!*shader) {
+ assert(!ctx-cached_all_shaders);
  *shader = util_make_fragment_tex_shader(pipe, tgsi_tex,
  TGSI_INTERPOLATE_LINEAR);
   }
@@ -902,11 +909,10 @@ void *blitter_get_fs_texfetch_depth(struct 
blitter_context_priv *ctx,
 
   /* Create the fragment shader on-demand. */
   if (!*shader) {
- unsigned tgsi_tex = util_pipe_tex_to_tgsi_tex(target,
-   nr_samples);
-
- *shader =
-util_make_fs_blit_msaa_depth(pipe, tgsi_tex);
+ unsigned tgsi_tex;
+ assert(!ctx-cached_all_shaders);
+ tgsi_tex = util_pipe_tex_to_tgsi_tex(target, nr_samples);
+ *shader = util_make_fs_blit_msaa_depth(pipe, tgsi_tex);
   }
 
   return *shader;
@@ -915,8 +921,9 @@ void *blitter_get_fs_texfetch_depth(struct 
blitter_context_priv *ctx,
 
   /* Create the fragment shader on-demand. */
   if (!*shader) {
- unsigned tgsi_tex = util_pipe_tex_to_tgsi_tex(target, 0);
-
+ unsigned tgsi_tex;
+ assert(!ctx-cached_all_shaders);
+ tgsi_tex = util_pipe_tex_to_tgsi_tex(target, 0);
  *shader =
 util_make_fragment_tex_shader_writedepth(pipe, tgsi_tex,
  TGSI_INTERPOLATE_LINEAR);
@@ -940,11 +947,10 @@ void *blitter_get_fs_texfetch_depthstencil(struct 
blitter_context_priv *ctx,
 
   /* Create the fragment shader on-demand. */
   if (!*shader) {
- unsigned tgsi_tex = util_pipe_tex_to_tgsi_tex(target,
-   nr_samples);
-
- *shader =
-util_make_fs_blit_msaa_depthstencil(pipe, tgsi_tex);
+ unsigned 

Mesa (master): u_blitter: use ctx-bind_fs_state(), not pipe- bind_fs_state()

2014-10-22 Thread Brian Paul
Module: Mesa
Branch: master
Commit: f82a84c09771da63b68464b9653cae421c0ae482
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f82a84c09771da63b68464b9653cae421c0ae482

Author: Brian Paul bri...@vmware.com
Date:   Tue Oct 21 10:26:24 2014 -0600

u_blitter: use ctx-bind_fs_state(), not pipe-bind_fs_state()

Consistently use the function pointer we saved earlier.

Reviewed-by: Marek Olšák marek.ol...@amd.com

---

 src/gallium/auxiliary/util/u_blitter.c |6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_blitter.c 
b/src/gallium/auxiliary/util/u_blitter.c
index 830d82f..ea9094e 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -361,7 +361,7 @@ static void bind_fs_empty(struct blitter_context_priv *ctx)
   ctx-fs_empty = util_make_empty_fragment_shader(pipe);
}
 
-   pipe-bind_fs_state(pipe, ctx-fs_empty);
+   ctx-bind_fs_state(pipe, ctx-fs_empty);
 }
 
 static void bind_fs_write_one_cbuf(struct blitter_context_priv *ctx)
@@ -375,7 +375,7 @@ static void bind_fs_write_one_cbuf(struct 
blitter_context_priv *ctx)
TGSI_INTERPOLATE_CONSTANT, 
FALSE);
}
 
-   pipe-bind_fs_state(pipe, ctx-fs_write_one_cbuf);
+   ctx-bind_fs_state(pipe, ctx-fs_write_one_cbuf);
 }
 
 static void bind_fs_write_all_cbufs(struct blitter_context_priv *ctx)
@@ -389,7 +389,7 @@ static void bind_fs_write_all_cbufs(struct 
blitter_context_priv *ctx)
TGSI_INTERPOLATE_CONSTANT, 
TRUE);
}
 
-   pipe-bind_fs_state(pipe, ctx-fs_write_all_cbufs);
+   ctx-bind_fs_state(pipe, ctx-fs_write_all_cbufs);
 }
 
 void util_blitter_destroy(struct blitter_context *blitter)

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


Mesa (master): u_blitter: create basic fs shaders in util_blitter_cache_all_shaders()

2014-10-22 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 0bcd9f5469868748ce3b1bb8ddab55d9859e96c4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0bcd9f5469868748ce3b1bb8ddab55d9859e96c4

Author: Brian Paul bri...@vmware.com
Date:   Tue Oct 21 12:14:06 2014 -0600

u_blitter: create basic fs shaders in util_blitter_cache_all_shaders()

We need to create all fs shaders in this function.

Reviewed-by: Marek Olšák marek.ol...@amd.com

---

 src/gallium/auxiliary/util/u_blitter.c |   13 -
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/gallium/auxiliary/util/u_blitter.c 
b/src/gallium/auxiliary/util/u_blitter.c
index abcacff..830d82f 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -1012,7 +1012,8 @@ void *blitter_get_fs_texfetch_stencil(struct 
blitter_context_priv *ctx,
 void util_blitter_cache_all_shaders(struct blitter_context *blitter)
 {
struct blitter_context_priv *ctx = (struct blitter_context_priv*)blitter;
-   struct pipe_screen *screen = blitter-pipe-screen;
+   struct pipe_context *pipe = blitter-pipe;
+   struct pipe_screen *screen = pipe-screen;
unsigned samples, j, f, target, max_samples;
boolean has_arraytex, has_cubearraytex;
 
@@ -1073,6 +1074,16 @@ void util_blitter_cache_all_shaders(struct 
blitter_context *blitter)
   }
}
 
+   ctx-fs_empty = util_make_empty_fragment_shader(pipe);
+
+   ctx-fs_write_one_cbuf =
+  util_make_fragment_passthrough_shader(pipe, TGSI_SEMANTIC_GENERIC,
+TGSI_INTERPOLATE_CONSTANT, FALSE);
+
+   ctx-fs_write_all_cbufs =
+  util_make_fragment_passthrough_shader(pipe, TGSI_SEMANTIC_GENERIC,
+TGSI_INTERPOLATE_CONSTANT, TRUE);
+
ctx-cached_all_shaders = TRUE;
 }
 

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


Mesa (master): mesa: remove conditional render and rgtc from ES3 requirements

2014-10-22 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 9ad80d1d1876493b45428b5f81b03add3ae8150e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ad80d1d1876493b45428b5f81b03add3ae8150e

Author: Ilia Mirkin imir...@alum.mit.edu
Date:   Tue Oct 21 22:20:50 2014 -0400

mesa: remove conditional render and rgtc from ES3 requirements

The functionality exposed by those extensions does not appear in ES3

Signed-off-by: Ilia Mirkin imir...@alum.mit.edu
Reviewed-by: Matt Turner matts...@gmail.com

---

 src/mesa/main/version.c |2 --
 1 file changed, 2 deletions(-)

diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index 71f7011..4951891 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -381,7 +381,6 @@ compute_version_es2(const struct gl_extensions *extensions)
   extensions-ARB_shader_texture_lod 
   extensions-ARB_texture_float 
   extensions-ARB_texture_rg 
-  extensions-ARB_texture_compression_rgtc 
   extensions-EXT_draw_buffers2 
   /* extensions-ARB_framebuffer_object  */
   extensions-EXT_framebuffer_sRGB 
@@ -389,7 +388,6 @@ compute_version_es2(const struct gl_extensions *extensions)
   extensions-EXT_texture_array 
   extensions-EXT_texture_shared_exponent 
   extensions-EXT_transform_feedback 
-  extensions-NV_conditional_render 
   extensions-ARB_draw_instanced 
   extensions-ARB_uniform_buffer_object 
   extensions-EXT_texture_snorm 

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