[Mesa-dev] [PATCH 1/2] r600g: texture offsets for non-TXF instructions
Ian Romanick
idr at freedesktop.org
Wed Oct 2 17:03:42 PDT 2013
On 10/02/2013 04:20 PM, Marek Olšák wrote:
> I don't understand. All piglit tests should be listed in all.tests. Is
> it not the case with fs-textureOffset-2D?
I think that's a shader_runner test (file name is *.shader_test).
shader_runner tests aren't explicitly listed in all.tests. Instead some
code in all.tests finds and adds all of them. Perhaps that is adding to
the confusion here?
> Marek
>
> On Thu, Oct 3, 2013 at 12:36 AM, Grigori Goronzy <greg at chown.ath.cx> wrote:
>> On 03.10.2013 00:12, Grigori Goronzy wrote:
>>>
>>> All texture instructions can use offsets, not just TXF. Offsets into
>>> the literals array were wrong, too.
>>
>>
>> BTW, I just noticed it now: this fixes the fs-textureOffset-2D piglit test,
>> which unfortunately does not appear to be part of any of the test suites.
>>
>>
>>> ---
>>> src/gallium/drivers/r600/r600_shader.c | 20 ++++++++++----------
>>> 1 file changed, 10 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/src/gallium/drivers/r600/r600_shader.c
>>> b/src/gallium/drivers/r600/r600_shader.c
>>> index 80cdcd5..6289d97 100644
>>> --- a/src/gallium/drivers/r600/r600_shader.c
>>> +++ b/src/gallium/drivers/r600/r600_shader.c
>>> @@ -3779,16 +3779,16 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
>>> }
>>> }
>>>
>>> - if (inst->Instruction.Opcode == TGSI_OPCODE_TXF) {
>>> - /* get offset values */
>>> - if (inst->Texture.NumOffsets) {
>>> - assert(inst->Texture.NumOffsets == 1);
>>> -
>>> - offset_x = ctx->literals[inst->TexOffsets[0].Index
>>> + inst->TexOffsets[0].SwizzleX] << 1;
>>> - offset_y = ctx->literals[inst->TexOffsets[0].Index
>>> + inst->TexOffsets[0].SwizzleY] << 1;
>>> - offset_z = ctx->literals[inst->TexOffsets[0].Index
>>> + inst->TexOffsets[0].SwizzleZ] << 1;
>>> - }
>>> - } else if (inst->Instruction.Opcode == TGSI_OPCODE_TXD) {
>>> + /* get offset values */
>>> + if (inst->Texture.NumOffsets) {
>>> + assert(inst->Texture.NumOffsets == 1);
>>> +
>>> + offset_x = ctx->literals[4 * inst->TexOffsets[0].Index +
>>> inst->TexOffsets[0].SwizzleX] << 1;
>>> + offset_y = ctx->literals[4 * inst->TexOffsets[0].Index +
>>> inst->TexOffsets[0].SwizzleY] << 1;
>>> + offset_z = ctx->literals[4 * inst->TexOffsets[0].Index +
>>> inst->TexOffsets[0].SwizzleZ] << 1;
>>> + }
>>> +
>>> + if (inst->Instruction.Opcode == TGSI_OPCODE_TXD) {
>>> /* TGSI moves the sampler to src reg 3 for TXD */
>>> sampler_src_reg = 3;
>>>
>>>
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list