diff options
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/Modules/FB/WS.h | 24 | ||||
| -rw-r--r-- | dev/Modules/WSGL/WSGL.h | 26 | ||||
| -rw-r--r-- | dev/ZKAKit/KernelKit/ThreadLocalStorage.h | 10 | ||||
| -rw-r--r-- | dev/ZKAKit/src/ThreadLocalStorage.cc | 2 |
4 files changed, 48 insertions, 14 deletions
diff --git a/dev/Modules/FB/WS.h b/dev/Modules/FB/WS.h index d8c5c991..60c7a78c 100644 --- a/dev/Modules/FB/WS.h +++ b/dev/Modules/FB/WS.h @@ -7,18 +7,21 @@ #pragma once #include <ArchKit/ArchKit.h> -#include <Modules/FB/FB.h> -#include <Modules/FB/Text.h> #include <NewKit/Utils.h> /// @file WS.h -/// @brief WindowServer's endpoint implementation. (within the zka-dev subsystem) +/// @brief WindowServer's window ownership implementation. +/// It is used to draw within a window. + +#define rtl_allocate_backbuffer(width, height) new WS::WSBackBufferKind[width * height] +#define rtl_compute_fb_geometry(width, height) (width * height) namespace WS { using namespace Kernel; - struct WSWindowContainer; + class WSWindowTexture; + class WSWindowContainer; typedef UInt32* WSBackBufferKind; @@ -31,7 +34,7 @@ namespace WS ZKA_COPY_DEFAULT(WSWindowContainer); /// @note the trick is, it could be GPU processed data, that's the cool thing. - BOOL PopulateWindow(WSBackBufferKind contents_buf, SizeT contents_len) + BOOL Fill(WSBackBufferKind contents_buf, SizeT contents_len) { if (contents_len > BackBufferLength) return NO; @@ -47,11 +50,16 @@ namespace WS return YES; } + BOOL Fill(WSWindowContainer* container) + { + if (!container) + return NO; + + return this->Fill(container->BackBuffer, container->BackBufferLength); + } + public: WSBackBufferKind BackBuffer{nullptr}; SizeT BackBufferLength{0UL}; }; } // namespace WS - -#define rtl_allocate_backbuffer(width, height) new WS::WSBackBufferKind[width * height] -#define rtl_compute_fb_geometry(width, height) (width * height) diff --git a/dev/Modules/WSGL/WSGL.h b/dev/Modules/WSGL/WSGL.h index 47bf402f..59cf6f5c 100644 --- a/dev/Modules/WSGL/WSGL.h +++ b/dev/Modules/WSGL/WSGL.h @@ -7,3 +7,29 @@ #pragma once
#include <NewKit/Defines.h>
+#include <Modules/FB/WS.h>
+
+namespace WS
+{
+ /// @brief GPU texture class.
+ class WSWindowTexture final
+ {
+ public:
+ explicit WSWindowTexture() = default;
+ ~WSWindowTexture() = default;
+
+ ZKA_COPY_DEFAULT(WSWindowTexture);
+
+ VoidPtr InputData{nullptr};
+ VoidPtr ProcessUnit{nullptr};
+ BOOL* IsDone{nullptr};
+
+ const BOOL TryIsDone()
+ {
+ if (IsDone && *IsDone)
+ return YES;
+
+ return NO;
+ }
+ };
+} // namespace WS
diff --git a/dev/ZKAKit/KernelKit/ThreadLocalStorage.h b/dev/ZKAKit/KernelKit/ThreadLocalStorage.h index 680a10ed..808951a2 100644 --- a/dev/ZKAKit/KernelKit/ThreadLocalStorage.h +++ b/dev/ZKAKit/KernelKit/ThreadLocalStorage.h @@ -4,8 +4,8 @@ ------------------------------------------- */ -#ifndef _KERNELKIT_TLS_H -#define _KERNELKIT_TLS_H +#ifndef KERNELKIT_TLS_H +#define KERNELKIT_TLS_H #include <NewKit/Defines.h> @@ -23,8 +23,8 @@ struct THREAD_INFORMATION_BLOCK; /// Located in GS on AMD64, other architectures have their own stuff. (64x0, 32x0, ARM64) struct PACKED THREAD_INFORMATION_BLOCK final { - Kernel::Char f_Cookie[kTLSCookieLen]{0}; //! Thread magic number. - Kernel::VoidPtr f_ThreadRecord{nullptr}; //! Thread information record. + Kernel::Char Cookie[kTLSCookieLen]{0}; //! Thread magic number. + Kernel::VoidPtr Record{nullptr}; //! Thread information record. }; ///! @brief Cookie Sanity check. @@ -51,4 +51,4 @@ EXTERN_C Kernel::Bool tls_check_syscall_impl(Kernel::VoidPtr TIB) noexcept; // last rev 7/7/24 -#endif /* ifndef _KERNELKIT_TLS_H */ +#endif /* ifndef KERNELKIT_TLS_H */ diff --git a/dev/ZKAKit/src/ThreadLocalStorage.cc b/dev/ZKAKit/src/ThreadLocalStorage.cc index fbe9a5f0..69da2f94 100644 --- a/dev/ZKAKit/src/ThreadLocalStorage.cc +++ b/dev/ZKAKit/src/ThreadLocalStorage.cc @@ -29,7 +29,7 @@ using namespace Kernel; Boolean tls_check_tib(THREAD_INFORMATION_BLOCK* tib_ptr) { if (!tib_ptr || - !tib_ptr->f_ThreadRecord) + !tib_ptr->Record) return false; IEncoderObject encoder; |
