Skip to content

Commit cf03fae

Browse files
authored
ui updates for demo and ci for flutter app (#17)
* ui updates for demo and ci for flutter app * fixes to ui ci yaml * Bump to flutter version * fix dart formatting * Fix dart formatting * fix flutter analyze * More ci fixes * Fix CI error * Final fix to UI CI * Implemented integration test for ai model server * Fix to CI * Demoed end to end ai server * Fix build * Simplifying context construction * Fixed elusive overflow issue * Changing debug print format * Adding vxPublish and vxUnPublish to liteRT target * Update type pairs to support strings for tensor and object array objects * Added support for tensor object xml import * UI updates for tunable object array attributes and their children * fix ci * Updates to xml export * Adding support for importing object arrays with objects of different attributes * Dart format update * Fix CI * Fixed error in object array import
1 parent e40aa20 commit cf03fae

File tree

25 files changed

+2783
-382
lines changed

25 files changed

+2783
-382
lines changed

.clang-format

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -145,22 +145,18 @@ IfMacros:
145145
- KJ_IF_MAYBE
146146
IncludeBlocks: Regroup
147147
IncludeCategories:
148-
- Regex: '^<ext/.*\.h>'
149-
Priority: 2
150-
SortPriority: 0
151-
CaseSensitive: false
152-
- Regex: '^<.*\.h>'
148+
- Regex: '^<[a-z][a-z0-9]*>'
153149
Priority: 1
154150
SortPriority: 0
155-
CaseSensitive: false
156-
- Regex: '^<.*'
151+
CaseSensitive: true
152+
- Regex: '^<.*>'
157153
Priority: 2
158154
SortPriority: 0
159-
CaseSensitive: false
155+
CaseSensitive: true
160156
- Regex: '.*'
161157
Priority: 3
162158
SortPriority: 0
163-
CaseSensitive: false
159+
CaseSensitive: true
164160
IncludeIsMainRegex: '([-_](test|unittest))?$'
165161
IncludeIsMainSourceRegex: ''
166162
IndentAccessModifiers: true

.github/workflows/ci.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,20 @@ jobs:
2727
restore-keys: |
2828
${{ runner.os }}-bazel-cache-
2929
30-
# Install dependencies (project has additional setup requirements)
30+
# Install dependencies
3131
- name: Install Dependencies
3232
run: |
3333
sudo apt-get update
3434
sudo apt-get install -y libxml2-dev ocl-icd-opencl-dev gdb
3535
36+
- name: Setup model server
37+
run: |
38+
curl -fsSL https://ollama.com/install.sh | sh
39+
ollama serve &
40+
sleep 5
41+
ollama pull llama3:8b
42+
curl -s http://localhost:11434/api/tags || exit 1
43+
3644
# Checks-out your repository under $GITHUB_WORKSPACE, which is the CWD for
3745
# the rest of the steps
3846
- uses: actions/checkout@v4

.github/workflows/ui.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: UI CI
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: subosito/flutter-action@v2
16+
with:
17+
flutter-version: '3.29.2'
18+
channel: 'stable'
19+
cache: true
20+
21+
- name: Install dependencies
22+
run: |
23+
cd ui
24+
sudo apt-get update
25+
sudo apt-get install -y lcov libgtk-3-dev libblkid-dev liblzma-dev
26+
flutter pub get
27+
28+
- name: Verify formatting
29+
run: |
30+
cd ui
31+
dart format --set-exit-if-changed .
32+
33+
- name: Analyze project source
34+
run: |
35+
cd ui
36+
flutter analyze
37+
38+
- name: Build linux
39+
run: |
40+
cd ui
41+
flutter build linux
42+
43+
- name: Build web
44+
run: |
45+
cd ui
46+
flutter build web
47+
48+
- name: Run tests with coverage
49+
run: |
50+
cd ui
51+
flutter test --coverage
52+
genhtml coverage/lcov.info -o coverage/html

BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
cc_shared_library(
33
name = "openvx",
44
deps = [":corevx"],
5+
visibility = ["//visibility:public"],
56
)
67

78
# Build library for the main project

framework/include/vx_internal.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,8 @@ enum vx_ext_target_type_e {
675675
/*! \brief The priority list of targets.
676676
* \ingroup group_int_target
677677
*/
678-
enum vx_target_priority_e {
678+
enum vx_target_priority_e
679+
{
679680
#if defined(EXPERIMENTAL_USE_OPENCL)
680681
/*! \brief Defines the priority of the OpenCL Target */
681682
VX_TARGET_PRIORITY_OPENCL,
@@ -693,7 +694,7 @@ enum vx_target_priority_e {
693694
/*! \brief Defines the priority of the ORT target */
694695
VX_TARGET_PRIORITY_ORT,
695696
/*! \brief Defines the maximum priority */
696-
VX_TARGET_PRIORITY_MAX,
697+
VX_TARGET_PRIORITY_MAX = 10,
697698
};
698699

699700
/*! \brief Defines the number of targets in the sample implementation.

framework/src/vx_context.cpp

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,7 @@ vx_char targetModules[][VX_MAX_TARGET_NAME] = {
3232
#if defined(EXPERIMENTAL_USE_VENUM)
3333
"openvx-venum",
3434
#endif
35-
"openvx-c_model",
36-
"openvx-onnxRT",
37-
"openvx-ai-server",
38-
"openvx-liteRT",
39-
"openvx-torch",
35+
"openvx-c_model", "openvx-onnxRT", "openvx-ai_server", "openvx-liteRT", "openvx-torch",
4036
};
4137

4238
const vx_char extensions[] =
@@ -63,7 +59,7 @@ static vx_sem_t global_lock;
6359
/*****************************************************************************/
6460
Context::Context()
6561
: Reference(nullptr, VX_TYPE_CONTEXT, nullptr),
66-
p_global_lock(nullptr),
62+
p_global_lock(&global_lock),
6763
reftable(),
6864
num_references(0),
6965
modules(),
@@ -93,9 +89,9 @@ Context::Context()
9389
queues(),
9490
#endif
9591
imm_border(),
96-
imm_border_policy(),
92+
imm_border_policy(VX_BORDER_POLICY_DEFAULT_TO_UNDEFINED),
9793
next_dynamic_user_kernel_id(0),
98-
next_dynamic_user_library_id(0),
94+
next_dynamic_user_library_id(1),
9995
imm_target_enum(),
10096
imm_target_string(),
10197
#ifdef OPENVX_USE_OPENCL_INTEROP
@@ -108,6 +104,7 @@ Context::Context()
108104
graph_queue(),
109105
numGraphsQueued(0ul)
110106
{
107+
imm_border.mode = VX_BORDER_UNDEFINED;
111108
}
112109

113110
Context::~Context()
@@ -758,17 +755,6 @@ VX_API_ENTRY vx_context VX_API_CALL vxCreateContext(void)
758755
if (context)
759756
{
760757
vx_uint32 p = 0u, p2 = 0u, t = 0u, m = 0u;
761-
#ifdef OPENVX_USE_OPENCL_INTEROP
762-
context->opencl_context = nullptr;
763-
context->opencl_command_queue = nullptr;
764-
#endif
765-
context->p_global_lock = &global_lock;
766-
context->imm_border.mode = VX_BORDER_UNDEFINED;
767-
context->imm_border_policy = VX_BORDER_POLICY_DEFAULT_TO_UNDEFINED;
768-
context->next_dynamic_user_kernel_id = 0;
769-
context->next_dynamic_user_library_id = 1;
770-
context->perf_enabled = vx_false_e;
771-
772758
#if !DISABLE_ICD_COMPATIBILITY
773759
context->platform = platform;
774760
#endif

framework/src/vx_image.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ vx_bool Image::isSupportedFourcc(vx_df_image code)
367367
case VX_DF_IMAGE_VIRT:
368368
return vx_true_e;
369369
default:
370-
VX_PRINT(VX_ZONE_ERROR, "Format 0x%08x is not supported\n", code);
370+
VX_PRINT(VX_ZONE_ERROR, "Format %d is not supported\n", code);
371371
if (code != 0) DEBUG_BREAK();
372372
return vx_false_e;
373373
}

framework/src/vx_reference.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ vx_bool Reference::isValidReference(vx_reference ref)
7878
{
7979
VX_PRINT(VX_ZONE_ERROR, "%p has already been released and garbage collected!\n", ref);
8080
}
81+
else if ((Context::isValidType(ref->type) == vx_false_e))
82+
{
83+
VX_PRINT(VX_ZONE_ERROR, "%p is not a valid typw!\n", ref);
84+
}
8185
else if (ref->type != VX_TYPE_CONTEXT)
8286
{
8387
printReference(ref);

framework/src/vx_type_pairs.cpp

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -19,41 +19,43 @@
1919
#include "vx_type_pairs.h"
2020

2121
const vx_enum_string_t type_pairs[] = {
22-
{VX_STRINGERIZE(VX_TYPE_INVALID),0},
22+
{VX_STRINGERIZE(VX_TYPE_INVALID), 0},
2323
/* scalar objects */
24-
{VX_STRINGERIZE(VX_TYPE_CHAR),sizeof(vx_char)*2},
25-
{VX_STRINGERIZE(VX_TYPE_UINT8),sizeof(vx_uint8)*2},
26-
{VX_STRINGERIZE(VX_TYPE_UINT16),sizeof(vx_uint16)*2},
27-
{VX_STRINGERIZE(VX_TYPE_UINT32),sizeof(vx_uint32)*2},
28-
{VX_STRINGERIZE(VX_TYPE_UINT64),sizeof(vx_uint64)*2},
29-
{VX_STRINGERIZE(VX_TYPE_INT8),sizeof(vx_int8)*2},
30-
{VX_STRINGERIZE(VX_TYPE_INT16),sizeof(vx_int16)*2},
31-
{VX_STRINGERIZE(VX_TYPE_INT32),sizeof(vx_int32)*2},
32-
{VX_STRINGERIZE(VX_TYPE_INT64),sizeof(vx_int64)*2},
33-
{VX_STRINGERIZE(VX_TYPE_FLOAT32),sizeof(vx_float32)*2},
34-
{VX_STRINGERIZE(VX_TYPE_FLOAT64),sizeof(vx_float64)*2},
35-
{VX_STRINGERIZE(VX_TYPE_SIZE),sizeof(vx_size)*2},
36-
{VX_STRINGERIZE(VX_TYPE_DF_IMAGE),sizeof(vx_df_image)*2},
37-
{VX_STRINGERIZE(VX_TYPE_BOOL),sizeof(vx_bool)*2},
38-
{VX_STRINGERIZE(VX_TYPE_ENUM),sizeof(vx_enum)*2},
24+
{VX_STRINGERIZE(VX_TYPE_CHAR), sizeof(vx_char) * 2},
25+
{VX_STRINGERIZE(VX_TYPE_UINT8), sizeof(vx_uint8) * 2},
26+
{VX_STRINGERIZE(VX_TYPE_UINT16), sizeof(vx_uint16) * 2},
27+
{VX_STRINGERIZE(VX_TYPE_UINT32), sizeof(vx_uint32) * 2},
28+
{VX_STRINGERIZE(VX_TYPE_UINT64), sizeof(vx_uint64) * 2},
29+
{VX_STRINGERIZE(VX_TYPE_INT8), sizeof(vx_int8) * 2},
30+
{VX_STRINGERIZE(VX_TYPE_INT16), sizeof(vx_int16) * 2},
31+
{VX_STRINGERIZE(VX_TYPE_INT32), sizeof(vx_int32) * 2},
32+
{VX_STRINGERIZE(VX_TYPE_INT64), sizeof(vx_int64) * 2},
33+
{VX_STRINGERIZE(VX_TYPE_FLOAT32), sizeof(vx_float32) * 2},
34+
{VX_STRINGERIZE(VX_TYPE_FLOAT64), sizeof(vx_float64) * 2},
35+
{VX_STRINGERIZE(VX_TYPE_SIZE), sizeof(vx_size) * 2},
36+
{VX_STRINGERIZE(VX_TYPE_DF_IMAGE), sizeof(vx_df_image) * 2},
37+
{VX_STRINGERIZE(VX_TYPE_BOOL), sizeof(vx_bool) * 2},
38+
{VX_STRINGERIZE(VX_TYPE_ENUM), sizeof(vx_enum) * 2},
3939
/* struct objects */
40-
{VX_STRINGERIZE(VX_TYPE_COORDINATES2D),sizeof(vx_coordinates2d_t)*2},
41-
{VX_STRINGERIZE(VX_TYPE_COORDINATES3D),sizeof(vx_coordinates3d_t)*2},
42-
{VX_STRINGERIZE(VX_TYPE_RECTANGLE),sizeof(vx_rectangle_t)*2},
43-
{VX_STRINGERIZE(VX_TYPE_KEYPOINT),sizeof(vx_keypoint_t)*2},
40+
{VX_STRINGERIZE(VX_TYPE_COORDINATES2D), sizeof(vx_coordinates2d_t) * 2},
41+
{VX_STRINGERIZE(VX_TYPE_COORDINATES3D), sizeof(vx_coordinates3d_t) * 2},
42+
{VX_STRINGERIZE(VX_TYPE_RECTANGLE), sizeof(vx_rectangle_t) * 2},
43+
{VX_STRINGERIZE(VX_TYPE_KEYPOINT), sizeof(vx_keypoint_t) * 2},
4444
/* data objects */
45-
{VX_STRINGERIZE(VX_TYPE_ARRAY),0},
46-
{VX_STRINGERIZE(VX_TYPE_DISTRIBUTION),0},
47-
{VX_STRINGERIZE(VX_TYPE_LUT),0},
48-
{VX_STRINGERIZE(VX_TYPE_IMAGE),0},
49-
{VX_STRINGERIZE(VX_TYPE_CONVOLUTION),0},
50-
{VX_STRINGERIZE(VX_TYPE_THRESHOLD),0},
51-
{VX_STRINGERIZE(VX_TYPE_MATRIX),0},
52-
{VX_STRINGERIZE(VX_TYPE_SCALAR),0},
53-
{VX_STRINGERIZE(VX_TYPE_PYRAMID),0},
54-
{VX_STRINGERIZE(VX_TYPE_REMAP),0},
45+
{VX_STRINGERIZE(VX_TYPE_ARRAY), 0},
46+
{VX_STRINGERIZE(VX_TYPE_DISTRIBUTION), 0},
47+
{VX_STRINGERIZE(VX_TYPE_LUT), 0},
48+
{VX_STRINGERIZE(VX_TYPE_IMAGE), 0},
49+
{VX_STRINGERIZE(VX_TYPE_CONVOLUTION), 0},
50+
{VX_STRINGERIZE(VX_TYPE_THRESHOLD), 0},
51+
{VX_STRINGERIZE(VX_TYPE_TENSOR), 0},
52+
{VX_STRINGERIZE(VX_TYPE_MATRIX), 0},
53+
{VX_STRINGERIZE(VX_TYPE_OBJECT_ARRAY), 0},
54+
{VX_STRINGERIZE(VX_TYPE_SCALAR), 0},
55+
{VX_STRINGERIZE(VX_TYPE_PYRAMID), 0},
56+
{VX_STRINGERIZE(VX_TYPE_REMAP), 0},
5557
#ifdef OPENVX_KHR_XML
56-
{VX_STRINGERIZE(VX_TYPE_IMPORT),0},
58+
{VX_STRINGERIZE(VX_TYPE_IMPORT), 0},
5759
#endif
5860
};
5961

0 commit comments

Comments
 (0)