info->prop.gp.instanceCount = 1;
info->prop.gp.maxVertices = 1;
}
+ info->prop.cp.numThreads = 1;
info->io.pointSize = 0xff;
info->io.instanceId = 0xff;
info->io.vertexId = 0xff;
uint32_t inputOffset; /* base address for user args */
uint32_t sharedOffset; /* reserved space in s[] */
uint32_t gridInfoBase; /* base address for NTID,NCTAID */
+ uint32_t numThreads; /* max number of threads */
} cp;
} prop;
}
info->io.viewportId = -1;
+ info->prop.cp.numThreads = 1;
info->immd.data = (uint32_t *)MALLOC(scan.immediate_count * 16);
info->immd.type = (ubyte *)MALLOC(scan.immediate_count * sizeof(ubyte));
case TGSI_PROPERTY_CS_FIXED_BLOCK_WIDTH:
case TGSI_PROPERTY_CS_FIXED_BLOCK_HEIGHT:
case TGSI_PROPERTY_CS_FIXED_BLOCK_DEPTH:
- // we don't care
+ info->prop.cp.numThreads *= prop->u[0].Data;
break;
case TGSI_PROPERTY_NUM_CLIPDIST_ENABLED:
info->io.clipDistances = prop->u[0].Data;
// The address chosen is supplied to the relocation routine.
virtual void getBuiltinCode(const uint32_t **code, uint32_t *size) const = 0;
- virtual void parseDriverInfo(const struct nv50_ir_prog_info *info) { }
+ virtual void parseDriverInfo(const struct nv50_ir_prog_info *info) {
+ threads = info->prop.cp.numThreads;
+ }
virtual bool runLegalizePass(Program *, CGStage stage) const = 0;
protected:
uint32_t chipset;
+ uint32_t threads;
DataFile nativeFileMap[DATA_FILE_COUNT];
wposMask = 0x8;
sysvalLocation[SV_POSITION] = 0;
}
+
+ Target::parseDriverInfo(info);
}
} // namespace nv50_ir