Optimization for AMD GPU
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// rs_decode.c
|
||||
// Copyright : 2023-10-29 Yutaka Sawada
|
||||
// Copyright : 2023-11-25 Yutaka Sawada
|
||||
// License : GPL
|
||||
|
||||
#ifndef _UNICODE
|
||||
@@ -1731,10 +1731,21 @@ skip_count++;
|
||||
#endif
|
||||
} else if (src_off + src_num + src_max > source_num){
|
||||
src_num = source_num - src_off - src_max;
|
||||
if ((src_num < src_max) && (src_num + src_max <= vram_max) && (gpu_end * 2 > cpu_end)){
|
||||
src_num += src_max; // GPU担当量が少なくて、余裕がある場合は、残りも全て任せる
|
||||
if (src_num < src_max){
|
||||
if ((src_num + src_max <= vram_max) && (gpu_end * 2 > cpu_end)){
|
||||
src_num += src_max; // GPU担当量が少なくて、余裕がある場合は、残りも全て任せる
|
||||
#ifdef TIMER
|
||||
printf("GPU last +: src_off = %d, src_num = %d + %d\n", src_off, src_num - src_max, src_max);
|
||||
#endif
|
||||
} else if (src_num < src_max / 4){
|
||||
src_num = src_max / 4; // src_num が小さくなり過ぎないようにする
|
||||
#ifdef TIMER
|
||||
printf("GPU last ?: src_off = %d, src_num = %d\n", src_off, src_num);
|
||||
} else {
|
||||
printf("GPU last -: src_off = %d, src_num = %d\n", src_off, src_num);
|
||||
#endif
|
||||
}
|
||||
#ifdef TIMER
|
||||
printf("GPU last +: src_off = %d, src_num = %d + %d\n", src_off, src_num - src_max, src_max);
|
||||
} else {
|
||||
printf("GPU last 2: src_off = %d, src_num = %d\n", src_off, src_num);
|
||||
#endif
|
||||
@@ -2318,10 +2329,31 @@ time_read += GetTickCount() - time_start;
|
||||
#endif
|
||||
} else if (src_off + src_num + src_max > read_num){
|
||||
src_num = read_num - src_off - src_max;
|
||||
if ((src_num < src_max) && (src_num + src_max <= vram_max) && (gpu_end * 2 > cpu_end)){
|
||||
src_num += src_max; // GPU担当量が少なくて、余裕がある場合は、残りも全て任せる
|
||||
|
||||
if (src_num <= 0){
|
||||
src_num = src_max / 4; // src_num が 0にならないようにする
|
||||
#ifdef TIMER
|
||||
printf("GPU last ?: src_off = %d, src_num = %d\n", src_off, src_num);
|
||||
#endif
|
||||
} else
|
||||
|
||||
|
||||
|
||||
if (src_num < src_max){
|
||||
if ((src_num + src_max <= vram_max) && (gpu_end * 2 > cpu_end)){
|
||||
src_num += src_max; // GPU担当量が少なくて、余裕がある場合は、残りも全て任せる
|
||||
#ifdef TIMER
|
||||
printf("GPU last +: src_off = %d, src_num = %d + %d\n", src_off, src_num - src_max, src_max);
|
||||
#endif
|
||||
} else if (src_num < src_max / 4){
|
||||
src_num = src_max / 4; // src_num が小さくなり過ぎないようにする
|
||||
#ifdef TIMER
|
||||
printf("GPU last ?: src_off = %d, src_num = %d\n", src_off, src_num);
|
||||
} else {
|
||||
printf("GPU last -: src_off = %d, src_num = %d\n", src_off, src_num);
|
||||
#endif
|
||||
}
|
||||
#ifdef TIMER
|
||||
printf("GPU last +: src_off = %d, src_num = %d + %d\n", src_off, src_num - src_max, src_max);
|
||||
} else {
|
||||
printf("GPU last 2: src_off = %d, src_num = %d\n", src_off, src_num);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user