[Mesa-dev] [PATCH 4/4] st/mesa: emit TXQS, support ARB_shader_texture_image_samples

Brian Paul brianp at vmware.com
Fri Sep 11 07:43:16 PDT 2015


On 09/10/2015 09:15 PM, Ilia Mirkin wrote:
> This is enabled for all drivers that support MS textures. The image
> component of the ext is a no-op since there is no image support in
> gallium (yet).
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>   src/mesa/state_tracker/st_extensions.c     | 1 +
>   src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 6 +++++-
>   2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
> index 884761c..d554e4d 100644
> --- a/src/mesa/state_tracker/st_extensions.c
> +++ b/src/mesa/state_tracker/st_extensions.c
> @@ -449,6 +449,7 @@ void st_init_extensions(struct pipe_screen *screen,
>         { o(ARB_point_sprite),                 PIPE_CAP_POINT_SPRITE                     },
>         { o(ARB_seamless_cube_map),            PIPE_CAP_SEAMLESS_CUBE_MAP                },
>         { o(ARB_shader_stencil_export),        PIPE_CAP_SHADER_STENCIL_EXPORT            },
> +      { o(ARB_shader_texture_image_samples), PIPE_CAP_TEXTURE_MULTISAMPLE              },
>         { o(ARB_shader_texture_lod),           PIPE_CAP_SM3                              },
>         { o(ARB_shadow),                       PIPE_CAP_TEXTURE_SHADOW_MAP               },
>         { o(ARB_texture_buffer_object),        PIPE_CAP_TEXTURE_BUFFER_OBJECTS           },
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 625c4e9..c3a8c11 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -3229,7 +3229,8 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
>         opcode = TGSI_OPCODE_LODQ;
>         break;
>      case ir_texture_samples:
> -      unreachable("unexpected texture op");
> +      opcode = TGSI_OPCODE_TXQS;
> +      break;
>      }
>
>      if (ir->projector) {
> @@ -3339,6 +3340,8 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
>            emit_asm(ir, TGSI_OPCODE_MOV, result_dst, levels_src);
>         } else
>            inst = emit_asm(ir, opcode, result_dst, lod_info);
> +   } else if (opcode == TGSI_OPCODE_TXQS) {
> +      inst = emit_asm(ir, opcode, result_dst);
>      } else if (opcode == TGSI_OPCODE_TXF) {
>         inst = emit_asm(ir, opcode, result_dst, coord);
>      } else if (opcode == TGSI_OPCODE_TXL2 || opcode == TGSI_OPCODE_TXB2) {
> @@ -5030,6 +5033,7 @@ compile_tgsi_instruction(struct st_translate *t,
>      case TGSI_OPCODE_TXL:
>      case TGSI_OPCODE_TXP:
>      case TGSI_OPCODE_TXQ:
> +   case TGSI_OPCODE_TXQS:
>      case TGSI_OPCODE_TXF:
>      case TGSI_OPCODE_TEX2:
>      case TGSI_OPCODE_TXB2:
>

Reviewed-by: Brian Paul <brianp at vmware.com>



More information about the mesa-dev mailing list