diff options
author | Marek Olšák <[email protected]> | 2012-01-10 00:19:00 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2012-01-10 00:25:05 +0100 |
commit | dc4c821f0817a3db716f965692fb701079f66340 (patch) | |
tree | 51c25da0a3746c34f946a7ceac8f9e6f9208fbb5 /src/gallium/auxiliary | |
parent | a48cc138a8b7c55f8d12796677e081c2b2085f48 (diff) |
Squash-merge branch 'gallium-clip-state'
Conflicts:
src/gallium/auxiliary/tgsi/tgsi_strings.c
src/mesa/state_tracker/st_atom_clip.c
commit d919791f2742e913173d6b335128e7d4c63c0840
Author: Christoph Bumiller <[email protected]>
Date: Fri Jan 6 17:59:22 2012 +0100
d3d1x: adapt to new clip state
commit cfec82bca3fefcdefafca3f4555285ec1d1ae421
Author: Christoph Bumiller <[email protected]>
Date: Fri Jan 6 14:16:51 2012 +0100
gallium/docs: update for clip state changes
commit c02bfeb81ad9f62041a2285ea6373bbbd602912a
Author: Christoph Bumiller <[email protected]>
Date: Fri Jan 6 14:21:43 2012 +0100
tgsi: add TGSI_PROPERTY_PROHIBIT_UCPS
commit d4e0a785a6a23ad2f6819fd72e236acb9750028d
Author: Brian Paul <[email protected]>
Date: Thu Jan 5 08:30:00 2012 -0700
tgsi: consolidate TGSI string arrays in new tgsi_strings.h
There was some duplication between the tgsi_dump.c and tgsi_text.c
files. Also use some static assertions to help catch errors when
adding new TGSI values.
v2: put strings in tgsi_strings.c file instead of the .h file.
Reviewed-by: Dave Airlie <[email protected]>
commit c28584ce0d8c62bd92c8f140729d344f88a0b3cd
Author: Christoph Bumiller <[email protected]>
Date: Fri Jan 6 12:48:09 2012 +0100
gallium: extend user_clip_plane_enable to apply to clip distances
commit f1d5016c07f786229ed057effbe55fbfd160b019
Author: Marek Olšák <[email protected]>
Date: Fri Jan 6 02:39:09 2012 +0100
nvfx: adapt to new clip state
commit 6f6fa1c26bd19f797c1996731708e3569c9bfe24
Author: Marek Olšák <[email protected]>
Date: Fri Jan 6 01:41:39 2012 +0100
st/mesa: fix DrawPixels with GL_DEPTH_CLAMP
commit c86ad730aa1c017788ae88a55f54071bf222be12
Author: Christoph Bumiller <[email protected]>
Date: Tue Jan 3 23:51:30 2012 +0100
nv50: adapt to new clip state
commit 3a8ae6ac243bae5970729dc4057fe02d992543dc
Author: Christoph Bumiller <[email protected]>
Date: Tue Jan 3 23:32:36 2012 +0100
nvc0: adapt to new clip state
commit 6243a8246997f8d2fcc69ab741a2c2dea080ff11
Author: Marek Olšák <[email protected]>
Date: Thu Dec 29 01:32:51 2011 +0100
draw: initalize pt.user.planes in draw_init
This fixes a crash in glean/fpexceptions.
commit e3056524b19b56d473f4faff84ffa0eb41497408
Author: Marek Olšák <[email protected]>
Date: Mon Dec 26 06:26:55 2011 +0100
svga: adapt to new clip state
commit c5bfa8b37d6d489271df457229081d6bbb51b4b7
Author: Marek Olšák <[email protected]>
Date: Sun Dec 25 14:11:51 2011 +0100
r600g: adapt to new clip state
commit f11890905362f62627c4a28a8255b76eb7de7df2
Author: Marek Olšák <[email protected]>
Date: Sun Dec 25 14:10:26 2011 +0100
r300g: adapt to new clip state
commit e37465327c79a01112f15f6278d9accc5bf3103f
Author: Marek Olšák <[email protected]>
Date: Sun Dec 25 12:39:16 2011 +0100
draw: adapt to new clip state
This adds a regression in the LLVM clipping path. Can anybody see anything
wrong with the code? It works for every other case, just glean/fpexceptions
crashes when doing the "Infinite clip plane test".
commit b474d2b18c72d965eefae4e427c269cba5ce6ba2
Author: Marek Olšák <[email protected]>
Date: Sun Dec 25 13:14:59 2011 +0100
u_blitter: don't save/set/restore clip state
commit 9dd240ea91f523a677af45e8d0adb9e661e28602
Author: Marek Olšák <[email protected]>
Date: Sun Dec 25 13:11:56 2011 +0100
gallium: don't cso_save/set/restore clip state
The enable bits are in the rasterizer state.
commit a4f7031179f5f4ad524b34b394214b984ac950f6
Author: Marek Olšák <[email protected]>
Date: Sun Dec 25 12:58:55 2011 +0100
gallium: default depth_clip to 1
depth_clip = !depth_clamp
commit fe21147a00ab90e549d63fe12ee4625c9c2ffcc3
Author: Marek Olšák <[email protected]>
Date: Mon Dec 26 06:14:19 2011 +0100
trace,util: update state logging to new clip state
Also dump the other missing flags.
commit 2a3b96e84ac872dcc5bc1de049fe76bb58d64b23
Author: Marek Olšák <[email protected]>
Date: Sun Dec 25 10:43:43 2011 +0100
st/mesa: adapt to new clip state
commit b7b656a42fca19d7c85267f42649a206a85a2c72
Author: Marek Olšák <[email protected]>
Date: Sat Dec 17 15:45:19 2011 +0100
gallium: move state enable bits from clip_state to rasterizer_state
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/cso_cache/cso_context.c | 17 | ||||
-rw-r--r-- | src/gallium/auxiliary/draw/draw_cliptest_tmp.h | 16 | ||||
-rw-r--r-- | src/gallium/auxiliary/draw/draw_context.c | 21 | ||||
-rw-r--r-- | src/gallium/auxiliary/draw/draw_llvm.c | 20 | ||||
-rw-r--r-- | src/gallium/auxiliary/draw/draw_llvm.h | 4 | ||||
-rw-r--r-- | src/gallium/auxiliary/draw/draw_private.h | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/postprocess/pp_program.c | 1 | ||||
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_strings.c | 3 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_blit.c | 8 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_blitter.c | 9 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_blitter.h | 8 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_dump_state.c | 7 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_gen_mipmap.c | 5 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_compositor.c | 1 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_idct.c | 1 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_mc.c | 1 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_zscan.c | 1 |
17 files changed, 48 insertions, 77 deletions
diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c index b46e66869d8..c95a1ba4117 100644 --- a/src/gallium/auxiliary/cso_cache/cso_context.c +++ b/src/gallium/auxiliary/cso_cache/cso_context.c @@ -858,27 +858,14 @@ static INLINE void clip_state_cpy(struct pipe_clip_state *dst, const struct pipe_clip_state *src) { - dst->depth_clamp = src->depth_clamp; - dst->nr = src->nr; - if (src->nr) { - memcpy(dst->ucp, src->ucp, src->nr * sizeof(src->ucp[0])); - } + memcpy(dst->ucp, src->ucp, sizeof(dst->ucp)); } static INLINE int clip_state_cmp(const struct pipe_clip_state *a, const struct pipe_clip_state *b) { - if (a->depth_clamp != b->depth_clamp) { - return 1; - } - if (a->nr != b->nr) { - return 1; - } - if (a->nr) { - return memcmp(a->ucp, b->ucp, a->nr * sizeof(a->ucp[0])); - } - return 0; + return memcmp(a->ucp, b->ucp, sizeof(a->ucp)); } void diff --git a/src/gallium/auxiliary/draw/draw_cliptest_tmp.h b/src/gallium/auxiliary/draw/draw_cliptest_tmp.h index 1ca152911eb..9e6827cc452 100644 --- a/src/gallium/auxiliary/draw/draw_cliptest_tmp.h +++ b/src/gallium/auxiliary/draw/draw_cliptest_tmp.h @@ -36,7 +36,7 @@ static boolean TAG(do_cliptest)( struct pt_post_vs *pvs, /* const */ float (*plane)[4] = pvs->draw->plane; const unsigned pos = draw_current_shader_position_output(pvs->draw); const unsigned ef = pvs->draw->vs.edgeflag_output; - const unsigned nr = pvs->draw->nr_planes; + const unsigned ucp_enable = pvs->draw->rasterizer->clip_plane_enable; const unsigned flags = (FLAGS); unsigned need_pipeline = 0; unsigned j; @@ -81,10 +81,16 @@ static boolean TAG(do_cliptest)( struct pt_post_vs *pvs, } if (flags & DO_CLIP_USER) { - unsigned i; - for (i = 6; i < nr; i++) { - if (dot4(position, plane[i]) < 0) - mask |= (1<<i); + unsigned ucp_mask = ucp_enable; + + while (ucp_mask) { + unsigned plane_idx = ffs(ucp_mask)-1; + ucp_mask &= ~(1 << plane_idx); + plane_idx += 6; + + if (dot4(position, plane[plane_idx]) < 0) { + mask |= 1 << plane_idx; + } } } diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index f6db95d756e..f91e408cbf0 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -151,11 +151,10 @@ boolean draw_init(struct draw_context *draw) ASSIGN_4V( draw->plane[3], 0, 1, 0, 1 ); ASSIGN_4V( draw->plane[4], 0, 0, 1, 1 ); /* yes these are correct */ ASSIGN_4V( draw->plane[5], 0, 0, -1, 1 ); /* mesa's a bit wonky */ - draw->nr_planes = 6; draw->clip_xy = TRUE; draw->clip_z = TRUE; - + draw->pt.user.planes = (float (*) [DRAW_TOTAL_CLIP_PLANES][4]) &(draw->plane[0]); draw->reduced_prim = ~0; /* != any of PIPE_PRIM_x */ @@ -247,8 +246,9 @@ static void update_clip_flags( struct draw_context *draw ) draw->guard_band_xy = (!draw->driver.bypass_clip_xy && draw->driver.guard_band_xy); draw->clip_z = (!draw->driver.bypass_clip_z && - !draw->depth_clamp); - draw->clip_user = (draw->nr_planes > 6); + draw->rasterizer && draw->rasterizer->depth_clip); + draw->clip_user = draw->rasterizer && + draw->rasterizer->clip_plane_enable != 0; } /** @@ -264,8 +264,8 @@ void draw_set_rasterizer_state( struct draw_context *draw, draw->rasterizer = raster; draw->rast_handle = rast_handle; - - } + update_clip_flags(draw); + } } /* With a little more work, llvmpipe will be able to turn this off and @@ -311,14 +311,7 @@ void draw_set_clip_state( struct draw_context *draw, { draw_do_flush( draw, DRAW_FLUSH_STATE_CHANGE ); - assert(clip->nr <= PIPE_MAX_CLIP_PLANES); - memcpy(&draw->plane[6], clip->ucp, clip->nr * sizeof(clip->ucp[0])); - draw->nr_planes = 6 + clip->nr; - draw->depth_clamp = clip->depth_clamp; - - draw->pt.user.planes = (float (*) [DRAW_TOTAL_CLIP_PLANES][4]) &(draw->plane[0]); - - update_clip_flags(draw); + memcpy(&draw->plane[6], clip->ucp, sizeof(clip->ucp)); } diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 296c8fdef41..cf97e82a63c 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -1021,7 +1021,7 @@ generate_clipmask(struct gallivm_state *gallivm, boolean clip_z, boolean clip_user, boolean clip_halfz, - unsigned nr, + unsigned ucp_enable, LLVMValueRef context_ptr) { LLVMBuilderRef builder = gallivm->builder; @@ -1030,7 +1030,6 @@ generate_clipmask(struct gallivm_state *gallivm, LLVMValueRef zero, shift; LLVMValueRef pos_x, pos_y, pos_z, pos_w; LLVMValueRef plane1, planes, plane_ptr, sum; - unsigned i; struct lp_type f32_type = lp_type_float_vec(32); mask = lp_build_const_int_vec(gallivm, lp_type_int_vec(32), 0); @@ -1098,12 +1097,15 @@ generate_clipmask(struct gallivm_state *gallivm, if (clip_user) { LLVMValueRef planes_ptr = draw_jit_context_planes(gallivm, context_ptr); LLVMValueRef indices[3]; - temp = lp_build_const_int_vec(gallivm, lp_type_int_vec(32), 32); /* userclip planes */ - for (i = 6; i < nr; i++) { + while (ucp_enable) { + unsigned plane_idx = ffs(ucp_enable)-1; + ucp_enable &= ~(1 << plane_idx); + plane_idx += 6; + indices[0] = lp_build_const_int32(gallivm, 0); - indices[1] = lp_build_const_int32(gallivm, i); + indices[1] = lp_build_const_int32(gallivm, plane_idx); indices[2] = lp_build_const_int32(gallivm, 0); plane_ptr = LLVMBuildGEP(builder, planes_ptr, indices, 3, ""); @@ -1133,8 +1135,8 @@ generate_clipmask(struct gallivm_state *gallivm, sum = LLVMBuildFAdd(builder, sum, test, ""); test = lp_build_compare(gallivm, f32_type, PIPE_FUNC_GREATER, zero, sum); - temp = LLVMBuildShl(builder, temp, shift, ""); - test = LLVMBuildAnd(builder, test, temp, ""); + temp = lp_build_const_int_vec(gallivm, lp_type_int_vec(32), 1 << plane_idx); + test = LLVMBuildAnd(builder, test, temp, ""); mask = LLVMBuildOr(builder, mask, test, ""); } } @@ -1365,7 +1367,7 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant, variant->key.clip_z, variant->key.clip_user, variant->key.clip_halfz, - variant->key.nr_planes, + variant->key.ucp_enable, context_ptr); /* return clipping boolean value for function */ clipmask_bool(gallivm, clipmask, ret_ptr); @@ -1447,7 +1449,7 @@ draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store) key->bypass_viewport = llvm->draw->identity_viewport; key->clip_halfz = !llvm->draw->rasterizer->gl_rasterization_rules; key->need_edgeflags = (llvm->draw->vs.edgeflag_output ? TRUE : FALSE); - key->nr_planes = llvm->draw->nr_planes; + key->ucp_enable = llvm->draw->rasterizer->clip_plane_enable; key->pad = 0; /* All variants of this shader will have the same value for diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index bc361357de5..edd1a08e3db 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -171,8 +171,8 @@ struct draw_llvm_variant_key unsigned clip_halfz:1; unsigned bypass_viewport:1; unsigned need_edgeflags:1; - unsigned nr_planes:4; - unsigned pad:5; + unsigned ucp_enable:PIPE_MAX_CLIP_PLANES; + unsigned pad:9-PIPE_MAX_CLIP_PLANES; /* Variable number of vertex elements: */ diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h index 89653e11161..c0ef18e3ed2 100644 --- a/src/gallium/auxiliary/draw/draw_private.h +++ b/src/gallium/auxiliary/draw/draw_private.h @@ -278,8 +278,6 @@ struct draw_context /* Clip derived state: */ float plane[DRAW_TOTAL_CLIP_PLANES][4]; - unsigned nr_planes; - boolean depth_clamp; /* If a prim stage introduces new vertex attributes, they'll be stored here */ diff --git a/src/gallium/auxiliary/postprocess/pp_program.c b/src/gallium/auxiliary/postprocess/pp_program.c index 1a8a584b515..5c819a9c603 100644 --- a/src/gallium/auxiliary/postprocess/pp_program.c +++ b/src/gallium/auxiliary/postprocess/pp_program.c @@ -88,6 +88,7 @@ pp_init_prog(struct pp_queue_t *ppq, struct pipe_screen *pscreen) p->rasterizer.cull_face = PIPE_FACE_NONE; p->rasterizer.gl_rasterization_rules = 1; + p->rasterizer.depth_clip = 1; p->sampler.wrap_s = p->sampler.wrap_t = p->sampler.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE; diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c b/src/gallium/auxiliary/tgsi/tgsi_strings.c index 973b9fec0d2..aa12493d9b0 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c @@ -100,7 +100,8 @@ const char *tgsi_property_names[TGSI_PROPERTY_COUNT] = "FS_COORD_ORIGIN", "FS_COORD_PIXEL_CENTER", "FS_COLOR0_WRITES_ALL_CBUFS", - "FS_DEPTH_LAYOUT" + "FS_DEPTH_LAYOUT", + "VS_PROHIBIT_UCPS" }; const char *tgsi_type_names[5] = diff --git a/src/gallium/auxiliary/util/u_blit.c b/src/gallium/auxiliary/util/u_blit.c index bba0031d772..a10fd17cbff 100644 --- a/src/gallium/auxiliary/util/u_blit.c +++ b/src/gallium/auxiliary/util/u_blit.c @@ -62,7 +62,6 @@ struct blit_state struct pipe_rasterizer_state rasterizer; struct pipe_sampler_state sampler; struct pipe_viewport_state viewport; - struct pipe_clip_state clip; struct pipe_vertex_element velem[2]; enum pipe_texture_target internal_target; @@ -109,6 +108,7 @@ util_create_blit(struct pipe_context *pipe, struct cso_context *cso) memset(&ctx->rasterizer, 0, sizeof(ctx->rasterizer)); ctx->rasterizer.cull_face = PIPE_FACE_NONE; ctx->rasterizer.gl_rasterization_rules = 1; + ctx->rasterizer.depth_clip = 1; /* samplers */ memset(&ctx->sampler, 0, sizeof(ctx->sampler)); @@ -535,7 +535,6 @@ util_blit_pixels_writemask(struct blit_state *ctx, cso_save_fragment_shader(ctx->cso); cso_save_vertex_shader(ctx->cso); cso_save_geometry_shader(ctx->cso); - cso_save_clip(ctx->cso); cso_save_vertex_elements(ctx->cso); cso_save_vertex_buffers(ctx->cso); @@ -545,7 +544,6 @@ util_blit_pixels_writemask(struct blit_state *ctx, dst_is_depth ? &ctx->depthstencil_write : &ctx->depthstencil_keep); cso_set_rasterizer(ctx->cso, &ctx->rasterizer); - cso_set_clip(ctx->cso, &ctx->clip); cso_set_vertex_elements(ctx->cso, 2, ctx->velem); cso_set_stream_outputs(ctx->cso, 0, NULL, 0); @@ -621,7 +619,6 @@ util_blit_pixels_writemask(struct blit_state *ctx, cso_restore_fragment_shader(ctx->cso); cso_restore_vertex_shader(ctx->cso); cso_restore_geometry_shader(ctx->cso); - cso_restore_clip(ctx->cso); cso_restore_vertex_elements(ctx->cso); cso_restore_vertex_buffers(ctx->cso); cso_restore_stream_outputs(ctx->cso); @@ -731,7 +728,6 @@ util_blit_pixels_tex(struct blit_state *ctx, cso_save_fragment_shader(ctx->cso); cso_save_vertex_shader(ctx->cso); cso_save_geometry_shader(ctx->cso); - cso_save_clip(ctx->cso); cso_save_vertex_elements(ctx->cso); cso_save_vertex_buffers(ctx->cso); @@ -739,7 +735,6 @@ util_blit_pixels_tex(struct blit_state *ctx, cso_set_blend(ctx->cso, &ctx->blend); cso_set_depth_stencil_alpha(ctx->cso, &ctx->depthstencil_keep); cso_set_rasterizer(ctx->cso, &ctx->rasterizer); - cso_set_clip(ctx->cso, &ctx->clip); cso_set_vertex_elements(ctx->cso, 2, ctx->velem); cso_set_stream_outputs(ctx->cso, 0, NULL, 0); @@ -803,7 +798,6 @@ util_blit_pixels_tex(struct blit_state *ctx, cso_restore_fragment_shader(ctx->cso); cso_restore_vertex_shader(ctx->cso); cso_restore_geometry_shader(ctx->cso); - cso_restore_clip(ctx->cso); cso_restore_vertex_elements(ctx->cso); cso_restore_vertex_buffers(ctx->cso); cso_restore_stream_outputs(ctx->cso); diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c index 80fdfe0a9ae..59940d9cbe7 100644 --- a/src/gallium/auxiliary/util/u_blitter.c +++ b/src/gallium/auxiliary/util/u_blitter.c @@ -104,9 +104,6 @@ struct blitter_context_priv /* Viewport state. */ struct pipe_viewport_state viewport; - /* Clip state. */ - struct pipe_clip_state clip; - /* Destination surface dimensions. */ unsigned dst_width; unsigned dst_height; @@ -193,7 +190,6 @@ struct blitter_context *util_blitter_create(struct pipe_context *pipe) ctx->dsa_write_depth_stencil = pipe->create_depth_stencil_alpha_state(pipe, &dsa); - dsa.depth.enabled = 0; dsa.depth.writemask = 0; ctx->dsa_keep_depth_write_stencil = @@ -212,6 +208,7 @@ struct blitter_context *util_blitter_create(struct pipe_context *pipe) rs_state.cull_face = PIPE_FACE_NONE; rs_state.gl_rasterization_rules = 1; rs_state.flatshade = 1; + rs_state.depth_clip = 1; ctx->rs_state = pipe->create_rasterizer_state(pipe, &rs_state); if (ctx->has_stream_out) { @@ -439,7 +436,6 @@ static void blitter_restore_fragment_states(struct blitter_context_priv *ctx) * (depending on the operation) */ pipe->set_stencil_ref(pipe, &ctx->base.saved_stencil_ref); pipe->set_viewport_state(pipe, &ctx->base.saved_viewport); - pipe->set_clip_state(pipe, &ctx->base.saved_clip); } static void blitter_check_saved_fb_state(struct blitter_context_priv *ctx) @@ -516,9 +512,6 @@ static void blitter_set_rectangle(struct blitter_context_priv *ctx, ctx->viewport.translate[2] = 0.0f; ctx->viewport.translate[3] = 0.0f; ctx->base.pipe->set_viewport_state(ctx->base.pipe, &ctx->viewport); - - /* clip */ - ctx->base.pipe->set_clip_state(ctx->base.pipe, &ctx->clip); } static void blitter_set_clear_color(struct blitter_context_priv *ctx, diff --git a/src/gallium/auxiliary/util/u_blitter.h b/src/gallium/auxiliary/util/u_blitter.h index 4dd64c5164e..d4d30852b58 100644 --- a/src/gallium/auxiliary/util/u_blitter.h +++ b/src/gallium/auxiliary/util/u_blitter.h @@ -94,7 +94,6 @@ struct blitter_context struct pipe_framebuffer_state saved_fb_state; /**< framebuffer state */ struct pipe_stencil_ref saved_stencil_ref; /**< stencil ref */ struct pipe_viewport_state saved_viewport; - struct pipe_clip_state saved_clip; int saved_num_sampler_states; void *saved_sampler_states[PIPE_MAX_SAMPLERS]; @@ -365,13 +364,6 @@ void util_blitter_save_viewport(struct blitter_context *blitter, } static INLINE -void util_blitter_save_clip(struct blitter_context *blitter, - struct pipe_clip_state *state) -{ - blitter->saved_clip = *state; -} - -static INLINE void util_blitter_save_fragment_sampler_states( struct blitter_context *blitter, int num_sampler_states, diff --git a/src/gallium/auxiliary/util/u_dump_state.c b/src/gallium/auxiliary/util/u_dump_state.c index e44c6194c77..c728bc4021c 100644 --- a/src/gallium/auxiliary/util/u_dump_state.c +++ b/src/gallium/auxiliary/util/u_dump_state.c @@ -303,6 +303,8 @@ util_dump_rasterizer_state(FILE *stream, const struct pipe_rasterizer_state *sta util_dump_member(stream, bool, state, flatshade); util_dump_member(stream, bool, state, light_twoside); + util_dump_member(stream, bool, state, clamp_vertex_color); + util_dump_member(stream, bool, state, clamp_fragment_color); util_dump_member(stream, uint, state, front_ccw); util_dump_member(stream, uint, state, cull_face); util_dump_member(stream, uint, state, fill_front); @@ -326,6 +328,9 @@ util_dump_rasterizer_state(FILE *stream, const struct pipe_rasterizer_state *sta util_dump_member(stream, bool, state, line_last_pixel); util_dump_member(stream, bool, state, flatshade_first); util_dump_member(stream, bool, state, gl_rasterization_rules); + util_dump_member(stream, bool, state, rasterizer_discard); + util_dump_member(stream, bool, state, depth_clip); + util_dump_member(stream, uint, state, clip_plane_enable); util_dump_member(stream, float, state, line_width); util_dump_member(stream, float, state, point_size); @@ -413,8 +418,6 @@ util_dump_clip_state(FILE *stream, const struct pipe_clip_state *state) util_dump_array_end(stream); util_dump_member_end(stream); - util_dump_member(stream, uint, state, nr); - util_dump_struct_end(stream); } diff --git a/src/gallium/auxiliary/util/u_gen_mipmap.c b/src/gallium/auxiliary/util/u_gen_mipmap.c index 7cce815beba..a28d4182549 100644 --- a/src/gallium/auxiliary/util/u_gen_mipmap.c +++ b/src/gallium/auxiliary/util/u_gen_mipmap.c @@ -63,7 +63,6 @@ struct gen_mipmap_state struct pipe_depth_stencil_alpha_state depthstencil; struct pipe_rasterizer_state rasterizer; struct pipe_sampler_state sampler; - struct pipe_clip_state clip; struct pipe_vertex_element velem[2]; void *vs; @@ -1283,6 +1282,7 @@ util_create_gen_mipmap(struct pipe_context *pipe, memset(&ctx->rasterizer, 0, sizeof(ctx->rasterizer)); ctx->rasterizer.cull_face = PIPE_FACE_NONE; ctx->rasterizer.gl_rasterization_rules = 1; + ctx->rasterizer.depth_clip = 1; /* sampler state */ memset(&ctx->sampler, 0, sizeof(ctx->sampler)); @@ -1564,14 +1564,12 @@ util_gen_mipmap(struct gen_mipmap_state *ctx, cso_save_vertex_shader(ctx->cso); cso_save_geometry_shader(ctx->cso); cso_save_viewport(ctx->cso); - cso_save_clip(ctx->cso); cso_save_vertex_elements(ctx->cso); /* bind our state */ cso_set_blend(ctx->cso, &ctx->blend); cso_set_depth_stencil_alpha(ctx->cso, &ctx->depthstencil); cso_set_rasterizer(ctx->cso, &ctx->rasterizer); - cso_set_clip(ctx->cso, &ctx->clip); cso_set_vertex_elements(ctx->cso, 2, ctx->velem); cso_set_stream_outputs(ctx->cso, 0, NULL, 0); @@ -1688,7 +1686,6 @@ util_gen_mipmap(struct gen_mipmap_state *ctx, cso_restore_vertex_shader(ctx->cso); cso_restore_geometry_shader(ctx->cso); cso_restore_viewport(ctx->cso); - cso_restore_clip(ctx->cso); cso_restore_vertex_elements(ctx->cso); cso_restore_stream_outputs(ctx->cso); } diff --git a/src/gallium/auxiliary/vl/vl_compositor.c b/src/gallium/auxiliary/vl/vl_compositor.c index 3631145b3b5..0f2210c2e15 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.c +++ b/src/gallium/auxiliary/vl/vl_compositor.c @@ -305,6 +305,7 @@ init_pipe_state(struct vl_compositor *c) rast.offset_units = 1; rast.offset_scale = 1; rast.gl_rasterization_rules = 1; + rast.depth_clip = 1; c->rast = c->pipe->create_rasterizer_state(c->pipe, &rast); diff --git a/src/gallium/auxiliary/vl/vl_idct.c b/src/gallium/auxiliary/vl/vl_idct.c index 1486c00e7f0..1166de01759 100644 --- a/src/gallium/auxiliary/vl/vl_idct.c +++ b/src/gallium/auxiliary/vl/vl_idct.c @@ -517,6 +517,7 @@ init_state(struct vl_idct *idct) memset(&rs_state, 0, sizeof(rs_state)); rs_state.point_size = 1; rs_state.gl_rasterization_rules = true; + rs_state.depth_clip = 1; idct->rs_state = idct->pipe->create_rasterizer_state(idct->pipe, &rs_state); if (!idct->rs_state) goto error_rs_state; diff --git a/src/gallium/auxiliary/vl/vl_mc.c b/src/gallium/auxiliary/vl/vl_mc.c index 0f41c687f46..976b526d1a3 100644 --- a/src/gallium/auxiliary/vl/vl_mc.c +++ b/src/gallium/auxiliary/vl/vl_mc.c @@ -429,6 +429,7 @@ init_pipe_state(struct vl_mc *r) rs_state.point_quad_rasterization = true; rs_state.point_size = BLOCK_WIDTH; rs_state.gl_rasterization_rules = true; + rs_state.depth_clip = 1; r->rs_state = r->pipe->create_rasterizer_state(r->pipe, &rs_state); if (!r->rs_state) goto error_rs_state; diff --git a/src/gallium/auxiliary/vl/vl_zscan.c b/src/gallium/auxiliary/vl/vl_zscan.c index 730074c0c57..6ff4056a241 100644 --- a/src/gallium/auxiliary/vl/vl_zscan.c +++ b/src/gallium/auxiliary/vl/vl_zscan.c @@ -270,6 +270,7 @@ init_state(struct vl_zscan *zscan) memset(&rs_state, 0, sizeof(rs_state)); rs_state.gl_rasterization_rules = true; + rs_state.depth_clip = 1; zscan->rs_state = zscan->pipe->create_rasterizer_state(zscan->pipe, &rs_state); if (!zscan->rs_state) goto error_rs_state; |