[Mesa-dev] [RFC] r600g: evergreen/cayman tessellation support
Dieter Nützel
Dieter at nuetzel-hh.de
Thu Dec 3 19:03:53 PST 2015
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).
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
More information about the mesa-dev
mailing list