if ((hash_mode == 8900) || (hash_mode == 9300))
{
- #define SHADER_PER_MP 8
- #define WAVEFRONTS 64
+ uint m = 0;
+
+ if (vendor_id == VENDOR_ID_NV)
+ {
+ #define NV_SHADER_PER_MP 32
+ #define NV_WARPS 32
+
+ m = NV_SHADER_PER_MP * NV_WARPS;
+ }
+
+ else if (vendor_id == VENDOR_ID_AMD)
+ {
+ #define AMD_SHADER_PER_MP 8
+ #define AMD_WAVEFRONTS 64
+
+ m = AMD_SHADER_PER_MP * AMD_WAVEFRONTS;
+ }
uint tmto_start = 2;
uint tmto_stop = 1024;
size_scryptV /= tmto;
- size_scryptV *= gpu_processors * WAVEFRONTS * SHADER_PER_MP;
+ size_scryptV *= gpu_processors * m;
- if (size_scryptV > (device_param->gpu_maxmem_alloc / 2)) continue;
+// if (size_scryptV > (device_param->gpu_maxmem_alloc / 2)) continue;
+ if (size_scryptV > device_param->gpu_maxmem_alloc) continue;
for (uint salts_pos = 0; salts_pos < data.salts_cnt; salts_pos++)
{
data.salts_buf[salts_pos].scrypt_tmto = tmto;
- data.salts_buf[salts_pos].scrypt_phy = gpu_processors * WAVEFRONTS * SHADER_PER_MP;
+ data.salts_buf[salts_pos].scrypt_phy = gpu_processors * m;
}
break;