Skip to content

Commit 2385ecf

Browse files
committed
Fallback to CPU implementation for antialias implementation of upscale
1 parent 31be1a9 commit 2385ecf

File tree

5 files changed

+8
-3
lines changed

5 files changed

+8
-3
lines changed

ggml/src/ggml-cann/ggml-cann.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2500,6 +2500,9 @@ static bool ggml_backend_cann_supports_op(ggml_backend_dev_t dev, const ggml_ten
25002500
if (op->op_params[0] != GGML_SCALE_MODE_NEAREST) {
25012501
return false;
25022502
}
2503+
if (op->op_params[0] & GGML_SCALE_FLAG_ANTIALIAS) {
2504+
return false;
2505+
}
25032506
return true;
25042507
}
25052508
case GGML_OP_POOL_2D:

ggml/src/ggml-metal/ggml-metal-device.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -894,7 +894,7 @@ bool ggml_metal_device_supports_op(ggml_metal_device_t dev, const struct ggml_te
894894
case GGML_OP_POOL_1D:
895895
return false;
896896
case GGML_OP_UPSCALE:
897-
return op->src[0]->type == GGML_TYPE_F32 && op->op_params[0] == GGML_SCALE_MODE_NEAREST;
897+
return op->src[0]->type == GGML_TYPE_F32 && op->op_params[0] == GGML_SCALE_MODE_NEAREST && !(op->op_params[0] & GGML_SCALE_FLAG_ANTIALIAS);
898898
case GGML_OP_POOL_2D:
899899
return op->src[0]->type == GGML_TYPE_F32;
900900
case GGML_OP_PAD:

ggml/src/ggml-opencl/ggml-opencl.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3086,8 +3086,9 @@ static bool ggml_opencl_supports_op(ggml_backend_dev_t dev, const struct ggml_te
30863086
return op->src[0]->type == GGML_TYPE_F32 && op->type == GGML_TYPE_F32;
30873087
case GGML_OP_UPSCALE: {
30883088
ggml_scale_mode mode = (ggml_scale_mode)(ggml_get_op_params_i32(op, 0) & 0xFF);
3089+
const bool antialias = (ggml_scale_mode)(ggml_get_op_params_i32(op, 0) & GGML_SCALE_FLAG_ANTIALIAS);
30893090
return op->src[0]->type == GGML_TYPE_F32 && op->type == GGML_TYPE_F32 &&
3090-
(mode == GGML_SCALE_MODE_NEAREST || mode == GGML_SCALE_MODE_BILINEAR);
3091+
(mode == GGML_SCALE_MODE_NEAREST || mode == GGML_SCALE_MODE_BILINEAR) && !antialias;
30913092
}
30923093
case GGML_OP_CONV_2D:
30933094
return (op->src[0]->type == GGML_TYPE_F16 && op->src[1]->type == GGML_TYPE_F16 && op->type == GGML_TYPE_F16) ||

ggml/src/ggml-sycl/ggml-sycl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4597,7 +4597,7 @@ static bool ggml_backend_sycl_device_supports_op(ggml_backend_dev_t dev, const g
45974597
case GGML_OP_IM2COL:
45984598
return true;
45994599
case GGML_OP_UPSCALE:
4600-
return op->src[0]->type == GGML_TYPE_F32 && op->op_params[0] == GGML_SCALE_MODE_NEAREST;
4600+
return op->src[0]->type == GGML_TYPE_F32 && op->op_params[0] == GGML_SCALE_MODE_NEAREST && !(op->op_params[0] & GGML_SCALE_FLAG_ANTIALIAS);
46014601
case GGML_OP_SUM:
46024602
case GGML_OP_SUM_ROWS:
46034603
case GGML_OP_MEAN:

ggml/src/ggml-vulkan/ggml-vulkan.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14113,6 +14113,7 @@ static bool ggml_backend_vk_device_supports_op(ggml_backend_dev_t dev, const ggm
1411314113
}
1411414114
return true;
1411514115
case GGML_OP_UPSCALE:
14116+
return op->src[0]->type == GGML_TYPE_F32 && !(op->op_params[0] & GGML_SCALE_FLAG_ANTIALIAS);
1411614117
case GGML_OP_ACC:
1411714118
return op->src[0]->type == GGML_TYPE_F32;
1411814119
case GGML_OP_CONCAT:

0 commit comments

Comments
 (0)