gallium: add scalar isa shader cap
v1 -> v2: - nv30 is _NOT_ scalar as suggested by Ilia Mirkin. - Change from a screen cap to a shader cap as suggested by Eric Anholt. - radeonsi is scalar as suggested by Marek Olšák. - Change missing ones to be scalar. v2 -> v3: - r600 prefers vec4 as suggested by Marek Olšák. Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
050d8a4b42
commit
f485e5671c
|
@ -143,6 +143,8 @@ gallivm_get_shader_param(enum pipe_shader_cap param)
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
||||
return 32;
|
||||
}
|
||||
|
|
|
@ -544,6 +544,8 @@ tgsi_exec_get_shader_param(enum pipe_shader_cap param)
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
|
||||
return PIPE_MAX_SHADER_BUFFERS;
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
|
||||
|
|
|
@ -549,6 +549,7 @@ MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0
|
|||
how many HW counters are available for this stage. (0 uses SSBO atomics).
|
||||
* ``PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS``: If atomic counters are
|
||||
separate, how many atomic counter buffers are available for this stage.
|
||||
* ``PIPE_SHADER_CAP_SCALAR_ISA``: Whether the ISA is a scalar one.
|
||||
|
||||
.. _pipe_compute_cap:
|
||||
|
||||
|
|
|
@ -474,6 +474,7 @@ etna_screen_get_shader_param(struct pipe_screen *pscreen,
|
|||
case PIPE_SHADER_CAP_TGSI_SKIP_MERGE_REGISTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -593,7 +593,8 @@ fd_screen_get_shader_param(struct pipe_screen *pscreen,
|
|||
case PIPE_SHADER_CAP_TGSI_SKIP_MERGE_REGISTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
|
||||
if (is_a5xx(screen)) {
|
||||
|
|
|
@ -344,6 +344,7 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen,
|
|||
case PIPE_SHADER_CAP_TGSI_SKIP_MERGE_REGISTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 0;
|
||||
default:
|
||||
debug_printf("unknown vertex shader param %d\n", param);
|
||||
|
@ -396,6 +397,7 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen,
|
|||
case PIPE_SHADER_CAP_TGSI_SKIP_MERGE_REGISTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 0;
|
||||
default:
|
||||
debug_printf("unknown fragment shader param %d\n", param);
|
||||
|
|
|
@ -387,6 +387,8 @@ nv50_screen_get_shader_param(struct pipe_screen *pscreen,
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
default:
|
||||
NOUVEAU_ERR("unknown PIPE_SHADER_CAP %d\n", param);
|
||||
return 0;
|
||||
|
|
|
@ -426,6 +426,8 @@ nvc0_screen_get_shader_param(struct pipe_screen *pscreen,
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
|
||||
return NVC0_MAX_BUFFERS;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
|
|
|
@ -653,6 +653,8 @@ static int r600_get_shader_param(struct pipe_screen* pscreen,
|
|||
return EG_MAX_ATOMIC_BUFFERS;
|
||||
}
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
||||
/* due to a bug in the shader compiler, some loops hang
|
||||
* if they are not unrolled, see:
|
||||
|
|
|
@ -493,6 +493,8 @@ static int si_get_shader_param(struct pipe_screen* pscreen,
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -556,6 +556,8 @@ vgpu9_get_shader_param(struct pipe_screen *screen,
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
||||
return 32;
|
||||
}
|
||||
|
@ -623,6 +625,8 @@ vgpu9_get_shader_param(struct pipe_screen *screen,
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
||||
return 32;
|
||||
}
|
||||
|
@ -724,6 +728,8 @@ vgpu10_get_shader_param(struct pipe_screen *screen,
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
||||
return 32;
|
||||
default:
|
||||
|
|
|
@ -411,6 +411,8 @@ v3d_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
|
||||
|
|
|
@ -465,6 +465,8 @@ vc4_screen_get_shader_param(struct pipe_screen *pscreen,
|
|||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
default:
|
||||
fprintf(stderr, "unknown shader param %d\n", param);
|
||||
return 0;
|
||||
|
|
|
@ -373,6 +373,9 @@ virgl_get_shader_param(struct pipe_screen *screen,
|
|||
case PIPE_SHADER_CAP_FP16:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
|
||||
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_SCALAR_ISA:
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -898,6 +898,7 @@ enum pipe_shader_cap
|
|||
PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED,
|
||||
PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS,
|
||||
PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS,
|
||||
PIPE_SHADER_CAP_SCALAR_ISA,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue