[Mesa-dev] [RFC] r600g: evergreen/cayman tessellation support

eocallaghan at alterapraxis.com eocallaghan at alterapraxis.com
Thu Dec 3 23:48:59 PST 2015


On 2015-12-04 14:03, Dieter Nützel wrote:
> Am 03.12.2015 19:57, schrieb Dave Airlie:
>> On 4 Dec 2015 03:01, "Aaron Watry" <awatry at gmail.com> wrote:
>>> 
>>> Hi Dave (and others),
>>> 
>>> I cloned your fdo r600g-tess-submit branch and gave it a spin on
>> CEDAR (Radeon 5400, kernel 4.3.0) with Heaven, and ran into a few
>> issues.
>> 
>> Just grab r600g-tess-staging
>> 
>> -submit only worked on cayman, but i d posted it here so didn't want
>> to change it during review.
>> 
>> Dave.
> 
> Hello to all,
> 
> r600g-tess-staging WORKS
> on Turks XT (6670) with poor 2 GB, RAM width 128bits DDR, but slow.
> Time for R9 290 or Tonga (R9 380X).

Tonga already works, Tonga is radeonsi not r600g, this series only 
applies to r600g.
The radeonsi gallium mesa driver has supported tess for a while now.

> 
> Only issue so far:
> Switching tessellation (with mouse) and/or wireframe (F2) in Heaven-4.0
> let system hang. But NOT hard.
> SysRq Key + S | U | B works
> But haven't had time to hunt for a useful log.
> 
> GREAT WORK!
> 
> Dieter
> 
>>> 1) Initially, I got an assertion in r600_add_atom stating that the
>> atom ID was not less than the R600_NUM_ATOMS value (id = 51,
>> R600_NUM_ATOMS=51).
>>>   I bumped R600_NUM_ATOMS to 52 for now, and that got rid of that
>> issue... although I have no idea if that was a correct fix.
>>> 
>>> 2) Next, I kept getting a segfault in evergreen_adjust_gprs at line
>> 3931. Turns out that rctx->hw_shader_stages[2].shader was null
>> (missing/miscompiled GS?).
>>> 
>>> I naively changed the code to the following, and now Heaven actually
>> runs with tessellation enabled (and it looks like it's working).
>>> 
>>>     /* gather required shader gprs */
>>>     for (i = 0; i < EG_NUM_HW_STAGES; i++) {
>>>         if (!rctx->hw_shader_stages[i].shader) {
>>>             num_gprs[i] = def_gprs[i];
>>>             continue;
>>>         }
>>>         num_gprs[i] =
>> rctx->hw_shader_stages[i].shader->shader.bc.ngpr;
>>>     }
>>> 
>>> Just figured that I'd let you know...
>>> 
>>> If you don't have CEDAR hardware to test with, feel free to ping me
>> to test any additional changes.  Note that I didn't run the benchmark
>> to completion (too slow, had to get other work done), but it didn't
>> hang my GPU in the time that I did have it running.
>>> 
>>> --Aaron
>>> 
>>> 
>>> On Mon, Nov 30, 2015 at 12:20 AM, Dave Airlie <airlied at gmail.com>
>> wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> Patchbomb time, this set of patches is a first pass at add adding
>>>> ARB_tessellation_shader support to the r600g driver. Only Evergreen
>>>> and newer GPUs support tessellation. On any of the GPUs that
>> support
>>>> native FP64, this will enable OpenGL 4.1 on them.
>>>> 
>>>> The first bunch of patches are a bit of a driver rework to get
>>>> things in better shape for tessellation, they shouldn't cause
>>>> any regressions.
>>>> 
>>>> This runs heaven on cayman and should pass all the piglits
>>>> unless I've done something wrong.
>>>> 
>>>> Development hit two HW programming fun times, one with tess and
>>>> dynamic GPR interaction requiring disabling dynamic GPRs, and
>>>> one with programming of some SIMD registers to block TESS shaders
>>>> on one unit. These fixed most of the hangs we saw during
>> development.
>>>> 
>>>> This doesn't contain SB support yet, Glenn has started working on
>> it.
>>>> 
>>>> Currently tested hw:
>>>> working: CAYMAN, REDWOOD, BARTS, TURKS
>>>> hangs on any tessellation: CAYMAN
>>>> hangs differently at least with heaven: SUMO
>>>> 
>>>> This patchset doesn't block it on any GPUs, but when merged it
>>>> probably should.
>>>> 
>>>> Also available at:
>>>> http://cgit.freedesktop.org/~airlied/mesa/log/?h=r600g-tess-submit
>>>> 
>>>> Thanks to Glenn Kennard for lots of discussion and testing.
>>>> 
>>>> Dave.
>>>> 
>>>> _______________________________________________
>>>> 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
> _______________________________________________
> 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