Browse Source

freedreno/a3xx: move where we deal w/ binning FS

Signed-off-by: Rob Clark <robclark@freedesktop.org>
tags/12.0-branchpoint
Rob Clark 9 years ago
parent
commit
476551a21f

+ 1
- 0
src/gallium/drivers/freedreno/a3xx/fd3_draw.c View File

@@ -167,6 +167,7 @@ fd3_draw_vbo(struct fd_context *ctx, const struct pipe_draw_info *info)
emit.key.binning_pass = false;
emit.dirty = dirty;
emit.vp = NULL; /* we changed key so need to refetch vp */
emit.fp = NULL;
draw_impl(ctx, ctx->ring, &emit);
}


+ 8
- 2
src/gallium/drivers/freedreno/a3xx/fd3_emit.h View File

@@ -75,8 +75,14 @@ static inline const struct ir3_shader_variant *
fd3_emit_get_fp(struct fd3_emit *emit)
{
if (!emit->fp) {
struct fd3_shader_stateobj *so = emit->prog->fp;
emit->fp = ir3_shader_variant(so->shader, emit->key);
if (emit->key.binning_pass) {
/* use dummy stateobj to simplify binning vs non-binning: */
static const struct ir3_shader_variant binning_fp = {};
emit->fp = &binning_fp;
} else {
struct fd3_shader_stateobj *so = emit->prog->fp;
emit->fp = ir3_shader_variant(so->shader, emit->key);
}
}
return emit->fp;
}

+ 1
- 8
src/gallium/drivers/freedreno/a3xx/fd3_program.c View File

@@ -140,14 +140,7 @@ fd3_program_emit(struct fd_ringbuffer *ring, struct fd3_emit *emit,
debug_assert(nr <= ARRAY_SIZE(color_regid));

vp = fd3_emit_get_vp(emit);

if (emit->key.binning_pass) {
/* use dummy stateobj to simplify binning vs non-binning: */
static const struct ir3_shader_variant binning_fp = {};
fp = &binning_fp;
} else {
fp = fd3_emit_get_fp(emit);
}
fp = fd3_emit_get_fp(emit);

vsi = &vp->info;
fsi = &fp->info;

Loading…
Cancel
Save