Reviewed-by: Roland Scheidegger <srol...@vmware.com>
Am 12.10.2015 um 07:55 schrieb Dave Airlie: > From: Dave Airlie <airl...@redhat.com> > > This fixes the fetching of fp64 inputs to the geometry shader, > > this fixes the recently posted piglit's > arb_gpu_shader_fp64/execution/gs-fs-vs-double-array.shader_test > arb_vertex_attrib_64bit/execution/gs-fs-vs-attrib-double-array.shader_test > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c > b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c > index fae604e..e1184e8 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c > +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c > @@ -1548,13 +1548,21 @@ emit_fetch_gs_input( > swizzle_index); > > assert(res); > - > - if (stype == TGSI_TYPE_UNSIGNED) { > + if (stype == TGSI_TYPE_DOUBLE) { > + LLVMValueRef swizzle_index = lp_build_const_int32(gallivm, swizzle + > 1); > + LLVMValueRef res2; > + res2 = bld->gs_iface->fetch_input(bld->gs_iface, bld_base, > + reg->Dimension.Indirect, > + vertex_index, > + reg->Register.Indirect, > + attrib_index, > + swizzle_index); > + assert(res2); > + res = emit_fetch_double(bld_base, stype, res, res2); > + } else if (stype == TGSI_TYPE_UNSIGNED) { > res = LLVMBuildBitCast(builder, res, bld_base->uint_bld.vec_type, ""); > } else if (stype == TGSI_TYPE_SIGNED) { > res = LLVMBuildBitCast(builder, res, bld_base->int_bld.vec_type, ""); > - } else if (stype == TGSI_TYPE_DOUBLE) { > - res = LLVMBuildBitCast(builder, res, bld_base->dbl_bld.vec_type, ""); > } > > return res; > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev