zink: add handling for tcs and tes shader states
Reviewed-by: Erik Faye-Lund <kusmabite@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8152>
This commit is contained in:
parent
536520d056
commit
5b2c397c54
|
@ -201,6 +201,8 @@ zink_blit(struct pipe_context *pctx,
|
||||||
util_blitter_save_rasterizer(ctx->blitter, ctx->rast_state);
|
util_blitter_save_rasterizer(ctx->blitter, ctx->rast_state);
|
||||||
util_blitter_save_fragment_shader(ctx->blitter, ctx->gfx_stages[PIPE_SHADER_FRAGMENT]);
|
util_blitter_save_fragment_shader(ctx->blitter, ctx->gfx_stages[PIPE_SHADER_FRAGMENT]);
|
||||||
util_blitter_save_vertex_shader(ctx->blitter, ctx->gfx_stages[PIPE_SHADER_VERTEX]);
|
util_blitter_save_vertex_shader(ctx->blitter, ctx->gfx_stages[PIPE_SHADER_VERTEX]);
|
||||||
|
util_blitter_save_tessctrl_shader(ctx->blitter, ctx->gfx_stages[PIPE_SHADER_TESS_CTRL]);
|
||||||
|
util_blitter_save_tesseval_shader(ctx->blitter, ctx->gfx_stages[PIPE_SHADER_TESS_EVAL]);
|
||||||
util_blitter_save_geometry_shader(ctx->blitter, ctx->gfx_stages[PIPE_SHADER_GEOMETRY]);
|
util_blitter_save_geometry_shader(ctx->blitter, ctx->gfx_stages[PIPE_SHADER_GEOMETRY]);
|
||||||
util_blitter_save_framebuffer(ctx->blitter, &ctx->fb_state);
|
util_blitter_save_framebuffer(ctx->blitter, &ctx->fb_state);
|
||||||
util_blitter_save_viewport(ctx->blitter, ctx->viewport_states);
|
util_blitter_save_viewport(ctx->blitter, ctx->viewport_states);
|
||||||
|
|
|
@ -637,6 +637,46 @@ zink_bind_gs_state(struct pipe_context *pctx,
|
||||||
bind_stage(zink_context(pctx), PIPE_SHADER_GEOMETRY, cso);
|
bind_stage(zink_context(pctx), PIPE_SHADER_GEOMETRY, cso);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
zink_create_tcs_state(struct pipe_context *pctx,
|
||||||
|
const struct pipe_shader_state *shader)
|
||||||
|
{
|
||||||
|
struct nir_shader *nir;
|
||||||
|
if (shader->type != PIPE_SHADER_IR_NIR)
|
||||||
|
nir = zink_tgsi_to_nir(pctx->screen, shader->tokens);
|
||||||
|
else
|
||||||
|
nir = (struct nir_shader *)shader->ir.nir;
|
||||||
|
|
||||||
|
return zink_shader_create(zink_screen(pctx->screen), nir, &shader->stream_output);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
zink_bind_tcs_state(struct pipe_context *pctx,
|
||||||
|
void *cso)
|
||||||
|
{
|
||||||
|
bind_stage(zink_context(pctx), PIPE_SHADER_TESS_CTRL, cso);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
zink_create_tes_state(struct pipe_context *pctx,
|
||||||
|
const struct pipe_shader_state *shader)
|
||||||
|
{
|
||||||
|
struct nir_shader *nir;
|
||||||
|
if (shader->type != PIPE_SHADER_IR_NIR)
|
||||||
|
nir = zink_tgsi_to_nir(pctx->screen, shader->tokens);
|
||||||
|
else
|
||||||
|
nir = (struct nir_shader *)shader->ir.nir;
|
||||||
|
|
||||||
|
return zink_shader_create(zink_screen(pctx->screen), nir, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
zink_bind_tes_state(struct pipe_context *pctx,
|
||||||
|
void *cso)
|
||||||
|
{
|
||||||
|
bind_stage(zink_context(pctx), PIPE_SHADER_TESS_EVAL, cso);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zink_delete_shader_state(struct pipe_context *pctx, void *cso)
|
zink_delete_shader_state(struct pipe_context *pctx, void *cso)
|
||||||
{
|
{
|
||||||
|
@ -658,4 +698,12 @@ zink_program_init(struct zink_context *ctx)
|
||||||
ctx->base.create_gs_state = zink_create_gs_state;
|
ctx->base.create_gs_state = zink_create_gs_state;
|
||||||
ctx->base.bind_gs_state = zink_bind_gs_state;
|
ctx->base.bind_gs_state = zink_bind_gs_state;
|
||||||
ctx->base.delete_gs_state = zink_delete_shader_state;
|
ctx->base.delete_gs_state = zink_delete_shader_state;
|
||||||
|
|
||||||
|
ctx->base.create_tcs_state = zink_create_tcs_state;
|
||||||
|
ctx->base.bind_tcs_state = zink_bind_tcs_state;
|
||||||
|
ctx->base.delete_tcs_state = zink_delete_shader_state;
|
||||||
|
|
||||||
|
ctx->base.create_tes_state = zink_create_tes_state;
|
||||||
|
ctx->base.bind_tes_state = zink_bind_tes_state;
|
||||||
|
ctx->base.delete_tes_state = zink_delete_shader_state;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue