diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-12-01 19:47:27 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-12-01 19:47:27 +0100 |
| commit | 50c7c5676d110681528cc933c4b99844b11f1dd1 (patch) | |
| tree | 62ea871cae6949f4332e1973b9da9c5fcbcd4420 /dev/SCIKit | |
| parent | ed70659693e6cc9d48827113b23ebaf85c9dfe70 (diff) | |
ADD: Add GPU API regarding Mesa3D support for OpenGL ES.
IMP: Refactor SCI Kit to have a better filesystem structure.
Diffstat (limited to 'dev/SCIKit')
| -rw-r--r-- | dev/SCIKit/CompilerHint.h | 2 | ||||
| -rw-r--r-- | dev/SCIKit/GPU.h | 50 | ||||
| -rw-r--r-- | dev/SCIKit/LPC.h | 6 | ||||
| -rw-r--r-- | dev/SCIKit/SCI.h (renamed from dev/SCIKit/Foundation.h) | 37 | ||||
| -rw-r--r-- | dev/SCIKit/sci.json | 2 | ||||
| -rw-r--r-- | dev/SCIKit/src/GPU.cc | 10 | ||||
| -rw-r--r-- | dev/SCIKit/src/LPC.cc | 10 | ||||
| -rw-r--r-- | dev/SCIKit/src/Makefile | 2 | ||||
| -rw-r--r-- | dev/SCIKit/src/SCI.cc (renamed from dev/SCIKit/src/MemoryMgr.cc) | 6 | ||||
| -rw-r--r-- | dev/SCIKit/src/SysCallDispatcher.asm (renamed from dev/SCIKit/src/DispatchSysCalls.asm) | 0 |
10 files changed, 109 insertions, 16 deletions
diff --git a/dev/SCIKit/CompilerHint.h b/dev/SCIKit/CompilerHint.h index 60838479..e38d5c7e 100644 --- a/dev/SCIKit/CompilerHint.h +++ b/dev/SCIKit/CompilerHint.h @@ -7,7 +7,9 @@ #ifndef __SCI_HINT_H__ #define __SCI_HINT_H__ +#ifdef __TK__ #pragma compiler(hint_manifest) +#endif #define _Input #define _Output diff --git a/dev/SCIKit/GPU.h b/dev/SCIKit/GPU.h new file mode 100644 index 00000000..0c69a73d --- /dev/null +++ b/dev/SCIKit/GPU.h @@ -0,0 +1,50 @@ +/* ------------------------------------------- + +Copyright (C) 2024, ELMH Group, all rights reserved. + +File: GPU.h +Purpose: GFX System Calls. + +------------------------------------------- */ + +#ifndef SCIKIT_GPU_H +#define SCIKIT_GPU_H + +#include <SCIKit/SCI.h> + +// ------------------------------------------------------------------------------------------ // +// GPU API. +// ------------------------------------------------------------------------------------------ // + +// ------------------------------------------------------------------------------------------ // +// @brief Command buffer structure type. +// ------------------------------------------------------------------------------------------ // +struct GPU_CMD_BUFFER final +{ + SizeT X, Y, Z; + VoidPtr FrameData; + SizeT FrameDataSz; + SizeT BackBufferLayer; + Bool IsGPGPUData; + Bool BackBufferFirst; + + Bool isGPGPUData() + { + return !this->BackBufferFirst && this->IsGPGPUData; + } + + Bool isValid() + { + return this->FrameData && this->FrameDataSz > 0; + } +}; + +typedef VoidPtr GPUObject; + +IMPORT_C GPUObject GPUNewFromDeviceName(_Input const Char* device_name); + +IMPORT_C SInt32 GPUDisposeDevice(GPUObject gpu_handle, Bool cancel_all, Bool flush_all); + +IMPORT_C SInt32 GPUSendCmdBufferListWithCnt(GPU_CMD_BUFFER** cmd_list, SizeT cmd_list_cnt); + +#endif // ifndef SCIKIT_GPU_H
\ No newline at end of file diff --git a/dev/SCIKit/LPC.h b/dev/SCIKit/LPC.h index 4f2a4e86..60de8cb7 100644 --- a/dev/SCIKit/LPC.h +++ b/dev/SCIKit/LPC.h @@ -11,9 +11,9 @@ /// @file LPC.h /// @brief Local Process Code type and values. -#define ErrLocalIsOk() (kLastError == kErrorSuccess) -#define ErrLocalFailed() (kLastError != kErrorSuccess) -#define ErrLocal() (kLastError) +#define err_local_ok() (kLastError == kErrorSuccess) +#define err_local_fail() (kLastError != kErrorSuccess) +#define err_local_get() (kLastError) typedef SInt32 ErrObject; diff --git a/dev/SCIKit/Foundation.h b/dev/SCIKit/SCI.h index 039fe6ce..a4b0dd96 100644 --- a/dev/SCIKit/Foundation.h +++ b/dev/SCIKit/SCI.h @@ -2,8 +2,8 @@ Copyright (C) 2024, ELMH Group, all rights reserved.
-File: Foundation.h
-Purpose: SCIKit Foundation header.
+File: SCI.h
+Purpose: System Calls.
------------------------------------------- */
@@ -137,75 +137,94 @@ IMPORT_C Void ThrExitMainThread(_Input SInt32 exit_code); IMPORT_C Void ThrExitThread(_Input ThreadObject thread, _Input SInt32 exit_code);
/// @brief Thread procedure function type.
-typedef Void (*ThreadProc)(Void);
+typedef Void (*thread_proc_kind)(Void);
/// @brief Creates a thread.
/// @param procedure the thread procedure.
/// @param argument_count number of arguments inside that thread.
/// @param flags Thread flags.
/// @return the thread object.
-IMPORT_C ThreadObject ThrCreateThread(ThreadProc procedure, SInt32 argument_count, SInt32 flags);
+IMPORT_C ThreadObject ThrCreateThread(thread_proc_kind procedure, SInt32 argument_count, SInt32 flags);
/// @brief Yields the current thread.
/// @param thread the thread to yield.
-IMPORT_C Void ThrYieldThread(Void);
+IMPORT_C Void ThrYieldThread(ThreadObject thrd);
/// @brief Joins a thread.
/// @param thread the thread to join.
-IMPORT_C Void ThrJoinThread(Void);
+IMPORT_C Void ThrJoinThread(ThreadObject thrd);
-/// @brief Detach sa thread.
+/// @brief Detach a thread.
/// @param thread the thread to detach.
-IMPORT_C Void ThrDetachThread(Void);
+IMPORT_C Void ThrDetachThread(ThreadObject thrd);
// ------------------------------------------------------------------------
// Drive Management API.
// ------------------------------------------------------------------------
+// ------------------------------------------------------------------------------------------ //
/// @brief Get the default drive letter.
/// @param void.
/// @return the drive letter.
+// ------------------------------------------------------------------------------------------ //
IMPORT_C Char* DrvGetDefaultDriveLetter(Void);
+// ------------------------------------------------------------------------------------------ //
/// @brief Get the drive letter from a path.
/// @param path the path.
/// @return the drive letter.
+// ------------------------------------------------------------------------------------------ //
IMPORT_C Char* DrvGetDriveLetterFromPath(_Input const Char* path);
+// ------------------------------------------------------------------------------------------ //
/// @brief Get a mounted drive from a letter.
/// @param letter the letter (A..Z).
/// @return the drive object.
+// ------------------------------------------------------------------------------------------ //
IMPORT_C SCIObject DrvGetMountedDrive(_Input const Char letter);
+// ------------------------------------------------------------------------------------------ //
/// @brief Mount a drive.
/// @param path the path to mount.
/// @param letter the letter to mount.
+// ------------------------------------------------------------------------------------------ //
IMPORT_C Void DrvMountDrive(_Input const Char* path, _Input const Char* letter);
+// ------------------------------------------------------------------------------------------ //
/// @brief Unmount a drive.
/// @param letter the letter to unmount.
+// ------------------------------------------------------------------------------------------ //
IMPORT_C Void DrvUnmountDrive(_Input const Char letter);
// ------------------------------------------------------------------------
// Event handling API, use to listen to OS specific events.
// ------------------------------------------------------------------------
+// ------------------------------------------------------------------------------------------ //
/// @brief Add an event listener.
/// @param event_name the event name.
/// @param listener the listener to add.
/// @return the event listener.
+// ------------------------------------------------------------------------------------------ //
+
IMPORT_C Void EvtAddListener(_Input const Char* event_name, _Input SCIObject listener);
+// ------------------------------------------------------------------------------------------ //
/// @brief Remove an event listener.
/// @param event_name the event name.
/// @param listener the listener to remove.
/// @return the event listener.
+// ------------------------------------------------------------------------------------------ //
+
IMPORT_C Void EvtRemoveListener(_Input const Char* event_name, _Input SCIObject listener);
+// ------------------------------------------------------------------------------------------ //
/// @brief Dispatch an event.
/// @param event_name the event name.
/// @param event_data the event data.
/// @return the event data.
+// ------------------------------------------------------------------------------------------ //
+
IMPORT_C VoidPtr EvtDispatchEvent(_Input const Char* event_name, _Input VoidPtr event_data);
// ------------------------------------------------------------------------------------------ //
@@ -213,7 +232,9 @@ IMPORT_C VoidPtr EvtDispatchEvent(_Input const Char* event_name, _Input VoidPtr // ------------------------------------------------------------------------------------------ //
IMPORT_C Void PwrShutdownMachine(const Char* _Input msg, _Input SInt32 code);
+
IMPORT_C Void PwrRebootMachine(const Char* _Input msg, _Input SInt32 code);
+
IMPORT_C Void PwrSleepMachine(const Char* _Input msg, _Input SInt32 code);
IMPORT_C SInt32 PwrGetCode(_Output SInt32& code);
diff --git a/dev/SCIKit/sci.json b/dev/SCIKit/sci.json index eb8bece9..b0e267d2 100644 --- a/dev/SCIKit/sci.json +++ b/dev/SCIKit/sci.json @@ -2,7 +2,7 @@ "compiler_path": "x86_64-w64-mingw32-g++", "compiler_std": "c++20", "headers_path": ["../"], - "sources_path": ["src/*.cc", "src/*.obj"], + "sources_path": ["src/*.cc", "src/*.o"], "output_name": "SCIKit.dylib", "compiler_flags": [ "-fPIC", diff --git a/dev/SCIKit/src/GPU.cc b/dev/SCIKit/src/GPU.cc new file mode 100644 index 00000000..f2947ec9 --- /dev/null +++ b/dev/SCIKit/src/GPU.cc @@ -0,0 +1,10 @@ +/* ------------------------------------------- + +Copyright (C) 2024, ELMH Group, all rights reserved. + +File: GPU.cc +Purpose: GPU Interface. + +------------------------------------------- */ + +#include <SCIKit/LPC.h>
\ No newline at end of file diff --git a/dev/SCIKit/src/LPC.cc b/dev/SCIKit/src/LPC.cc new file mode 100644 index 00000000..b33c15f6 --- /dev/null +++ b/dev/SCIKit/src/LPC.cc @@ -0,0 +1,10 @@ +/* ------------------------------------------- + +Copyright (C) 2024, ELMH Group, all rights reserved. + +File: LPC.cc +Purpose: Local Procedure Codes. + +------------------------------------------- */ + +#include <SCIKit/LPC.h>
\ No newline at end of file diff --git a/dev/SCIKit/src/Makefile b/dev/SCIKit/src/Makefile index 588f233a..ba4b6008 100644 --- a/dev/SCIKit/src/Makefile +++ b/dev/SCIKit/src/Makefile @@ -8,4 +8,4 @@ FLAGS=-f win64 .PHONY: syscall_unit syscall_unit: - $(ASM) $(FLAGS) DispatchSysCalls.asm -o DispatchSysCalls.obj + $(ASM) $(FLAGS) SysCallDispatcher.asm -o SysCallDispatcher.o diff --git a/dev/SCIKit/src/MemoryMgr.cc b/dev/SCIKit/src/SCI.cc index ea9e6ad3..4263b8f0 100644 --- a/dev/SCIKit/src/MemoryMgr.cc +++ b/dev/SCIKit/src/SCI.cc @@ -4,10 +4,10 @@ ------------------------------------------- */
-#include <SCIKit/Foundation.h>
+#include <SCIKit/SCI.h>
-/// @file MemoryMgr.cc
-/// @brief Source file for the memory functions.
+/// @file SCI.cc
+/// @brief Source file for the memory functions of the SCI.
/// @brief Copy memory region.
IMPORT_C VoidPtr MmCopyMemory(_Input VoidPtr dest, _Input VoidPtr src, _Input SizeT len)
diff --git a/dev/SCIKit/src/DispatchSysCalls.asm b/dev/SCIKit/src/SysCallDispatcher.asm index 368e8a92..368e8a92 100644 --- a/dev/SCIKit/src/DispatchSysCalls.asm +++ b/dev/SCIKit/src/SysCallDispatcher.asm |
