Browse Source

opencl: Replace dated versioning with hash of source code

Luke Dashjr 11 years ago
parent
commit
0b2ecacdd9
11 changed files with 25 additions and 25 deletions
  1. 2 2
      Makefile.am
  2. 5 18
      driver-opencl.c
  3. 2 2
      make-release
  4. 11 1
      ocl.c
  5. 0 0
      opencl/diablo.cl
  6. 0 0
      opencl/diakgcn.cl
  7. 0 0
      opencl/phatk.cl
  8. 0 0
      opencl/poclbm.cl
  9. 0 0
      opencl/scrypt.cl
  10. 1 1
      util.c
  11. 4 1
      windows-build.txt

+ 2 - 2
Makefile.am

@@ -114,10 +114,10 @@ if HAVE_OPENCL
 bfgminer_SOURCES += driver-opencl.h driver-opencl.c
 bfgminer_SOURCES += ocl.c ocl.h findnonce.c findnonce.h
 bfgminer_SOURCES += adl.c adl.h adl_functions.h
-bfgminer_SOURCES += *.cl
+bfgminer_SOURCES += opencl/*.cl
 
 kernelsdir = $(pkgdatadir)/opencl
-dist_kernels_DATA = $(top_srcdir)/*.cl
+dist_kernels_DATA = $(top_srcdir)/opencl/*.cl
 
 dist_doc_DATA += README.GPU
 

+ 5 - 18
driver-opencl.c

@@ -263,7 +263,6 @@ typedef cl_int (*queue_kernel_parameters_func_t)(_clState *, struct work *, cl_u
 
 struct opencl_kernel_interface {
 	const char *kiname;
-	const char *default_filename;
 	queue_kernel_parameters_func_t queue_kernel_parameters_func;
 };
 
@@ -402,23 +401,11 @@ const char *opencl_get_kernel_interface_name(const enum cl_kernels kern)
 	return ki->kiname;
 }
 
-const char *opencl_get_default_kernel_filename(const enum cl_kernels kern)
-{
-	struct opencl_kernel_interface *ki = &kernel_interfaces[kern];
-	return ki->default_filename;
-}
-
 static
 bool _set_kernel(struct cgpu_info * const cgpu, const char *_val)
 {
 	FILE *F;
-	const enum cl_kernels kern = select_kernel(_val);
 	struct opencl_device_data * const data = cgpu->device_data;
-	{
-		const char *kname = opencl_get_default_kernel_filename(kern);
-		if (kname)
-			_val = kname;
-	}
 	
 	size_t knamelen = strlen(_val);
 	char filename[knamelen + 3 + 1];
@@ -1262,12 +1249,12 @@ cl_int queue_scrypt_kernel(_clState * const clState, struct work * const work, _
 static
 struct opencl_kernel_interface kernel_interfaces[] = {
 	{NULL},
-	{"poclbm",   "poclbm130302", queue_poclbm_kernel},
-	{"phatk",     "phatk121016", queue_phatk_kernel},
-	{"diakgcn", "diakgcn121016", queue_diakgcn_kernel},
-	{"diablo",   "diablo130302", queue_diablo_kernel},
+	{"poclbm",  queue_poclbm_kernel },
+	{"phatk",   queue_phatk_kernel  },
+	{"diakgcn", queue_diakgcn_kernel},
+	{"diablo",  queue_diablo_kernel },
 #ifdef USE_SCRYPT
-	{"scrypt",   "scrypt130511", queue_scrypt_kernel},
+	{"scrypt",  queue_scrypt_kernel },
 #endif
 };
 

+ 2 - 2
make-release

@@ -116,10 +116,10 @@ for build in "${builds[@]}"; do
 			libblkmaker/.libs/*.dll \
 			*.exe
 	fi
-	cp -v \
+	cp -vr \
 		*.exe \
 		libblkmaker/.libs/*.dll \
-		*.cl \
+		opencl \
 		example.conf \
 		windows-build.txt \
 		miner.php \

+ 11 - 1
ocl.c

@@ -32,7 +32,10 @@
 #include "driver-opencl.h"
 #include "findnonce.h"
 #include "logging.h"
+#include "miner.h"
 #include "ocl.h"
+#include "sha2.h"
+#include "util.h"
 
 /* Platform API */
 extern
@@ -655,7 +658,7 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
 			applog(LOG_INFO, "Selecting phatk kernel");
 			clState->chosen_kernel = KL_PHATK;
 		}
-		data->kernel_file = strdup(opencl_get_default_kernel_filename(clState->chosen_kernel));
+		data->kernel_file = strdup(opencl_get_kernel_interface_name(clState->chosen_kernel));
 	}
 	
 	snprintf(filename, sizeof(filename), "%s.cl", data->kernel_file);
@@ -664,6 +667,13 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
 	char *source = file_contents(filename, &pl);
 	if (!source)
 		return NULL;
+	{
+		uint8_t hash[0x20];
+		char hashhex[7];
+		sha256((void*)source, pl, hash);
+		bin2hex(hashhex, hash, 3);
+		tailsprintf(binaryfilename, sizeof(binaryfilename), "-%s", hashhex);
+	}
 	s = strstr(source, "kernel-interface:");
 	if (s)
 	{

+ 0 - 0
diablo130302.cl → opencl/diablo.cl


+ 0 - 0
diakgcn121016.cl → opencl/diakgcn.cl


+ 0 - 0
phatk121016.cl → opencl/phatk.cl


+ 0 - 0
poclbm130302.cl → opencl/poclbm.cl


+ 0 - 0
scrypt130511.cl → opencl/scrypt.cl


+ 1 - 1
util.c

@@ -2605,7 +2605,7 @@ bool sanechars[] = {
 	false, false, false, false, false, false, false, false,
 	false, false, false, false, false, false, false, false,
 	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
+	false, false, false, false, false, true , false, false,
 	true , true , true , true , true , true , true , true ,
 	true , true , false, false, false, false, false, false,
 	false, true , true , true , true , true , true , true ,

+ 4 - 1
windows-build.txt

@@ -231,11 +231,14 @@ C:\MinGW\msys\1.0\home\USER\bfgminer
 
 	bfgminer.exe
 	bfgminer-rpc.exe
-	*.cl
 	COPYING
 	LICENSE 
 	README*
 
+C:\MinGW\msys\1.0\home\USER\bfgminer\opencl
+
+	*.cl
+
 C:\MinGW\msys\1.0\home\USER\bfgminer\libblkmaker\.libs  
 
 	libblkmaker-0.1-0.dll