gm107/ir: do not combine CONST loads
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 25 Nov 2016 11:17:56 +0000 (12:17 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Sat, 26 Nov 2016 18:05:08 +0000 (19:05 +0100)
This will allow to use MOV instead of LD. The main advantage is
that MOV doesn't require a read dependency barrier while LD does,
and so this will both reduce barriers pressure and the number of
stall counts needed to read data from constant memory.

This is currently only for user uniform accesses. I should do
something similar when loading from the driver constant buffer
but it seems like a bit tricky to handle for now.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp

index 2d1f1b452471dd57f16e9b045f63bf0cb0bd4ff5..8a67b0afbcab10558ae053d8c919eb4f50f2c9df 100644 (file)
@@ -406,8 +406,13 @@ TargetNVC0::isAccessSupported(DataFile file, DataType ty) const
 {
    if (ty == TYPE_NONE)
       return false;
-   if (file == FILE_MEMORY_CONST && getChipset() >= 0xe0) // wrong encoding ?
-      return typeSizeof(ty) <= 8;
+   if (file == FILE_MEMORY_CONST) {
+      if (getChipset() >= NVISA_GM107_CHIPSET)
+         return typeSizeof(ty) <= 4;
+      else
+      if (getChipset() >= NVISA_GK104_CHIPSET) // wrong encoding ?
+         return typeSizeof(ty) <= 8;
+   }
    if (ty == TYPE_B96)
       return false;
    return true;