Am 11.06.2015 um 22:38 schrieb Rob Clark: > From: Rob Clark <robcl...@freedesktop.org> > > Some hardware needs to know the sampler type. Update the blit related > shaders to include SVIEW decl. > > Signed-off-by: Rob Clark <robcl...@freedesktop.org> > --- > src/gallium/auxiliary/util/u_blit.c | 35 +++++++++--- > src/gallium/auxiliary/util/u_blitter.c | 53 +++++++++++++----- > src/gallium/auxiliary/util/u_simple_shaders.c | 78 > ++++++++++++++++++++------- > src/gallium/auxiliary/util/u_simple_shaders.h | 16 +++--- > src/gallium/auxiliary/util/u_tests.c | 3 +- > src/gallium/tests/trivial/quad-tex.c | 2 +- > 6 files changed, 140 insertions(+), 47 deletions(-) > > diff --git a/src/gallium/auxiliary/util/u_blit.c > b/src/gallium/auxiliary/util/u_blit.c > index 3f3b5fe..e3f3055 100644 > --- a/src/gallium/auxiliary/util/u_blit.c > +++ b/src/gallium/auxiliary/util/u_blit.c > @@ -65,7 +65,7 @@ struct blit_state > struct pipe_vertex_element velem[2]; > > void *vs; > - void *fs[PIPE_MAX_TEXTURE_TYPES][TGSI_WRITEMASK_XYZW + 1]; > + void *fs[PIPE_MAX_TEXTURE_TYPES][TGSI_WRITEMASK_XYZW + 1][3]; > > struct pipe_resource *vbuf; /**< quad vertices */ > unsigned vbuf_slot; > @@ -135,15 +135,17 @@ void > util_destroy_blit(struct blit_state *ctx) > { > struct pipe_context *pipe = ctx->pipe; > - unsigned i, j; > + unsigned i, j, k; > > if (ctx->vs) > pipe->delete_vs_state(pipe, ctx->vs); > > for (i = 0; i < Elements(ctx->fs); i++) { > for (j = 0; j < Elements(ctx->fs[i]); j++) { > - if (ctx->fs[i][j]) > - pipe->delete_fs_state(pipe, ctx->fs[i][j]); > + for (k = 0; k < Elements(ctx->fs[i][j]); k++) { > + if (ctx->fs[i][j][k]) > + pipe->delete_fs_state(pipe, ctx->fs[i][j][k]); > + } > } > } > > @@ -158,18 +160,34 @@ util_destroy_blit(struct blit_state *ctx) > */ > static INLINE void > set_fragment_shader(struct blit_state *ctx, uint writemask, > + enum pipe_format format, > enum pipe_texture_target pipe_tex) > { > - if (!ctx->fs[pipe_tex][writemask]) { > + enum tgsi_return_type stype; > + unsigned idx; > + > + if (util_format_is_pure_uint(format)) { > + stype = TGSI_RETURN_TYPE_UINT; > + idx = 0; > + } else if (util_format_is_pure_sint(format)) { > + stype = TGSI_RETURN_TYPE_SINT; > + idx = 1; > + } else { > + stype = TGSI_RETURN_TYPE_FLOAT; > + idx = 2; > + } > + > + if (!ctx->fs[pipe_tex][writemask][idx]) { > unsigned tgsi_tex = util_pipe_tex_to_tgsi_tex(pipe_tex, 0); > > - ctx->fs[pipe_tex][writemask] = > + ctx->fs[pipe_tex][writemask][idx] = > util_make_fragment_tex_shader_writemask(ctx->pipe, tgsi_tex, > TGSI_INTERPOLATE_LINEAR, > - writemask); > + writemask, > + stype); > } > > - cso_set_fragment_shader_handle(ctx->cso, ctx->fs[pipe_tex][writemask]); > + cso_set_fragment_shader_handle(ctx->cso, > ctx->fs[pipe_tex][writemask][idx]); > } > > > @@ -571,6 +589,7 @@ util_blit_pixels_tex(struct blit_state *ctx, > > /* shaders */ > set_fragment_shader(ctx, TGSI_WRITEMASK_XYZW, > + src_sampler_view->format, > src_sampler_view->texture->target); > set_vertex_shader(ctx); > cso_set_tessctrl_shader_handle(ctx->cso, NULL); > diff --git a/src/gallium/auxiliary/util/u_blitter.c > b/src/gallium/auxiliary/util/u_blitter.c > index 16bf90f..5dfe2c7 100644 > --- a/src/gallium/auxiliary/util/u_blitter.c > +++ b/src/gallium/auxiliary/util/u_blitter.c > @@ -81,6 +81,8 @@ struct blitter_context_priv > /* FS which outputs a color from a texture, > where the index is PIPE_TEXTURE_* to be sampled. */ > void *fs_texfetch_col[PIPE_MAX_TEXTURE_TYPES]; > + void *fs_texfetch_col_uint[PIPE_MAX_TEXTURE_TYPES]; > + void *fs_texfetch_col_sint[PIPE_MAX_TEXTURE_TYPES]; > > /* FS which outputs a depth from a texture, > where the index is PIPE_TEXTURE_* to be sampled. */ > @@ -90,6 +92,8 @@ struct blitter_context_priv > > /* FS which outputs one sample from a multisample texture. */ > void *fs_texfetch_col_msaa[PIPE_MAX_TEXTURE_TYPES]; > + void *fs_texfetch_col_msaa_uint[PIPE_MAX_TEXTURE_TYPES]; > + void *fs_texfetch_col_msaa_sint[PIPE_MAX_TEXTURE_TYPES]; > void *fs_texfetch_depth_msaa[PIPE_MAX_TEXTURE_TYPES]; > void *fs_texfetch_depthstencil_msaa[PIPE_MAX_TEXTURE_TYPES]; > void *fs_texfetch_stencil_msaa[PIPE_MAX_TEXTURE_TYPES]; > @@ -438,6 +442,10 @@ void util_blitter_destroy(struct blitter_context > *blitter) > for (i = 0; i < PIPE_MAX_TEXTURE_TYPES; i++) { > if (ctx->fs_texfetch_col[i]) > ctx->delete_fs_state(pipe, ctx->fs_texfetch_col[i]); > + if (ctx->fs_texfetch_col_sint[i]) > + ctx->delete_fs_state(pipe, ctx->fs_texfetch_col_sint[i]); > + if (ctx->fs_texfetch_col_uint[i]) > + ctx->delete_fs_state(pipe, ctx->fs_texfetch_col_uint[i]); > if (ctx->fs_texfetch_depth[i]) > ctx->delete_fs_state(pipe, ctx->fs_texfetch_depth[i]); > if (ctx->fs_texfetch_depthstencil[i]) > @@ -447,6 +455,10 @@ void util_blitter_destroy(struct blitter_context > *blitter) > > if (ctx->fs_texfetch_col_msaa[i]) > ctx->delete_fs_state(pipe, ctx->fs_texfetch_col_msaa[i]); > + if (ctx->fs_texfetch_col_msaa_sint[i]) > + ctx->delete_fs_state(pipe, ctx->fs_texfetch_col_msaa_sint[i]); > + if (ctx->fs_texfetch_col_msaa_uint[i]) > + ctx->delete_fs_state(pipe, ctx->fs_texfetch_col_msaa_uint[i]); > if (ctx->fs_texfetch_depth_msaa[i]) > ctx->delete_fs_state(pipe, ctx->fs_texfetch_depth_msaa[i]); > if (ctx->fs_texfetch_depthstencil_msaa[i]) > @@ -844,25 +856,29 @@ static void *blitter_get_fs_texfetch_col(struct > blitter_context_priv *ctx, > { > struct pipe_context *pipe = ctx->base.pipe; > unsigned tgsi_tex = util_pipe_tex_to_tgsi_tex(target, src_nr_samples); > + enum tgsi_return_type stype; > > assert(target < PIPE_MAX_TEXTURE_TYPES); > > + if (util_format_is_pure_uint(format)) > + stype = TGSI_RETURN_TYPE_UINT; > + else if (util_format_is_pure_sint(format)) > + stype = TGSI_RETURN_TYPE_SINT; > + else > + stype = TGSI_RETURN_TYPE_FLOAT; > + > if (src_nr_samples > 1) { > void **shader; > > if (dst_nr_samples <= 1) { > /* The destination has one sample, so we'll do color resolve. */ > - boolean is_uint, is_sint; > unsigned index = GET_MSAA_RESOLVE_FS_IDX(src_nr_samples); > > - is_uint = util_format_is_pure_uint(format); > - is_sint = util_format_is_pure_sint(format); > - > assert(filter < 2); > > - if (is_uint) > + if (stype == TGSI_RETURN_TYPE_UINT) > shader = &ctx->fs_resolve_uint[target][index][filter]; > - else if (is_sint) > + else if (stype == TGSI_RETURN_TYPE_SINT) > shader = &ctx->fs_resolve_sint[target][index][filter]; > else > shader = &ctx->fs_resolve[target][index][filter]; > @@ -872,12 +888,12 @@ static void *blitter_get_fs_texfetch_col(struct > blitter_context_priv *ctx, > if (filter == PIPE_TEX_FILTER_LINEAR) { > *shader = util_make_fs_msaa_resolve_bilinear(pipe, tgsi_tex, > src_nr_samples, > - is_uint, is_sint); > + stype); > } > else { > *shader = util_make_fs_msaa_resolve(pipe, tgsi_tex, > src_nr_samples, > - is_uint, is_sint); > + stype); > } > } > } > @@ -885,24 +901,37 @@ static void *blitter_get_fs_texfetch_col(struct > blitter_context_priv *ctx, > /* The destination has multiple samples, we'll do > * an MSAA->MSAA copy. > */ > - shader = &ctx->fs_texfetch_col_msaa[target]; > + if (stype == TGSI_RETURN_TYPE_UINT) > + shader = &ctx->fs_texfetch_col_msaa_uint[target]; > + else if (stype == TGSI_RETURN_TYPE_SINT) > + shader = &ctx->fs_texfetch_col_msaa_sint[target]; > + else > + shader = &ctx->fs_texfetch_col_msaa[target]; > > /* Create the fragment shader on-demand. */ > if (!*shader) { > assert(!ctx->cached_all_shaders); > - *shader = util_make_fs_blit_msaa_color(pipe, tgsi_tex); > + *shader = util_make_fs_blit_msaa_color(pipe, tgsi_tex, stype); > } > } > > return *shader; > } else { > - void **shader = &ctx->fs_texfetch_col[target]; > + void **shader; > + > + if (stype == TGSI_RETURN_TYPE_UINT) > + shader = &ctx->fs_texfetch_col_uint[target]; > + else if (stype == TGSI_RETURN_TYPE_SINT) > + shader = &ctx->fs_texfetch_col_sint[target]; > + else > + shader = &ctx->fs_texfetch_col[target]; > > /* Create the fragment shader on-demand. */ > if (!*shader) { > assert(!ctx->cached_all_shaders); > *shader = util_make_fragment_tex_shader(pipe, tgsi_tex, > - TGSI_INTERPOLATE_LINEAR); > + TGSI_INTERPOLATE_LINEAR, > + stype); > } > > return *shader; > diff --git a/src/gallium/auxiliary/util/u_simple_shaders.c > b/src/gallium/auxiliary/util/u_simple_shaders.c > index c612b67..6d29cab 100644 > --- a/src/gallium/auxiliary/util/u_simple_shaders.c > +++ b/src/gallium/auxiliary/util/u_simple_shaders.c > @@ -216,7 +216,8 @@ void * > util_make_fragment_tex_shader_writemask(struct pipe_context *pipe, > unsigned tex_target, > unsigned interp_mode, > - unsigned writemask ) > + unsigned writemask, > + enum tgsi_return_type stype) > { > struct ureg_program *ureg; > struct ureg_src sampler; > @@ -232,6 +233,8 @@ util_make_fragment_tex_shader_writemask(struct > pipe_context *pipe, > > sampler = ureg_DECL_sampler( ureg, 0 ); > > + ureg_DECL_sampler_view(ureg, 0, tex_target, stype, stype, stype, stype); > + > tex = ureg_DECL_fs_input( ureg, > TGSI_SEMANTIC_GENERIC, 0, > interp_mode ); > @@ -268,12 +271,14 @@ util_make_fragment_tex_shader_writemask(struct > pipe_context *pipe, > */ > void * > util_make_fragment_tex_shader(struct pipe_context *pipe, unsigned tex_target, > - unsigned interp_mode) > + unsigned interp_mode, > + enum tgsi_return_type stype) > { > return util_make_fragment_tex_shader_writemask( pipe, > tex_target, > interp_mode, > - TGSI_WRITEMASK_XYZW ); > + TGSI_WRITEMASK_XYZW, > + stype ); > } > > > @@ -298,6 +303,12 @@ util_make_fragment_tex_shader_writedepth(struct > pipe_context *pipe, > > sampler = ureg_DECL_sampler( ureg, 0 ); > > + ureg_DECL_sampler_view(ureg, 0, tex_target, > + TGSI_RETURN_TYPE_FLOAT, > + TGSI_RETURN_TYPE_FLOAT, > + TGSI_RETURN_TYPE_FLOAT, > + TGSI_RETURN_TYPE_FLOAT); > + > tex = ureg_DECL_fs_input( ureg, > TGSI_SEMANTIC_GENERIC, 0, > interp_mode ); > @@ -343,7 +354,17 @@ util_make_fragment_tex_shader_writedepthstencil(struct > pipe_context *pipe, > return NULL; > > depth_sampler = ureg_DECL_sampler( ureg, 0 ); > + ureg_DECL_sampler_view(ureg, 0, tex_target, > + TGSI_RETURN_TYPE_FLOAT, > + TGSI_RETURN_TYPE_FLOAT, > + TGSI_RETURN_TYPE_FLOAT, > + TGSI_RETURN_TYPE_FLOAT); > stencil_sampler = ureg_DECL_sampler( ureg, 1 ); > + ureg_DECL_sampler_view(ureg, 0, tex_target, > + TGSI_RETURN_TYPE_UINT, > + TGSI_RETURN_TYPE_UINT, > + TGSI_RETURN_TYPE_UINT, > + TGSI_RETURN_TYPE_UINT); > > tex = ureg_DECL_fs_input( ureg, > TGSI_SEMANTIC_GENERIC, 0, > @@ -398,6 +419,12 @@ util_make_fragment_tex_shader_writestencil(struct > pipe_context *pipe, > > stencil_sampler = ureg_DECL_sampler( ureg, 0 ); > > + ureg_DECL_sampler_view(ureg, 0, tex_target, > + TGSI_RETURN_TYPE_UINT, > + TGSI_RETURN_TYPE_UINT, > + TGSI_RETURN_TYPE_UINT, > + TGSI_RETURN_TYPE_UINT); > + > tex = ureg_DECL_fs_input( ureg, > TGSI_SEMANTIC_GENERIC, 0, > interp_mode ); > @@ -512,6 +539,7 @@ util_make_fragment_cloneinput_shader(struct pipe_context > *pipe, int num_cbufs, > static void * > util_make_fs_blit_msaa_gen(struct pipe_context *pipe, > unsigned tgsi_tex, > + const char *samp_type, > const char *output_semantic, > const char *output_mask) > { > @@ -519,6 +547,7 @@ util_make_fs_blit_msaa_gen(struct pipe_context *pipe, > "FRAG\n" > "DCL IN[0], GENERIC[0], LINEAR\n" > "DCL SAMP[0]\n" > + "DCL SVIEW[0], %s, %s\n" > "DCL OUT[0], %s\n" > "DCL TEMP[0]\n" > > @@ -534,7 +563,8 @@ util_make_fs_blit_msaa_gen(struct pipe_context *pipe, > assert(tgsi_tex == TGSI_TEXTURE_2D_MSAA || > tgsi_tex == TGSI_TEXTURE_2D_ARRAY_MSAA); > > - sprintf(text, shader_templ, output_semantic, output_mask, type); > + sprintf(text, shader_templ, type, samp_type, > + output_semantic, output_mask, type); > > if (!tgsi_text_translate(text, tokens, Elements(tokens))) { > puts(text); > @@ -556,9 +586,19 @@ util_make_fs_blit_msaa_gen(struct pipe_context *pipe, > */ > void * > util_make_fs_blit_msaa_color(struct pipe_context *pipe, > - unsigned tgsi_tex) > + unsigned tgsi_tex, > + enum tgsi_return_type stype) > { > - return util_make_fs_blit_msaa_gen(pipe, tgsi_tex, > + const char *samp_type; > + > + if (stype == TGSI_RETURN_TYPE_UINT) > + samp_type = "UINT"; > + else if (stype == TGSI_RETURN_TYPE_SINT) > + samp_type = "SINT"; > + else > + samp_type = "FLOAT"; > + > + return util_make_fs_blit_msaa_gen(pipe, tgsi_tex, samp_type, > "COLOR[0]", ""); > } > > @@ -572,7 +612,7 @@ void * > util_make_fs_blit_msaa_depth(struct pipe_context *pipe, > unsigned tgsi_tex) > { > - return util_make_fs_blit_msaa_gen(pipe, tgsi_tex, > + return util_make_fs_blit_msaa_gen(pipe, tgsi_tex, "FLOAT", > "POSITION", ".z"); > } > > @@ -586,7 +626,7 @@ void * > util_make_fs_blit_msaa_stencil(struct pipe_context *pipe, > unsigned tgsi_tex) > { > - return util_make_fs_blit_msaa_gen(pipe, tgsi_tex, > + return util_make_fs_blit_msaa_gen(pipe, tgsi_tex, "UINT", > "STENCIL", ".y"); > } > > @@ -640,7 +680,7 @@ util_make_fs_blit_msaa_depthstencil(struct pipe_context > *pipe, > void * > util_make_fs_msaa_resolve(struct pipe_context *pipe, > unsigned tgsi_tex, unsigned nr_samples, > - boolean is_uint, boolean is_sint) > + enum tgsi_return_type stype) > { > struct ureg_program *ureg; > struct ureg_src sampler, coord; > @@ -653,6 +693,7 @@ util_make_fs_msaa_resolve(struct pipe_context *pipe, > > /* Declarations. */ > sampler = ureg_DECL_sampler(ureg, 0); > + ureg_DECL_sampler_view(ureg, 0, tgsi_tex, stype, stype, stype, stype); > coord = ureg_DECL_fs_input(ureg, TGSI_SEMANTIC_GENERIC, 0, > TGSI_INTERPOLATE_LINEAR); > out = ureg_DECL_output(ureg, TGSI_SEMANTIC_COLOR, 0); > @@ -670,9 +711,9 @@ util_make_fs_msaa_resolve(struct pipe_context *pipe, > ureg_imm1u(ureg, i)); > ureg_TXF(ureg, tmp, tgsi_tex, ureg_src(tmp_coord), sampler); > > - if (is_uint) > + if (stype == TGSI_RETURN_TYPE_UINT) > ureg_U2F(ureg, tmp, ureg_src(tmp)); > - else if (is_sint) > + else if (stype == TGSI_RETURN_TYPE_SINT) > ureg_I2F(ureg, tmp, ureg_src(tmp)); > > /* Add it to the sum.*/ > @@ -683,9 +724,9 @@ util_make_fs_msaa_resolve(struct pipe_context *pipe, > ureg_MUL(ureg, tmp_sum, ureg_src(tmp_sum), > ureg_imm1f(ureg, 1.0 / nr_samples)); > > - if (is_uint) > + if (stype == TGSI_RETURN_TYPE_UINT) > ureg_F2U(ureg, out, ureg_src(tmp_sum)); > - else if (is_sint) > + else if (stype == TGSI_RETURN_TYPE_SINT) > ureg_F2I(ureg, out, ureg_src(tmp_sum)); > else > ureg_MOV(ureg, out, ureg_src(tmp_sum)); > @@ -699,7 +740,7 @@ util_make_fs_msaa_resolve(struct pipe_context *pipe, > void * > util_make_fs_msaa_resolve_bilinear(struct pipe_context *pipe, > unsigned tgsi_tex, unsigned nr_samples, > - boolean is_uint, boolean is_sint) > + enum tgsi_return_type stype) > { > struct ureg_program *ureg; > struct ureg_src sampler, coord; > @@ -713,6 +754,7 @@ util_make_fs_msaa_resolve_bilinear(struct pipe_context > *pipe, > > /* Declarations. */ > sampler = ureg_DECL_sampler(ureg, 0); > + ureg_DECL_sampler_view(ureg, 0, tgsi_tex, stype, stype, stype, stype); > coord = ureg_DECL_fs_input(ureg, TGSI_SEMANTIC_GENERIC, 0, > TGSI_INTERPOLATE_LINEAR); > out = ureg_DECL_output(ureg, TGSI_SEMANTIC_COLOR, 0); > @@ -744,9 +786,9 @@ util_make_fs_msaa_resolve_bilinear(struct pipe_context > *pipe, > ureg_imm1u(ureg, i)); > ureg_TXF(ureg, tmp, tgsi_tex, ureg_src(tmp_coord[c]), sampler); > > - if (is_uint) > + if (stype == TGSI_RETURN_TYPE_UINT) > ureg_U2F(ureg, tmp, ureg_src(tmp)); > - else if (is_sint) > + else if (stype == TGSI_RETURN_TYPE_SINT) > ureg_I2F(ureg, tmp, ureg_src(tmp)); > > /* Add it to the sum.*/ > @@ -778,9 +820,9 @@ util_make_fs_msaa_resolve_bilinear(struct pipe_context > *pipe, > ureg_src(top)); > > /* Convert to the texture format and return. */ > - if (is_uint) > + if (stype == TGSI_RETURN_TYPE_UINT) > ureg_F2U(ureg, out, ureg_src(tmp)); > - else if (is_sint) > + else if (stype == TGSI_RETURN_TYPE_SINT) > ureg_F2I(ureg, out, ureg_src(tmp)); > else > ureg_MOV(ureg, out, ureg_src(tmp)); > diff --git a/src/gallium/auxiliary/util/u_simple_shaders.h > b/src/gallium/auxiliary/util/u_simple_shaders.h > index dd282e0..08d798e 100644 > --- a/src/gallium/auxiliary/util/u_simple_shaders.h > +++ b/src/gallium/auxiliary/util/u_simple_shaders.h > @@ -68,15 +68,16 @@ extern void * > util_make_layered_clear_geometry_shader(struct pipe_context *pipe); > > extern void * > -util_make_fragment_tex_shader_writemask(struct pipe_context *pipe, > +util_make_fragment_tex_shader_writemask(struct pipe_context *pipe, > unsigned tex_target, > unsigned interp_mode, > - unsigned writemask); > + unsigned writemask, > + enum tgsi_return_type stype); > > extern void * > util_make_fragment_tex_shader(struct pipe_context *pipe, unsigned tex_target, > - unsigned interp_mode); > - > + unsigned interp_mode, > + enum tgsi_return_type stype); > > extern void * > util_make_fragment_tex_shader_writedepth(struct pipe_context *pipe, > @@ -115,7 +116,8 @@ util_make_fragment_cloneinput_shader(struct pipe_context > *pipe, int num_cbufs, > > extern void * > util_make_fs_blit_msaa_color(struct pipe_context *pipe, > - unsigned tgsi_tex); > + unsigned tgsi_tex, > + enum tgsi_return_type stype); > > > extern void * > @@ -136,13 +138,13 @@ util_make_fs_blit_msaa_stencil(struct pipe_context > *pipe, > void * > util_make_fs_msaa_resolve(struct pipe_context *pipe, > unsigned tgsi_tex, unsigned nr_samples, > - boolean is_uint, boolean is_sint); > + enum tgsi_return_type stype); > > > void * > util_make_fs_msaa_resolve_bilinear(struct pipe_context *pipe, > unsigned tgsi_tex, unsigned nr_samples, > - boolean is_uint, boolean is_sint); > + enum tgsi_return_type stype); > > #ifdef __cplusplus > } > diff --git a/src/gallium/auxiliary/util/u_tests.c > b/src/gallium/auxiliary/util/u_tests.c > index fe54972..6a489d6 100644 > --- a/src/gallium/auxiliary/util/u_tests.c > +++ b/src/gallium/auxiliary/util/u_tests.c > @@ -373,7 +373,8 @@ null_sampler_view(struct pipe_context *ctx, unsigned > tgsi_tex_target) > > /* Fragment shader. */ > fs = util_make_fragment_tex_shader(ctx, tgsi_tex_target, > - TGSI_INTERPOLATE_LINEAR); > + TGSI_INTERPOLATE_LINEAR, > + TGSI_RETURN_TYPE_FLOAT); > cso_set_fragment_shader_handle(cso, fs); > > /* Vertex shader. */ > diff --git a/src/gallium/tests/trivial/quad-tex.c > b/src/gallium/tests/trivial/quad-tex.c > index abecedb..577197d 100644 > --- a/src/gallium/tests/trivial/quad-tex.c > +++ b/src/gallium/tests/trivial/quad-tex.c > @@ -270,7 +270,7 @@ static void init_prog(struct program *p) > } > > /* fragment shader */ > - p->fs = util_make_fragment_tex_shader(p->pipe, TGSI_TEXTURE_2D, > TGSI_INTERPOLATE_LINEAR); > + p->fs = util_make_fragment_tex_shader(p->pipe, TGSI_TEXTURE_2D, > TGSI_INTERPOLATE_LINEAR, TGSI_RETURN_TYPE_FLOAT); That's a really long line...
> } > > static void close_prog(struct program *p) > Reviewed-by: Roland Scheidegger <srol...@vmware.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev