Check for gpu return times of >= 0, not just 0, to fix intensity dropping to -10.
diff --git a/driver-opencl.c b/driver-opencl.c
index 90606fa..2cda939 100644
--- a/driver-opencl.c
+++ b/driver-opencl.c
@@ -1355,6 +1355,7 @@ static uint64_t opencl_scanhash(struct thr_info *thr, struct work *work,
unsigned int hashes;
/* This finish flushes the readbuffer set with CL_FALSE later */
+ gettimeofday(&gpu->tv_gpustart, NULL);
clFinish(clState->commandQueue);
gettimeofday(&gpu->tv_gpuend, NULL);
@@ -1364,7 +1365,7 @@ static uint64_t opencl_scanhash(struct thr_info *thr, struct work *work,
timersub(&gpu->tv_gpuend, &gpu->tv_gpustart, &diff);
gpu_us = diff.tv_sec * 1000000 + diff.tv_usec;
- if (likely(gpu_us > 0)) {
+ if (likely(gpu_us >= 0)) {
gpu->gpu_us_average = (gpu->gpu_us_average + gpu_us * 0.63) / 1.63;
/* Try to not let the GPU be out for longer than
@@ -1410,8 +1411,6 @@ static uint64_t opencl_scanhash(struct thr_info *thr, struct work *work,
clFinish(clState->commandQueue);
}
- gettimeofday(&gpu->tv_gpustart, NULL);
-
if (clState->goffset) {
size_t global_work_offset[1];