Mesa (master): r600g: Drop references to destroyed blend state
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
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
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
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
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
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
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
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()
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
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()
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()
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
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