mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-29 13:50:25 +01:00
i965: Remove legacy clip plane handling from geometry shaders.
We only support geometry shaders in core profiles, where gl_ClipVertex doesn't exist. Presumably the even older behavior of clipping to gl_Position isn't supported either. In fact, GLSL 1.50 page 76 claims: "The shader must also set all values in gl_ClipDistance that have been enabled via the OpenGL API, or results are undefined." So we don't need to handle legacy clipping in geometry shaders. I think Paul added this back when we were considering supporting the old GL_ARB_geometry_shader4 extension. This removes a non-orthagonal state dependency on GS compilation. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
This commit is contained in:
parent
a2151560b8
commit
294282aaa6
3 changed files with 8 additions and 33 deletions
|
|
@ -2057,11 +2057,6 @@ void gen8_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,
|
|||
|
||||
uint32_t get_hw_prim_for_gl_prim(int mode);
|
||||
|
||||
void
|
||||
brw_setup_vue_key_clip_info(struct brw_context *brw,
|
||||
struct brw_vue_prog_key *key,
|
||||
bool program_uses_clip_distance);
|
||||
|
||||
void
|
||||
gen6_upload_push_constants(struct brw_context *brw,
|
||||
const struct gl_program *prog,
|
||||
|
|
|
|||
|
|
@ -121,15 +121,6 @@ brw_codegen_gs_prog(struct brw_context *brw,
|
|||
|
||||
GLbitfield64 outputs_written = gp->program.Base.OutputsWritten;
|
||||
|
||||
/* In order for legacy clipping to work, we need to populate the clip
|
||||
* distance varying slots whenever clipping is enabled, even if the vertex
|
||||
* shader doesn't write to gl_ClipDistance.
|
||||
*/
|
||||
if (c.key.base.userclip_active) {
|
||||
outputs_written |= BITFIELD64_BIT(VARYING_SLOT_CLIP_DIST0);
|
||||
outputs_written |= BITFIELD64_BIT(VARYING_SLOT_CLIP_DIST1);
|
||||
}
|
||||
|
||||
brw_compute_vue_map(brw->intelScreen->devinfo,
|
||||
&c.prog_data.base.vue_map, outputs_written);
|
||||
|
||||
|
|
@ -310,8 +301,6 @@ brw_gs_populate_key(struct brw_context *brw,
|
|||
memset(key, 0, sizeof(*key));
|
||||
|
||||
key->base.program_string_id = gp->id;
|
||||
brw_setup_vue_key_clip_info(brw, &key->base,
|
||||
gp->program.Base.UsesClipDistanceOut);
|
||||
|
||||
/* _NEW_TEXTURE */
|
||||
brw_populate_sampler_prog_key_data(ctx, prog, stage_state->sampler_count,
|
||||
|
|
|
|||
|
|
@ -279,21 +279,6 @@ brw_vs_debug_recompile(struct brw_context *brw,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
brw_setup_vue_key_clip_info(struct brw_context *brw,
|
||||
struct brw_vue_prog_key *key,
|
||||
bool program_uses_clip_distance)
|
||||
{
|
||||
struct gl_context *ctx = &brw->ctx;
|
||||
|
||||
key->userclip_active = (ctx->Transform.ClipPlanesEnabled != 0);
|
||||
if (key->userclip_active && !program_uses_clip_distance) {
|
||||
key->nr_userclip_plane_consts
|
||||
= _mesa_logbase2(ctx->Transform.ClipPlanesEnabled) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
static bool
|
||||
brw_vs_state_dirty(struct brw_context *brw)
|
||||
{
|
||||
|
|
@ -325,8 +310,14 @@ brw_vs_populate_key(struct brw_context *brw,
|
|||
* the inputs it asks for, whether they are varying or not.
|
||||
*/
|
||||
key->base.program_string_id = vp->id;
|
||||
brw_setup_vue_key_clip_info(brw, &key->base,
|
||||
vp->program.Base.UsesClipDistanceOut);
|
||||
|
||||
if (ctx->Transform.ClipPlanesEnabled != 0) {
|
||||
key->base.userclip_active = true;
|
||||
if (!vp->program.Base.UsesClipDistanceOut) {
|
||||
key->base.nr_userclip_plane_consts =
|
||||
_mesa_logbase2(ctx->Transform.ClipPlanesEnabled) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* _NEW_POLYGON */
|
||||
if (brw->gen < 6) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue