[Mesa-dev] [PATCH 11/11] r600/radeonsi/clover: always assume PIPE_SHADER_IR_NATIVE for clover

Timothy Arceri tarceri at itsqueeze.com
Fri Feb 2 07:07:14 UTC 2018



On 02/02/18 17:21, Timothy Arceri wrote:
> On 02/02/18 16:38, Jan Vesely wrote:
>> On Fri, 2018-02-02 at 15:03 +1100, Timothy Arceri wrote:
>>> When PIPE_SHADER_IR_LLVM existed this query made sense but now it
>>> always returns PIPE_SHADER_IR_NATIVE. Also it is now conlicting
>>> with PIPE_SHADER_IR_NIR for compute shaders, so just assume this
>>> is always PIPE_SHADER_IR_NATIVE for clover.
>>>
>>> This change indirectly enables NIR support for compute shaders
>>> on radeonsi.
>>> ---
>>>   src/gallium/drivers/r600/r600_pipe.c              | 6 +-----
>>>   src/gallium/drivers/radeonsi/si_get.c             | 3 ---
>>>   src/gallium/state_trackers/clover/core/device.cpp | 3 +--
>>>   3 files changed, 2 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/src/gallium/drivers/r600/r600_pipe.c 
>>> b/src/gallium/drivers/r600/r600_pipe.c
>>> index 6c021e568d..287fe497ca 100644
>>> --- a/src/gallium/drivers/r600/r600_pipe.c
>>> +++ b/src/gallium/drivers/r600/r600_pipe.c
>>> @@ -595,11 +595,7 @@ static int r600_get_shader_param(struct 
>>> pipe_screen* pscreen,
>>>       case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
>>>           return 16;
>>>           case PIPE_SHADER_CAP_PREFERRED_IR:
>>> -        if (shader == PIPE_SHADER_COMPUTE) {
>>> -            return PIPE_SHADER_IR_NATIVE;
>>> -        } else {
>>> -            return PIPE_SHADER_IR_TGSI;
>>> -        }
>>> +        return PIPE_SHADER_IR_TGSI;
>>>       case PIPE_SHADER_CAP_SUPPORTED_IRS:
>>>           if (rscreen->b.family >= CHIP_CEDAR)
>>>               return (1 << PIPE_SHADER_IR_TGSI);
>>> diff --git a/src/gallium/drivers/radeonsi/si_get.c 
>>> b/src/gallium/drivers/radeonsi/si_get.c
>>> index 40f4cc267e..46cc190db1 100644
>>> --- a/src/gallium/drivers/radeonsi/si_get.c
>>> +++ b/src/gallium/drivers/radeonsi/si_get.c
>>> @@ -391,9 +391,6 @@ static int si_get_shader_param(struct 
>>> pipe_screen* pscreen,
>>>           break;
>>>       case PIPE_SHADER_COMPUTE:
>>>           switch (param) {
>>> -        case PIPE_SHADER_CAP_PREFERRED_IR:
>>> -            return PIPE_SHADER_IR_NATIVE;
>>> -
>>>           case PIPE_SHADER_CAP_SUPPORTED_IRS: {
>>>               int ir = 1 << PIPE_SHADER_IR_NATIVE;
>>> diff --git a/src/gallium/state_trackers/clover/core/device.cpp 
>>> b/src/gallium/state_trackers/clover/core/device.cpp
>>> index 9dd7eed3f1..116f0c7604 100644
>>> --- a/src/gallium/state_trackers/clover/core/device.cpp
>>> +++ b/src/gallium/state_trackers/clover/core/device.cpp
>>> @@ -243,8 +243,7 @@ device::vendor_name() const {
>>>   enum pipe_shader_ir
>>>   device::ir_format() const {
>>> -   return (enum pipe_shader_ir) pipe->get_shader_param(
>>> -      pipe, PIPE_SHADER_COMPUTE, PIPE_SHADER_CAP_PREFERRED_IR);
>>> +   return PIPE_SHADER_IR_NATIVE;
>>
>> This looks like it forces IR_NATIVE for absolutely everybody. Why
>> should other devices use IR_NATIVE just because radeonsi wants
>> experimental NIR for GL?
> 
> It's not just about experimental NIR. If say freedreno or any other nir 
> driver was to use clover they would have the same problem.

Well it would be return PIPE_SHADER_IR_NIR here at least.

> Also I'm 99% 
> certain that no drivers other than radeonsi and r600 even care what this 
> value is. All other drivers have this set to  PIPE_SHADER_IR_TGSI does 
> that make anymore sense?

I see no there is indeed a tgsi path for clover. I guess maybe this 
change has more impact than I first thought.

Happy to here suggestions for solving the current conflict in uses of 
PIPE_SHADER_CAP_PREFERRED_IR.

> 
>>
>> Jan
>>
>>>   }
>>>   std::string
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list