[Mesa-dev] [PATCH] i965/vs: Use the proper dimensionality for the sampler result register.
Ian Romanick
idr at freedesktop.org
Wed Jan 4 11:05:42 PST 2012
On 01/04/2012 04:07 AM, Kenneth Graunke wrote:
> textureSize() returns an int, ivec2, or ivec3, but never an ivec4.
> Creating the destination register as an ivec4 triggered later failures,
> even though the register did hold the proper values.
>
> For example, piglit test vs-textureSize-compare calls textureSize on a
> 2D texture and compares the result to an expected value. Unfortunately,
> our generated code also tried to compare the third and fourth components
> which were undefined, and failed.
Heh... I figured it was probably something silly like that.
> Fixes piglit test vs-textureSize-compare as well as 19 subcases of
> oglconform's glsl-bif-tex-size test.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44339
> Signed-off-by: Kenneth Graunke<kenneth at whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
> src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> I was originally seeing a few oglconform regressions from this patch, but
> it appears that those tests give completely random results. At any rate,
> this patch does reliably fix a lot of tests, so I'm inclined to apply it.
>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> index 52e63f8..20da487 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> @@ -1786,7 +1786,7 @@ vec4_visitor::visit(ir_texture *ir)
> inst->base_mrf = 2;
> inst->mlen = inst->header_present + 1; /* always at least one */
> inst->sampler = sampler;
> - inst->dst = dst_reg(this, glsl_type::get_instance(ir->type->base_type,4,1));
> + inst->dst = dst_reg(this, ir->type);
> inst->shadow_compare = ir->shadow_comparitor != NULL;
>
> if (ir->offset != NULL)
More information about the mesa-dev
mailing list