*/
unsigned rasterflat : 1;
unsigned fclamp_color : 1;
+
+ unsigned has_gs : 1;
};
uint32_t global;
};
key->vsaturate_r = 0;
key->vastc_srgb = 0;
key->vsamples = 0;
+ key->has_gs = false; /* FS doesn't care */
}
break;
case MESA_SHADER_VERTEX:
+ case MESA_SHADER_GEOMETRY:
key->color_two_side = false;
key->half_precision = false;
key->rasterflat = false;
.sprite_coord_mode = ctx->rasterizer->sprite_coord_mode,
};
+ if (emit.key.gs)
+ emit.key.key.has_gs = true;
+
fixup_shader_state(ctx, &emit.key.key);
if (!(ctx->dirty & FD_DIRTY_PROG)) {
*/
emit_marker6(ring, 7);
- /* leave vis mode blank for now, it will be patched up when
- * we know if we are binning or not
- */
uint32_t draw0 =
CP_DRAW_INDX_OFFSET_0_PRIM_TYPE(primtype) |
- CP_DRAW_INDX_OFFSET_0_VIS_CULL(USE_VISIBILITY) |
- 0x2000;
+ CP_DRAW_INDX_OFFSET_0_VIS_CULL(USE_VISIBILITY);
+
+ if (emit.key.gs)
+ draw0 |= CP_DRAW_INDX_OFFSET_0_GS_ENABLE;
if (info->index_size) {
draw0 |=