All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] amdgpu/dc: inline a bunch of float operations.
@ 2017-09-28  0:45 Dave Airlie
       [not found] ` <20170928004526.6770-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Dave Airlie @ 2017-09-28  0:45 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Dave Airlie <airlied@redhat.com>

This reduces code size for the bw calcs code.

Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 .../gpu/drm/amd/display/dc/calcs/dcn_calc_math.c   | 29 -----------------
 .../gpu/drm/amd/display/dc/calcs/dcn_calc_math.h   | 36 ++++++++++++++++++----
 2 files changed, 30 insertions(+), 35 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c
index a184744..05cf5f7 100644
--- a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c
+++ b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c
@@ -25,25 +25,6 @@
 
 #include "dcn_calc_math.h"
 
-float dcn_bw_mod(const float arg1, const float arg2)
-{
-	return arg1 - arg1 * ((int) (arg1 / arg2));
-}
-
-float dcn_bw_min2(const float arg1, const float arg2)
-{
-	return arg1 < arg2 ? arg1 : arg2;
-}
-
-unsigned int dcn_bw_max(const unsigned int arg1, const unsigned int arg2)
-{
-	return arg1 > arg2 ? arg1 : arg2;
-}
-float dcn_bw_max2(const float arg1, const float arg2)
-{
-	return arg1 > arg2 ? arg1 : arg2;
-}
-
 float dcn_bw_floor2(const float arg, const float significance)
 {
 	if (significance == 0)
@@ -59,16 +40,6 @@ float dcn_bw_ceil2(const float arg, const float significance)
 	return flr + 0.00001 >= arg ? arg : flr + significance;
 }
 
-float dcn_bw_max3(float v1, float v2, float v3)
-{
-	return v3 > dcn_bw_max2(v1, v2) ? v3 : dcn_bw_max2(v1, v2);
-}
-
-float dcn_bw_max5(float v1, float v2, float v3, float v4, float v5)
-{
-	return dcn_bw_max3(v1, v2, v3) > dcn_bw_max2(v4, v5) ? dcn_bw_max3(v1, v2, v3) : dcn_bw_max2(v4, v5);
-}
-
 float dcn_bw_pow(float a, float exp)
 {
 	float temp;
diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.h b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.h
index f46ab0e..6f66d9d 100644
--- a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.h
+++ b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.h
@@ -26,14 +26,38 @@
 #ifndef _DCN_CALC_MATH_H_
 #define _DCN_CALC_MATH_H_
 
-float dcn_bw_mod(const float arg1, const float arg2);
-float dcn_bw_min2(const float arg1, const float arg2);
-unsigned int dcn_bw_max(const unsigned int arg1, const unsigned int arg2);
-float dcn_bw_max2(const float arg1, const float arg2);
+static inline float dcn_bw_mod(const float arg1, const float arg2)
+{
+	return arg1 - arg1 * ((int) (arg1 / arg2));
+}
+
+static inline float dcn_bw_min2(const float arg1, const float arg2)
+{
+	return arg1 < arg2 ? arg1 : arg2;
+}
+
+static inline unsigned int dcn_bw_max(const unsigned int arg1, const unsigned int arg2)
+{
+	return arg1 > arg2 ? arg1 : arg2;
+}
+
+static inline float dcn_bw_max2(const float arg1, const float arg2)
+{
+	return arg1 > arg2 ? arg1 : arg2;
+}
+
+static inline float dcn_bw_max3(float v1, float v2, float v3)
+{
+	return v3 > dcn_bw_max2(v1, v2) ? v3 : dcn_bw_max2(v1, v2);
+}
+
+static inline float dcn_bw_max5(float v1, float v2, float v3, float v4, float v5)
+{
+	return dcn_bw_max3(v1, v2, v3) > dcn_bw_max2(v4, v5) ? dcn_bw_max3(v1, v2, v3) : dcn_bw_max2(v4, v5);
+}
+
 float dcn_bw_floor2(const float arg, const float significance);
 float dcn_bw_ceil2(const float arg, const float significance);
-float dcn_bw_max3(float v1, float v2, float v3);
-float dcn_bw_max5(float v1, float v2, float v3, float v4, float v5);
 float dcn_bw_pow(float a, float exp);
 float dcn_bw_log(float a, float b);
 
-- 
2.9.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH 2/2] amdgpu/dc: inline a bunch of the dml wrappers.
       [not found] ` <20170928004526.6770-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2017-09-28  0:45   ` Dave Airlie
  0 siblings, 0 replies; 2+ messages in thread
From: Dave Airlie @ 2017-09-28  0:45 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Dave Airlie <airlied@redhat.com>

This reduces code size.

Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 .../drm/amd/display/dc/dml/display_mode_support.c  |  1 +
 .../drm/amd/display/dc/dml/display_rq_dlg_calc.c   |  2 +
 .../gpu/drm/amd/display/dc/dml/display_watermark.c |  1 +
 .../gpu/drm/amd/display/dc/dml/dml_common_defs.c   | 56 +-------------------
 .../gpu/drm/amd/display/dc/dml/dml_common_defs.h   | 11 ----
 .../gpu/drm/amd/display/dc/dml/dml_inline_defs.h   | 61 ++++++++++++++++++++++
 .../gpu/drm/amd/display/dc/dml/soc_bounding_box.c  |  1 +
 7 files changed, 67 insertions(+), 66 deletions(-)
 create mode 100644 drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h

diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_support.c b/drivers/gpu/drm/amd/display/dc/dml/display_mode_support.c
index 3b4ee74..ac57356 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_support.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_support.c
@@ -26,6 +26,7 @@
 #include "display_mode_support.h"
 #include "display_mode_lib.h"
 
+#include "dml_inline_defs.h"
 int dml_ms_check(
 		struct display_mode_lib *mode_lib,
 		struct _vcs_dpi_display_e2e_pipe_params_st *e2e,
diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_rq_dlg_calc.c b/drivers/gpu/drm/amd/display/dc/dml/display_rq_dlg_calc.c
index 9fccbbf..7a5fb1c 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/display_rq_dlg_calc.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/display_rq_dlg_calc.c
@@ -25,6 +25,8 @@
 #include "display_rq_dlg_calc.h"
 #include "display_mode_lib.h"
 
+#include "dml_inline_defs.h"
+
 static unsigned int get_bytes_per_element(enum source_format_class source_format, bool is_chroma)
 {
 	unsigned int ret_val = 0;
diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_watermark.c b/drivers/gpu/drm/amd/display/dc/dml/display_watermark.c
index 390f093..142a328 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/display_watermark.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/display_watermark.c
@@ -24,6 +24,7 @@
  */
 #include "display_watermark.h"
 #include "display_mode_lib.h"
+#include "dml_inline_defs.h"
 
 static void get_bytes_per_pixel(
 		enum source_format_class format,
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.c b/drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.c
index 21349a02..c242b8d 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.c
@@ -26,26 +26,7 @@
 #include "dml_common_defs.h"
 #include "../calcs/dcn_calc_math.h"
 
-double dml_min(double a, double b)
-{
-	return (double) dcn_bw_min2(a, b);
-}
-
-double dml_max(double a, double b)
-{
-	return (double) dcn_bw_max2(a, b);
-}
-
-double dml_ceil(double a)
-{
-	return (double) dcn_bw_ceil2(a, 1);
-}
-
-double dml_floor(double a)
-{
-	return (double) dcn_bw_floor2(a, 1);
-}
-
+#include "dml_inline_defs.h"
 double dml_round(double a)
 {
 	double round_pt = 0.5;
@@ -58,16 +39,6 @@ double dml_round(double a)
 		return floor;
 }
 
-int dml_log2(double x)
-{
-	return dml_round((double)dcn_bw_log(x, 2));
-}
-
-double dml_pow(double a, int exp)
-{
-	return (double) dcn_bw_pow(a, exp);
-}
-
 unsigned int dml_round_to_multiple(
 	unsigned int num,
 	unsigned int multiple,
@@ -89,16 +60,6 @@ unsigned int dml_round_to_multiple(
 		return (num - remainder);
 }
 
-double dml_fmod(double f, int val)
-{
-	return (double) dcn_bw_mod(f, val);
-}
-
-double dml_ceil_2(double f)
-{
-	return (double) dcn_bw_ceil2(f, 2);
-}
-
 bool dml_util_is_420(enum source_format_class sorce_format)
 {
 	bool val = false;
@@ -131,18 +92,3 @@ bool dml_util_is_420(enum source_format_class sorce_format)
 
 	return val;
 }
-
-double dml_ceil_ex(double x, double granularity)
-{
-	return (double) dcn_bw_ceil2(x, granularity);
-}
-
-double dml_floor_ex(double x, double granularity)
-{
-	return (double) dcn_bw_floor2(x, granularity);
-}
-
-double dml_log(double x, double base)
-{
-	return (double) dcn_bw_log(x, base);
-}
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.h b/drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.h
index c5340d4..c621f83 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.h
+++ b/drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.h
@@ -32,20 +32,9 @@
 
 #define DTRACE(str, ...) dm_logger_write(mode_lib->logger, LOG_DML, str, ##__VA_ARGS__);
 
-double dml_min(double a, double b);
-double dml_max(double a, double b);
 bool dml_util_is_420(enum source_format_class sorce_format);
-double dml_ceil_ex(double x, double granularity);
-double dml_floor_ex(double x, double granularity);
-double dml_log(double x, double base);
-double dml_ceil(double a);
-double dml_floor(double a);
 double dml_round(double a);
-int dml_log2(double x);
-double dml_pow(double a, int exp);
 unsigned int dml_round_to_multiple(
 			unsigned int num, unsigned int multiple, bool up);
-double dml_fmod(double f, int val);
-double dml_ceil_2(double f);
 
 #endif /* __DC_COMMON_DEFS_H__ */
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h b/drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h
new file mode 100644
index 0000000..1c6c631
--- /dev/null
+++ b/drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h
@@ -0,0 +1,61 @@
+#ifndef __DML_INLINE_DEFS_H__
+#define __DML_INLINE_DEFS_H__
+#include "dml_common_defs.h"
+#include "../calcs/dcn_calc_math.h"
+
+static inline double dml_min(double a, double b)
+{
+	return (double) dcn_bw_min2(a, b);
+}
+
+static inline double dml_max(double a, double b)
+{
+	return (double) dcn_bw_max2(a, b);
+}
+
+static inline double dml_ceil(double a)
+{
+	return (double) dcn_bw_ceil2(a, 1);
+}
+
+static inline double dml_floor(double a)
+{
+	return (double) dcn_bw_floor2(a, 1);
+}
+
+static inline int dml_log2(double x)
+{
+	return dml_round((double)dcn_bw_log(x, 2));
+}
+
+static inline double dml_pow(double a, int exp)
+{
+	return (double) dcn_bw_pow(a, exp);
+}
+
+static inline double dml_fmod(double f, int val)
+{
+	return (double) dcn_bw_mod(f, val);
+}
+
+static inline double dml_ceil_2(double f)
+{
+	return (double) dcn_bw_ceil2(f, 2);
+}
+
+static inline double dml_ceil_ex(double x, double granularity)
+{
+	return (double) dcn_bw_ceil2(x, granularity);
+}
+
+static inline double dml_floor_ex(double x, double granularity)
+{
+	return (double) dcn_bw_floor2(x, granularity);
+}
+
+static inline double dml_log(double x, double base)
+{
+	return (double) dcn_bw_log(x, base);
+}
+
+#endif
diff --git a/drivers/gpu/drm/amd/display/dc/dml/soc_bounding_box.c b/drivers/gpu/drm/amd/display/dc/dml/soc_bounding_box.c
index cb143d3..0745366 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/soc_bounding_box.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/soc_bounding_box.c
@@ -25,6 +25,7 @@
 #include "soc_bounding_box.h"
 #include "display_mode_lib.h"
 
+#include "dml_inline_defs.h"
 void dml_socbb_set_latencies(
 		struct display_mode_lib *mode_lib,
 		struct _vcs_dpi_soc_bounding_box_st *from_box)
-- 
2.9.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-09-28  0:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-28  0:45 [PATCH 1/2] amdgpu/dc: inline a bunch of float operations Dave Airlie
     [not found] ` <20170928004526.6770-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-09-28  0:45   ` [PATCH 2/2] amdgpu/dc: inline a bunch of the dml wrappers Dave Airlie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.