Commit edd9b816220aafd246a20536d9a674f4d8298724

ckolivas 2012-08-22T10:07:20

Do not add time to dynamic opencl calculations over a getwork.

diff --git a/cgminer.c b/cgminer.c
index c380a5b..471ce3d 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -4239,6 +4239,7 @@ void *miner_thread(void *userdata)
 		if (api->free_work && likely(work->pool))
 			api->free_work(mythr, work);
 		get_work(work, mythr, thr_id);
+		cgpu->new_work = true;
 
 		gettimeofday(&tv_workstart, NULL);
 		work->blk.nonce = 0;
diff --git a/driver-opencl.c b/driver-opencl.c
index 5ca659c..500a9ea 100644
--- a/driver-opencl.c
+++ b/driver-opencl.c
@@ -1532,10 +1532,16 @@ static int64_t opencl_scanhash(struct thr_info *thr, struct work *work,
 		clFinish(clState->commandQueue);
 	}
 
-	gettimeofday(&gpu->tv_gpumid, NULL);
-	if (!gpu->intervals) {
-		gpu->tv_gpustart.tv_sec = gpu->tv_gpumid.tv_sec;
-		gpu->tv_gpustart.tv_usec = gpu->tv_gpumid.tv_usec;
+	if (gpu->dynamic) {
+		gettimeofday(&gpu->tv_gpumid, NULL);
+		if (gpu->new_work) {
+			gpu->new_work = false;
+			gpu->intervals = 0;
+		}
+		if (!gpu->intervals) {
+			gpu->tv_gpustart.tv_sec = gpu->tv_gpumid.tv_sec;
+			gpu->tv_gpustart.tv_usec = gpu->tv_gpumid.tv_usec;
+		}
 	}
 
 	status = thrdata->queue_kernel_parameters(clState, &work->blk, globalThreads[0]);
diff --git a/miner.h b/miner.h
index a671992..91fe7ce 100644
--- a/miner.h
+++ b/miner.h
@@ -374,6 +374,8 @@ struct cgpu_info {
 	int intervals, hit;
 #endif
 
+	bool new_work;
+
 	float temp;
 	int cutofftemp;