[Mesa-dev] [PATCH 00/10] i965: always mark used surfaces in the visitors
Francisco Jerez
currojerez at riseup.net
Tue Nov 3 05:28:58 PST 2015
Iago Toral <itoral at igalia.com> writes:
> On Fri, 2015-10-30 at 16:19 +0200, Francisco Jerez wrote:
>> Iago Toral Quiroga <itoral at igalia.com> writes:
>>
>> > Right now some opcodes that only use constant surface indexing mark them as
>> > used in the generator while others do it in the visitor. When the opcode can
>> > handle both direct and indirect surface indexing then some opcodes handle
>> > only the constant part in the generator and leave the indirect case to the
>> > caller. It is all very inconsistent and leads to confusion, since one has to
>> > go and look into the generator code in each case to check if it marks surfaces
>> > as used or not, and in which cases.
>> >
>> > when I was working on SSBOs I was tempted to try and fix this but then I
>> > forgot. Jordan bumped into this recently too when comparing visitor
>> > code paths for similar opcodes (ubos and ssbos) that need to handle this
>> > differently because they use different generator opcodes.
>> >
>> > Since the generator opcodes never handle marking of indirect surfaces, just
>> > leave surface marking to the caller completely, since callers always have
>> > all the information needed for this. It also makes things more consistent
>> > and clear for everyone: marking surfaces as used is always on the side
>> > of the visitor, never the generator.
>> >
>> > No piglit regressions observed in my IVB laptop. Would be nice to have
>> > someone giving this a try with Jenkins though, to make sure I did not miss
>> > anything in paths specific to other gens.
>>
>> Jenkins seems to be mostly happy about the series except for three
>> apparent regressions:
>>
>> piglit.spec.arb_fragment_layer_viewport.layer-gs-writes-in-range.bdwm64
>
> Mmmm... not sure what could be going on with this, at first glance, it
> does not look like this test should be affected by this series. The test
> does not use any UBOs, does not really check what is written to the FBO,
> does not emit texture accesses... Also, there are other tests in
> piglit.spec.arb_fragment_layer_viewport that do very similar stuff
> (specially the our-of-range test) and those are passing fine.
>
Odd, I guess it may have been an intermittent failing test that just
happens to have failed during your run. Mark, have you seen any of
these fail intermittently by any chance?
>> piglit.spec.arb_shader_texture_lod.compiler.tex_grad-texture2dproj-2d-vec4.frag.g965m64
>> piglit.spec.glsl-es-1_00.compiler.structure-and-array-operations.sampler-array-index.frag.g965m64
>>
>> The latter two die with a crash so you may be able to look into them
>> even if you don't have the original i965 by using INTEL_DEVID_OVERRIDE. ;)
>
> Unfortunately it seems that these don't break for me with the DEVID
> override, that's weird I guess, since they are compiler tests that I can
> fully run without INTEL_NO_HW set:
>
> $ INTEL_DEVID_OVERRIDE=0x29A2 bin/glslparsertest
> generated_tests/spec/arb_shader_texture_lod/compiler/tex_grad-texture2DProj-2D-vec4.frag pass 1.10 GL_ARB_shader_texture_lod
> Successfully compiled fragment shader
> generated_tests/spec/arb_shader_texture_lod/compiler/tex_grad-texture2DProj-2D-vec4.frag:
> PIGLIT: {"result": "pass" }
>
> $ INTEL_DEVID_OVERRIDE=0x29A2 bin/glslparsertest_gles2
> tests/spec/glsl-es-1.00/compiler/structure-and-array-operations/sampler-array-index.frag pass 1.00
> Successfully compiled fragment shader
> tests/spec/glsl-es-1.00/compiler/structure-and-array-operations/sampler-array-index.frag: 0:21(21): warning: sampler arrays indexed with non-constant expressions will be forbidden in GLSL 3.00 and later
> PIGLIT: {"result": "pass" }
>
Looking at the logs it actually seems to have been an assertion failure:
glslparsertest_gles2:
/mnt/space/jenkins/jobs/Leeroy/workspace/repos/mesa/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp:112:
void brw::fs_live_variables::setup_one_write(brw::block_data*, fs_inst*,
int, const fs_reg&): Assertion `var < num_vars' failed.
Did you test it on a debug build?
> I tried with most chipsets in between PCI_CHIP_I965_G (0x29A2) and
> PCI_CHIP_G41_G (0x2E32).
>
> Iago
>
>> >
>> > Iago Toral Quiroga (10):
>> > i965/fs: Do not mark direct used surfaces in
>> > VARYING_PULL_CONSTANT_LOAD
>> > i965/fs: Do not mark used direct surfaces in
>> > UNIFORM_PULL_CONSTANT_LOAD
>> > i965/fs: Do not mark used direct surfaces in the generator for texture
>> > opcodes
>> > i965/vec4: Do not mark used direct surfaces in
>> > VS_OPCODE_PULL_CONSTANT_LOAD
>> > i965/vec4: Do not mark used direct surfaces in the generator for
>> > texture opcodes
>> > i965/vec4: Do not mark used surfaces in SHADER_OPCODE_SHADER_TIME_ADD
>> > i965/fs: Do not mark used surfaces in SHADER_OPCODE_SHADER_TIME_ADD
>> > i965/vec4: Do not mark used surfaces in VS_OPCODE_GET_BUFFER_SIZE
>> > i965/fs: Do not mark used surfaces in FS_OPCODE_GET_BUFFER_SIZE
>> > i965/fs: Do not mark used surfaces in
>> > FS_OPCODE_FB_WRITE/FS_OPCODE_REP_FB_WRITE
>> >
>> > src/mesa/drivers/dri/i965/brw_fs.cpp | 12 ++++++-
>> > src/mesa/drivers/dri/i965/brw_fs.h | 3 +-
>> > src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 31 -----------------
>> > src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 35 +++++++++++++------
>> > src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 24 ++++++++-----
>> > src/mesa/drivers/dri/i965/brw_vec4.cpp | 3 ++
>> > src/mesa/drivers/dri/i965/brw_vec4_generator.cpp | 19 ----------
>> > src/mesa/drivers/dri/i965/brw_vec4_nir.cpp | 44 +++++++++++++++---------
>> > src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 7 ++--
>> > 9 files changed, 87 insertions(+), 91 deletions(-)
>> >
>> > --
>> > 1.9.1
>> >
>> > _______________________________________________
>> > mesa-dev mailing list
>> > mesa-dev at lists.freedesktop.org
>> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20151103/6a666825/attachment.sig>
More information about the mesa-dev
mailing list