Tuesday, August 17, 2021

Got access to xbox

 From my last post, I had problems with the Xbox but that was quickly resolved and I got the Xbox to run GateWare. The problem was just logging in the account that was already on the Xbox, which has development access from Microsoft.

The next thing I did was have a meeting with Chase to see how he did his file pathing as that is the current problem right now. He did find a solution to get all the unit tests running by creating a catch in main.cpp. He tells me that there are duplicate unit tests when he was debugging. This may be due to the merge I did a while ago when I brought up the UWP branch to release.

As of now I am going through and searching for the duplicate tests and resolving those.

Monday, August 9, 2021

Reset my last reset

On my last post I said that I had successfully brought the App-Port-Dev-Merge (UWP) branch up to speed by merging it with the Development branch.... Turns out I was not successful. The problem was when I soft reset my branch head to a different branch. That just caused a Git problem which was confusing. What we did was a hard reset to development, this made my branch the same as dev. From there we  merged the UWP branch and solved all the merge conflicts.

As of now, the code compiles but there are errors. The main problem I ran into is file pathing used to get some UWP files. Right now they are getting pulled directly in the Unit Test files and should be moved into GFile. I have a meeting with Chase tomorrow so that should clear up many things.

Another problem I ran into relates to the Xbox the school issued me. The problem is that when i try to run the code on the xbox i get an error saying that the code can not open the Windows store app. This may be due to me not having access to the sandbox. There is an account already on the xbox but it is logged off. I tried making my own account but I need permission from Microsoft to get access to the sandbox. Until I can get that resolved I will have to go back into the Desktop side.

 

 

Friday, July 16, 2021

Getting you up to date

Its been a long while since I last posted, previously I was working with Linux and getting trying to get minimize events handled but to no avail.

After the Linux task, I moved on to creating a library dependency check system to see if any of GateWare's library would need a certain library enabled in order to run correctly. The check is a preprocessor check that runs on build time. There are two types of messages the user will get, either a warning or an error. This depends on what the user defines. By default the user will get warning messages but if defined, the user can force error messages or disable the checks all together.

I worked on the dependency checks for two weeks after the last post, or the last two weeks of June, which lead into a week long Summer break. When break was over I would be working on UWP.


During the break(last week) I did some research and had a meeting with the Chase Richards, who started the UWP portion of GW, to see where he left off. As always he was very informal and helpful.

At the beginning of this week GW had a meeting and we talked about where I would start and plan things out. During the meeting I brought up an outline I had made from my meeting with Chase and we started building a work-path from there. 

In my opinion the meeting went really smoothly, besides the fact that I am the only dev currently. I believe having the meeting with Chase proved to be a very good choice because it  provided me with an outline of what to do and it let me gather the correct information to justify the points in my outline.

From the meeting my work-path would be as follows:

- Get UWP branch up to date with development

- Port missing UWP libraries

- Isolate UWP code and iOS code in app files


This whole week I have been working on getting UWP up to date from 6 months ago. The first thing I was going to do was go step by step and merging up the Git timeline. The reason behind it was i wanted to see the changes happening before my eyes to I know what merge conflicts to choose. After two merges I decided to just attempt to merge up to our development branch. It seemed to work at first, when the Input and Graphics unit tests were disabled. If they were enabled however I would get linker errors that came from some tests.

Since it worked in a certain case I decided to keep the merge. The next thing to do was fix the linker errors, which caused a lot of headache. After some time staring at the code, I realized that UWP uses different API's than GW does for user input and for console windows. The reason for the errors was because the tests were enabled but we could not feed it the right data because UWP uses its own api. The solution to this was to disable the Input and Graphics tests if UWP is being used, even if the user enables them. This is done by this:

#if !defined(WINAPI_FAMILY) && !(WINAPI_FAMILY == WINAPI_FAMILY_APP)

#endif

This checks if the UWP api is being used.


I just had a meeting with Lari and Chase earlier today over messaging. We all are on the same page about where GW and UWP is at. Now that I have a stable build i will be testing for bugs and try to see if i can make my patch more efficient. Other than that the upcoming week I will start to work on porting missing libraries.

Link to predefined macro:

https://social.msdn.microsoft.com/Forums/en-US/51f29cfe-d07f-4898-9962-945ed7b66d7f/predefined-macro-to-identify-uwp?forum=wpdevelop

Friday, June 18, 2021

Linux Minimize Event - end of my attempt

So far this week I was working on the Minimize event not being reported on Linux, I had trouble setting up my Linux OS on my second internal. This bug is not an easy bug to fix because 'PropertyNotify' is not being returned when the event of Minimizing the window happens, while it is maximized. Since it is not being returned, it does not go into our case statement that checks what state the window is in and prints us information. 

