[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 04:59:45 UTC 2018


On 02/02/18 15:12, Ilia Mirkin wrote:
> Seems like the proper solution to this problem is to use something
> like ST_DEBUG=nir (which would in turn check the SUPPORTED_IRS bitmap)
> rather than trying to hack drivers...

That sounds like more of a hack to me. What happend when nir becomes the 
default? As it stands PIPE_SHADER_CAP_PREFERRED_IR is being used for 2
different uses cases. 1. for getting the preferred IR to be used with 
clover and 2. for getting the IR to be used with OpenGL.

The use case for clover is used to include PIPE_SHADER_IR_LLVM but that 
has been gone for a while now, so it's not really needed anymore. IMO 
this patch improves on the current situation.

> 
> On Thu, Feb 1, 2018 at 11:03 PM, Timothy Arceri <tarceri at itsqueeze.com> 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;
>>   }
>>
>>   std::string
>> --
>> 2.14.3
>>
>> _______________________________________________
>> 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