[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 06:21:14 UTC 2018


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. 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?

> 
> Jan
> 
>>   }
>>   
>>   std::string
> 


More information about the mesa-dev mailing list