freedreno/ir3: add texture gather support
Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
+1
-1
@@ -130,7 +130,7 @@ GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi
|
||||
GL_ARB_tessellation_shader DONE (i965/gen7+)
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, i965/gen6+, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_cube_map_array DONE (i965/gen6+, nv50, llvmpipe, softpipe)
|
||||
GL_ARB_texture_gather DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_gather DONE (freedreno/a5xx, i965/gen6+, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_texture_query_lod DONE (freedreno, i965, nv50, llvmpipe, softpipe)
|
||||
GL_ARB_transform_feedback2 DONE (i965/gen6+, nv50, llvmpipe, softpipe, swr)
|
||||
GL_ARB_transform_feedback3 DONE (i965/gen7+, llvmpipe, softpipe, swr)
|
||||
|
||||
@@ -263,6 +263,11 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
return 4;
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS:
|
||||
if (is_a5xx(screen))
|
||||
return 4;
|
||||
return 0;
|
||||
|
||||
/* Unsupported features. */
|
||||
case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
|
||||
case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
|
||||
@@ -271,7 +276,6 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
case PIPE_CAP_QUERY_PIPELINE_STATISTICS:
|
||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||
case PIPE_CAP_TGSI_VS_LAYER_VIEWPORT:
|
||||
case PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS:
|
||||
case PIPE_CAP_TEXTURE_GATHER_SM5:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
case PIPE_CAP_TEXTURE_GATHER_OFFSETS:
|
||||
|
||||
@@ -2303,9 +2303,20 @@ emit_tex(struct ir3_context *ctx, nir_tex_instr *tex)
|
||||
case nir_texop_txd: opc = OPC_SAMGQ; break;
|
||||
case nir_texop_txf: opc = OPC_ISAML; break;
|
||||
case nir_texop_lod: opc = OPC_GETLOD; break;
|
||||
case nir_texop_tg4:
|
||||
/* NOTE: a4xx might need to emulate gather w/ txf (this is
|
||||
* what blob does, seems gather is broken?), and a3xx did
|
||||
* not support it (but probably could also emulate).
|
||||
*/
|
||||
switch (tex->component) {
|
||||
case 0: opc = OPC_GATHER4R; break;
|
||||
case 1: opc = OPC_GATHER4G; break;
|
||||
case 2: opc = OPC_GATHER4B; break;
|
||||
case 3: opc = OPC_GATHER4A; break;
|
||||
}
|
||||
break;
|
||||
case nir_texop_txf_ms:
|
||||
case nir_texop_txs:
|
||||
case nir_texop_tg4:
|
||||
case nir_texop_query_levels:
|
||||
case nir_texop_texture_samples:
|
||||
case nir_texop_samples_identical:
|
||||
|
||||
Reference in New Issue
Block a user