I noticed that if we tried to minimize while max'd we get an 'Unmap' return rather than the 'PropertyNotify' so I tried to add case statements for map and unmap. I was then going to try and differentiate between when a window is closed, or minimized. I dont think it would have been that bad because I believe there were checks for if the window is being closed or is closed that happens before we listen to events.

 Since this bug was taking too much time and I am still an intern, we decided to move me onto another ticket. My ticket now is to create output messages that tell the user if a certain library is dependent on another library. This should not stop the program from running (dummies will run). The messages should let the user know the tests will run, but the tests that do not have their dependencies will possibly fail or not yield good results.

My time here at GW so far has been a little intense with the bugs that got complicated. Although I could not fix the Mac audio problem or the Minimize event not being reported on linux, I got a lot of experience with working in each environment (Linux was friendly as expected). Working on these different bugs was pretty cool too, I learned some new stuff just by going through the code itself.

Monday, June 14, 2021

Mountains under those hills

 Since my last post I was working with Vulkan and Mac, which had a few problems that didn't seem that hard to fix. That didnt turn out that way, turns out Vulkan has bugs of their own that affect us. There is also a sound problem that seems to be only happening on one of our remote machines, this turned out to be a thread related problem so I backed off  from that ticket and moved to work on a Linus Mint ticket.


At the end of last week, I was working on a system event problem that is found on Linux Mint OS. Starting off on this problem was slow because I had to read up on the X11 library (not to be confused with DX11). From there I had to figure out how the code was being worked in our project. 

The main problem of this ticket was that no event seems to be being reported when the window is maximized(everything else is being reported when not maximized). Thats because property_notify is not the flag being returned when we try to minimize the window. 

The reason for property_notify not being returned is because when you minimize, the resolution stays the same as before you minimized so the system doesn't register a change to the window. 

I did find that map and unmap notify were being returned when I did something to the window(minimize and restore/expose). My plan is to somehow detect if the minimize button is pressed through the map/unmap notify and then change the windows resolution property. From there we go into property notify if we can and run that case.

I was doing my testing/coding via remote machine and ran into a problem where my terminal would sometimes act weird. It might have been because of the project itself not displaying output.

To resolve this someone suggested to install Mint and dual boot. I finally got Mint installed but not the way I want it. The process is usually easy I would assume, but I was installing it on a second internal ssd. The problem was that I could not find a proper tutorial as different tutorials would leave out some small information, do things a different way or chose a different option when setting things up. Another problem I ran into was the actual dual boot process. After my first install my computer would use Grub(Linux boot launcher) instead of Windows. From there I logged into Windows and noticed some of my computer settings were off like my resolution and my time was incorrect as well. I tried changing the boot order via BIOS but in doing so the Linux OS was unavaliable(not showing on list). After all that I looked into getting dual boot to work but it turns out the Mint installer has a bug where it installs the boot loader to the first efi it finds, the one way to bypass that is to unmount the internal drive you do not want Mint on. I chose not to do this because I am using a laptop. With that said I will bite the bullet and just use the Grub booter for now until i have the time to properly set up Mint the way i want.

 

Well, besides the problems that got elevated to out of my reach, I think things are going well. I believe that I am learning quite a few valuable things. For example documentation! Finding help for X11 can be sometimes rare and the X11 docs can be frustrating as it is not really up to par compared to other documentations. While I was going through the X11 documentation there are a lot of places where they don't really tell or show you how something works, it would just give a description and a list of things that are related to it. Other than that I think i gained more knowledge and experience working outside of the Windows OS and about BIOS.

Wednesday, June 2, 2021

A lot of people are probably mad about the Vulkan update

 This is my second post and it has been quite interesting since my last post.

Since my last post I have been working on patching up problems that a Vulkan update brought to us when we updated to Vulkan 1.2.176. The problem is the 'VK_HKR_portability_subset' device extension not being included when the device is getting set up.

This problem is not from our side, more on the Vulkan side. Fortunately Khronos, who works on Vulkan is aware of this problem is working on a fix.

For now the work around was including a beta header file 'vulkan_beta.h' so the said extension earlier will be defined and we can use it. Although this is not the ideal solution, it was the only solution to keep GW's code from not changing dramatically as Khronos is working on a fix.

We had multiple errors that were related to the 'VK_HKR_portability_subset' extension. When I added the extension from the beta.h file, only one error was left. This error was a parameter error from me trying to use W::GRAPHICS::GVulkanSurface::Create function. What I did was try to increase the number of device extensions to ‘2’ and sending in a vector of ‘const char*’s but it failed.

From working on this I got a better understanding on how programs work on multiple platforms as well as some insight on how different programs work together.

As of now I will be dropping the ticket and will be moving on to fix the GW::Audio problem for Mac.

Monday, May 24, 2021

Hello Gateware!

 Hello,

My name is Lam Truong and I have recently joined the Gateware Team! I am starting off as a Gen Dev and will possibly transition to other things like porting.
Within the first week, I have gotten Gateware to work on Linux, Windows, and Mac with a new update from Vulkan, ver 1.2.176.1. With the perfect timing of the update and me having little to no experience with a Mac, I had the opportunity to get the FULL Mac experience. This week I will be working on getting sound re-enabled on Mac continuing my experience.
Besides a few hiccups I am enjoying my time here and I am sure that will continue!