mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
zink: add gallium handling for geometry shaders
this is the create/bind/destroy hooks as well as the u_blitter shader save during blit setup Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7139>
This commit is contained in:
parent
d59e4b8ce6
commit
4c734da7de
2 changed files with 32 additions and 0 deletions
|
|
@ -174,6 +174,7 @@ zink_blit(struct pipe_context *pctx,
|
|||
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_vertex_shader(ctx->blitter, ctx->gfx_stages[PIPE_SHADER_VERTEX]);
|
||||
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_viewport(ctx->blitter, ctx->viewport_states);
|
||||
util_blitter_save_scissor(ctx->blitter, ctx->scissor_states);
|
||||
|
|
|
|||
|
|
@ -456,6 +456,33 @@ zink_delete_fs_state(struct pipe_context *pctx,
|
|||
zink_shader_free(zink_context(pctx), cso);
|
||||
}
|
||||
|
||||
static void *
|
||||
zink_create_gs_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_gs_state(struct pipe_context *pctx,
|
||||
void *cso)
|
||||
{
|
||||
bind_stage(zink_context(pctx), PIPE_SHADER_GEOMETRY, cso);
|
||||
}
|
||||
|
||||
static void
|
||||
zink_delete_gs_state(struct pipe_context *pctx,
|
||||
void *cso)
|
||||
{
|
||||
zink_shader_free(zink_context(pctx), cso);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
zink_program_init(struct zink_context *ctx)
|
||||
|
|
@ -467,4 +494,8 @@ zink_program_init(struct zink_context *ctx)
|
|||
ctx->base.create_fs_state = zink_create_fs_state;
|
||||
ctx->base.bind_fs_state = zink_bind_fs_state;
|
||||
ctx->base.delete_fs_state = zink_delete_fs_state;
|
||||
|
||||
ctx->base.create_gs_state = zink_create_gs_state;
|
||||
ctx->base.bind_gs_state = zink_bind_gs_state;
|
||||
ctx->base.delete_gs_state = zink_delete_gs_state;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue