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 <tarc...@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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev