summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
Diffstat (limited to 'dev')
-rw-r--r--dev/Modules/FB/WS.h24
-rw-r--r--dev/Modules/WSGL/WSGL.h26
-rw-r--r--dev/ZKAKit/KernelKit/ThreadLocalStorage.h10
-rw-r--r--dev/ZKAKit/src/ThreadLocalStorage.cc2
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;