ctx->prog.dirty |= FD_SHADER_DIRTY_FP;
}
+ if (last_key->vclamp_color != key->vclamp_color)
+ ctx->prog.dirty |= FD_SHADER_DIRTY_VP;
+
+ if (last_key->fclamp_color != key->fclamp_color)
+ ctx->prog.dirty |= FD_SHADER_DIRTY_FP;
+
if (last_key->color_two_side != key->color_two_side)
ctx->prog.dirty |= FD_SHADER_DIRTY_FP;
{
struct fd4_context *fd4_ctx = fd4_context(ctx);
struct fd4_emit emit = {
+ .debug = &ctx->debug,
.vtx = &ctx->vtx,
.prog = &ctx->prog,
.info = info,
/* do binning pass first: */
.binning_pass = true,
.color_two_side = ctx->rasterizer->light_twoside,
+ .vclamp_color = ctx->rasterizer->clamp_vertex_color,
+ .fclamp_color = ctx->rasterizer->clamp_fragment_color,
.rasterflat = ctx->rasterizer->flatshade,
// TODO set .half_precision based on render target format,
// ie. float16 and smaller use half, float32 use full..
struct fd4_context *fd4_ctx = fd4_context(ctx);
struct fd_ringbuffer *ring = ctx->binning_ring;
struct fd4_emit emit = {
+ .debug = &ctx->debug,
.vtx = &fd4_ctx->solid_vbuf_state,
.prog = &ctx->solid_prog,
.key = {
unsigned dirty = ctx->dirty;
unsigned i;
struct fd4_emit emit = {
+ .debug = &ctx->debug,
.vtx = &fd4_ctx->solid_vbuf_state,
.prog = &ctx->solid_prog,
.key = {