radeonsi: Also export clip distances with geometry shader
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:

committed by
Michel Dänzer

parent
8afde9fa23
commit
7b19c391f4
@@ -2541,6 +2541,7 @@ int si_pipe_shader_create(
|
||||
if (si_shader_ctx.type == TGSI_PROCESSOR_GEOMETRY) {
|
||||
shader->gs_copy_shader = CALLOC_STRUCT(si_pipe_shader);
|
||||
shader->gs_copy_shader->selector = shader->selector;
|
||||
shader->gs_copy_shader->key = shader->key;
|
||||
si_shader_ctx.shader = shader->gs_copy_shader;
|
||||
if ((r = si_generate_gs_copy_shader(sctx, &si_shader_ctx, dump))) {
|
||||
free(shader->gs_copy_shader);
|
||||
|
@@ -2171,6 +2171,14 @@ static INLINE void si_shader_selector_key(struct pipe_context *ctx,
|
||||
struct si_context *sctx = (struct si_context *)ctx;
|
||||
memset(key, 0, sizeof(*key));
|
||||
|
||||
if ((sel->type == PIPE_SHADER_VERTEX || sel->type == PIPE_SHADER_GEOMETRY) &&
|
||||
sctx->queued.named.rasterizer) {
|
||||
if (sctx->queued.named.rasterizer->clip_plane_enable & 0xf0)
|
||||
key->vs.ucps_enabled |= 0x2;
|
||||
if (sctx->queued.named.rasterizer->clip_plane_enable & 0xf)
|
||||
key->vs.ucps_enabled |= 0x1;
|
||||
}
|
||||
|
||||
if (sel->type == PIPE_SHADER_VERTEX) {
|
||||
unsigned i;
|
||||
if (!sctx->vertex_elements)
|
||||
@@ -2179,11 +2187,6 @@ static INLINE void si_shader_selector_key(struct pipe_context *ctx,
|
||||
for (i = 0; i < sctx->vertex_elements->count; ++i)
|
||||
key->vs.instance_divisors[i] = sctx->vertex_elements->elements[i].instance_divisor;
|
||||
|
||||
if (sctx->queued.named.rasterizer->clip_plane_enable & 0xf0)
|
||||
key->vs.ucps_enabled |= 0x2;
|
||||
if (sctx->queued.named.rasterizer->clip_plane_enable & 0xf)
|
||||
key->vs.ucps_enabled |= 0x1;
|
||||
|
||||
key->vs.as_es = sctx->gs_shader != NULL;
|
||||
} else if (sel->type == PIPE_SHADER_FRAGMENT) {
|
||||
if (sel->fs_write_all)
|
||||
|
Reference in New Issue
Block a user