freedreno/ir3: Add has_gs flag to shader key
Since the presence of GS changes how the VS operates we need to track that in the shader key. Signed-off-by: Kristian H. Kristensen <hoegsberg@google.com>
This commit is contained in:
parent
2703844cb3
commit
8f39985b01
|
@ -213,6 +213,8 @@ struct ir3_shader_key {
|
|||
*/
|
||||
unsigned rasterflat : 1;
|
||||
unsigned fclamp_color : 1;
|
||||
|
||||
unsigned has_gs : 1;
|
||||
};
|
||||
uint32_t global;
|
||||
};
|
||||
|
@ -310,9 +312,11 @@ ir3_normalize_key(struct ir3_shader_key *key, gl_shader_stage type)
|
|||
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;
|
||||
|
|
|
@ -157,6 +157,9 @@ fd6_draw_vbo(struct fd_context *ctx, const struct pipe_draw_info *info,
|
|||
.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)) {
|
||||
|
@ -209,13 +212,12 @@ fd6_draw_vbo(struct fd_context *ctx, const struct pipe_draw_info *info,
|
|||
*/
|
||||
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 |=
|
||||
|
|
Loading…
Reference in New Issue