#Rosy

1 messages · Page 20 of 1

cloud rivet
#

I need to figure out a dev loop, I think a test makes sense, write a test, run spirv-val

#

I'm not making a shading language, I'm going to look into generating spirv with my application code

cloud rivet
#

going to give imhex another try

cloud rivet
astral hinge
#

"someone" should make a .hexpat for spirv

#

I could try if you want

cloud rivet
#

oh if you want to. I am kind of figuring it out still

astral hinge
#

oh someone already made a spirv hexpat

cloud rivet
#

oh nice

astral hinge
#

you can find it in the content store

cloud rivet
brisk chasm
#

that reminds me of the #vulkan channel topic

#

oops itnt scroll

astral hinge
#

that's fine man

cloud rivet
#

cool thanks!

astral hinge
#

this hexpat could be improved

#

let me try something

#

try replacing the definition of Instruction near the bottom of the hexpat with this, then click the green arrow to evaluate the file again

struct Instruction {
    Op op;
    u16 words;
    u32 operands[words-1];
} [[format("FormatInstruction")]];

fn FormatInstruction(ref Instruction i) {
    return std::format("{}", i.op);
};
#

I just added a formatter so it shows the op name instead of { ... } in the value column

#

a more advanced formatter would look at the op and then the operands

cloud rivet
#

ohhh

#

I think I might be missing a feature

#

oh it says I can install the standard library

astral hinge
#

oh I forgot to give you another line

cloud rivet
#

oh had to add #include <std/string.pat>

astral hinge
#

or import std.io;

cloud rivet
#

awsome thank you

#

btw if you think generating shader from application code is weird, that's what I did for my blockens voxel game lol, the first thing I ever made with opengl

#
        fn gen_inline_mesh_transforms(r: *runner) !void {
            if (r.cfg.mesh_transforms == null) return;
            var m = zm.identity();
            if (r.cfg.mesh_transforms) |mts| {
                const mt = mts[0];
                if (mt.scale) |s| {
                    m = zm.mul(m, zm.scalingV(s));
                }
            }
            const mr = zm.matToArr(m);
            var line = try shader_helpers.vec4_to_buf("    vec4 sc0 = vec4({d}, {d}, {d}, {d});\n", mr[0], mr[1], mr[2], mr[3]);
            r.l(&line);
            line = try shader_helpers.vec4_to_buf("    vec4 sc1 = vec4({d}, {d}, {d}, {d});\n", mr[4], mr[5], mr[6], mr[7]);
            r.l(&line);
            line = try shader_helpers.vec4_to_buf("    vec4 sc2 = vec4({d}, {d}, {d}, {d});\n", mr[8], mr[9], mr[10], mr[11]);
            r.l(&line);
            line = try shader_helpers.vec4_to_buf("    vec4 sc3 = vec4({d}, {d}, {d}, {d});\n", mr[12], mr[13], mr[14], mr[15]);
            r.l(&line);
            r.a("    mat4 scam = mat4(sc0, sc1, sc2, sc3);\n");
        }
#

:D

astral hinge
#

once c++ lets you reflect expressions (not in c++26 sadly), then we could generate whole shaders from c++ code

brisk chasm
#

i really like your hibtug pfp, bjorn

#

mine looks like a grumpy old man lol

astral hinge
cloud rivet
#

you guys are wise and kind

#

I'm hoping this spirv detour won't be too much of a rabbithole

astral hinge
#

what are you doing exactly?

cloud rivet
#

since I'm not making a general feature for others to use

#

my goal is to have the pixels the way I want

brisk chasm
#

pixel.goHere(); pixel.goThere();

cloud rivet
#

but without having to use a shader language

#

yes like that

#

only more like drawSkimmer() or something

brisk chasm
#

bjorn->switchToRole("turtle");

cloud rivet
#

why turtle

brisk chasm
#

turtle grafics 😄

astral hinge
cloud rivet
#

man tomorrow is a workday I better go to bed, thanks for all the help! 🐢

brisk chasm
cloud rivet
#

🇬🇳

cloud rivet
#

Once I have a p_spv_write_header function and a p_spv_write_ops function that just takes an arena, context and ops code and a size and a pointer to bits the lowest level SPIR-V stuff is done. Then I just write some functions for each ops I want to use that just writes to 32 bits aligned memory. I will need an ssa table of values. Build out some helper functions for doing common things

#

Then bob’s your uncle

#

Maybe I can use _Generic and typeof for the data

brisk chasm
#

ops... ssa...

#

why do c people write cryptic code 🙂

#

and what is p_ supposed to mean, procedure? ie return void?

#

or is it function pointer prototypes? hence p_?

pseudo dock
#

That was a short amount of time between last message before sleep and first message of the day. I know that feeling when you are focused on a problem and even when you wake up you're still thinking about it ☺️

brisk chasm
#

indeed, barely 5hrs

slim oak
#

what if Bjorn is actually still asleep and is just sleeptexting KEKW

hushed creek
#

hmm

cloud rivet
#

ssa is for single static assignment

#

It’s in the SPIRV spec

#

Ops are also SPIRV

brisk chasm
#

forbidden cheese knowledge 🙂

cloud rivet
#

OpsCode etc

#

p_ is my application’s prefix because there are no namespaces

#

All my global functions and names have the prefix to avoid collisions

#

With win32 global names

#

One letter is probably not safe enough

pseudo dock
#

And 0x07230203?

cloud rivet
#

That’s the SPIRV magic number

#

All binaries begin with it

brisk chasm
#

Pjorn 🙂

cloud rivet
#

I basically slept in

#

I am well rested

pseudo dock
#

Living the dream! I used to be able to do that... Years ago... 👴

broken fog
#

i'd know because i do the same KEKW

cloud rivet
brisk chasm
#

7 more years for me

bronze socket
#

maybe you have that low sleep gene

brisk chasm
#

the shorter the telomeres get the less schleep you need 😄

bronze socket
#

I need the full 8h, I can go off of 6h if I pay it back

broken fog
#

i hope i do cause otherwise i'm gonna die KEKW

cloud rivet
#

I used to sleep more

#

Sleeping less as you get older is common I think?

#

idk

true moon
#

yeah to some extent I think

#

I can function more or less fine off of anything more than 3 hours of sleep but yeah I need to pay it back asap

#

more than one day in a row of <7h sleep wears me down rapidly

#

really any sleep is better than none

#

I've pulled exactly one all nighter in my life and I slept through every class the following day

#

and got like a 60% on the assignment I stayed up all night to do anyways

#

but one or two full sleep cycles makes the next day more or less normal

astral hinge
#

I feel like doodoo all day if I get less than 8 hours of sleep

true moon
#

It really matters where in the cycle you wake up

#

I feel better off of 3 hours of sleep than I do off of 5

#

sleep cycles are ~1.5hr

astral hinge
#

Yeah I got like 5 hours last night and I feel ok. I'll probably become very sleepy soon though

cloud rivet
#

A few years ago I was doing really well getting 8 hours of sleep every day, and during that time if I slept anything less than 8 hours I would feel terrible. Now I have just normalized feeling terrible and it just becomes the new normal

#

wfm

astral hinge
#

homeostasis w I guess

#

now when you get 8 hours you'll feel incredible

cloud rivet
#

I'm sure I would be better off if I slept 8 hours, but I would only be able to live for work if I did that and I can't live like that.

bronze socket
#

it's a lot more tolerable to feel awful all the time if you don't exercise imo

#

it also contributes heavily

cloud rivet
#

I exercise a lot

#

5 days a week + 10K steps a day

#

I get exercise like at 11pm to 1 am lol

#

I can't exercise immediately after work I'm too beat up and tired

#

I do some game dev, that recharges me, I exercise and go to sleep

#

I am reducing my strength training a bit to lose weight for the next quarter or so

cloud rivet
#

I used GLSL to make some place holder spirv

#

to build a development render for the spv I'll generate

#

back to trongle I go

#

next is set up a test for generating valid spirv, then I'll replace the fragment shader with my own spirv

#

I took this GLSL directly from LOGL

#

for the fragment shader

#

I have regressed

#

1 step forward 5 months of steps back, I always say

#

I just need to generate

; SPIR-V
; Version: 1.0
; Generator: Google Shaderc over Glslang; 11
; Bound: 14
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %main "main" %FragColor
               OpExecutionMode %main OriginUpperLeft
               OpSource GLSL 330
               OpSourceExtension "GL_GOOGLE_cpp_style_line_directive"
               OpSourceExtension "GL_GOOGLE_include_directive"
               OpName %main "main"
               OpName %FragColor "FragColor"
               OpDecorate %FragColor Location 0
       %void = OpTypeVoid
          %3 = OpTypeFunction %void
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
  %FragColor = OpVariable %_ptr_Output_v4float Output
    %float_1 = OpConstant %float 1
  %float_0_5 = OpConstant %float 0.5
%float_0_200000003 = OpConstant %float 0.200000003
         %13 = OpConstantComposite %v4float %float_1 %float_0_5 %float_0_200000003 %float_1
       %main = OpFunction %void None %3
          %5 = OpLabel
               OpStore %FragColor %13
               OpReturn
               OpFunctionEnd
#

if this ends up not feeling like something I want to continue to do I may just go to GLSL

#

or idk, do something else with my time

#

maybe just do software rasterization

#

or do something with cuda

#

oh hrm

pseudo dock
#

What about HLSL? I know you rejected slang but I can't remember your reasons for disliking HLSL

cloud rivet
#

I don't know anything about HLSL

#

it's very different

#

I've been using slang not HLSL

#

I don't think it does bindless the same

#

slang has HLSL like syntax

#

hrmmmmmmmmmmmmmmmmmmmmm

#

I'm approaching a precipice

#

those RT tlas VVLs man, they suddenly just started annoying me so much I couldn't take it anymore, and then trying to fix it felt bad all the way down

pseudo dock
#

What are you thinking? You could ignore RT (and other graphics stuff) for now and keep working on the gameplay and mechanics?

solid grove
#

work on gameplay and mechanics? in this server??

silk pier
cloud rivet
#

I think there's a path to get shader language free real time rendering on the GPU

#

without having any spirv involved

#

A Vulkan memory object exported using VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT can be imported into CUDA using the NT handle associated with that object as shown below. Note that CUDA does not assume ownership of the NT handle and it is the application’s responsibility to close the handle when it is not required anymore. The NT handle holds a reference to the resource, so it must be explicitly freed before the underlying memory can be freed.

#

and

#

I would get step debugging on the gpu in visual studio

#

and, I'd get RT pipeline with OptiX

#

and it would render to memory owned by VK so I can just present it

#

and I don't have to write any shader code in anything but C

#

I'd have to give up clang for nvcc

solid grove
#

I think that extension is intended for sharing textures across process, like how video players do for security

cloud rivet
#

it's just memory

solid grove
#

eg the video decode and player service runs out-of-process and then the app process displays the rendered output

pseudo dock
#

(oh good, you're back, I was afraid you had fallen over the p_recipice!)

cloud rivet
#

across process?

#

An application may wish to reference device memory in multiple Vulkan logical devices or instances, in multiple processes, and/or in multiple APIs. This extension enables an application to export Windows handles from Vulkan memory objects and to import Vulkan memory objects from Windows handles exported from other Vulkan memory objects or from similar resources in other APIs.

#

the or

#

in and/or

#

leads me to think it's not about multiple processes

#

gl and vk using it in the same process

#
HANDLE handle;

PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 
    (PFN_vkGetMemoryWin32HandleKHR)instance.getProcAddress("vkGetMemoryWin32HandleKHR");
if (vkGetMemoryWin32HandleKHR == nullptr) {
    // handle missing function
}

VkMemoryGetWin32HandleInfoKHR info =
    { VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR };
info.memory = vkDeviceMemory;
info.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT;

if (vkGetMemoryWin32HandleKHR(vkDevice,&info,&handle) != VK_SUCCESS) {
    // handle error
}
#
CUexternalMemory externalMemory;
CUDA_EXTERNAL_MEMORY_HANDLE_DESC desc;

desc.type = CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32;
desc.handle.win32.handle = handle;
desc.size = size;

if (cuImportExternalMemory(&externalMemory,&desc) != CUDA_SUCCESS) {
    // handle error
}
#

cuda has a cudaWaitExternalSemaphoresAsync

#

https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__EXTRES__INTEROP.html#group__CUDART__EXTRES__INTEROP_1g52ecbdf57e75f0fde9fa44a2f9532c2d

#

This sample demonstrates Vulkan Image - CUDA Interop. CUDA imports the Vulkan image buffer, performs box filtering over it, and synchronizes with Vulkan through vulkan semaphores imported by CUDA. This sample depends on Vulkan SDK, GLFW3 libraries, for building this sample please refer to "Build_instructions.txt" provided in this sample's directory

#
        cudaExternalSemaphoreWaitParams waitParams = {};
        waitParams.flags                           = 0;
        waitParams.params.fence.value              = waitValue;

        cudaExternalSemaphoreSignalParams signalParams = {};
        signalParams.flags                             = 0;
        signalParams.params.fence.value                = signalValue;
        // Wait for vulkan to complete it's work
        checkCudaErrors(cudaWaitExternalSemaphoresAsync(&m_cudaTimelineSemaphore, &waitParams, 1, m_stream));
        // Now step the simulation
        m_sim.stepSimulation(time, m_stream);
        // Signal vulkan to continue with the updated buffers
        checkCudaErrors(cudaSignalExternalSemaphoresAsync(&m_cudaTimelineSemaphore, &signalParams, 1, m_stream));
#

this is the holy grail as far as I'm concerned

silk pier
cloud rivet
#

and then link dynamically?

silk pier
cloud rivet
#

nice

silk pier
#

@ sam0oneau should know, I guess you'd ask in #gpu-compute

cloud rivet
#

thank you!

#

I want the ability to step through on the gpu in visual studio

#

that's really cool

#

I don't really need to hang on to clang, the issue would be, I think I'd be starting a new project I'm so deep into clang right now

#

which is fine

solid grove
#

i don't think the vs step debugger is a live debug, I'm pretty sure it's the same as renderdoc where it's a simulated replay

#

also the vs step debugger has been deprecated, PIX is the replacement

cloud rivet
#

nvidia ships a visual studio thing

silk pier
cloud rivet
#

I think you're talking about something else

solid grove
#

NSight has a real live debug but it requires 2 gpus, one to run the game and one to run the debugger

cloud rivet
#

renderdoc debugger steps through a shading language

#

and it's bad at it

silk pier
cloud rivet
#

hrm I see

silk pier
#

I don't really know too much about the debug ops though, haven't had any time to play with them-- someone else probably knows more on this than me.

cloud rivet
#

I'm gonna start a new project and see where it goes I guess.

#

there's no hope for me KEKW

solid grove
#

no more skimmer racing? 😢

cloud rivet
#

no I think I can copy a lot of that code over

#

idk

#

I think this is a cool project idea

#

I don't think many people are doing a thing like this, I could be wrong

pseudo dock
#

The precipice!

#

I feel similarly to Ravbug, though, I will miss the skimmer racing. But it's your own free time, you should definitely spend it doing what you want 🙂

cloud rivet
#

I should have never tried vcc tbh

#
:\ProgramData\NVIDIA Corporation\OptiX SDK 9.0.0\SDK>dir
 Volume in drive C is OS
 Volume Serial Number is 5C1A-ED43

 Directory of C:\ProgramData\NVIDIA Corporation\OptiX SDK 9.0.0\SDK

11/26/2025  10:43 PM    <DIR>          .
11/26/2025  10:43 PM    <DIR>          ..
11/26/2025  10:43 PM    <DIR>          CMake
01/29/2025  04:29 PM            25,337 CMakeLists.txt
11/26/2025  10:43 PM    <DIR>          cuda
11/26/2025  10:43 PM    <DIR>          data
01/29/2025  04:06 PM             1,132 INSTALL-LINUX.txt
01/29/2025  04:06 PM             2,540 INSTALL-WIN.txt
11/26/2025  10:43 PM    <DIR>          lib
11/26/2025  10:43 PM    <DIR>          optixBoundValues
11/26/2025  10:43 PM    <DIR>          optixCallablePrograms
11/26/2025  10:43 PM    <DIR>          optixClusterStructuredMesh
11/26/2025  10:43 PM    <DIR>          optixClusterUnstructuredMesh
11/26/2025  10:43 PM    <DIR>          optixCompileWithTasks
11/26/2025  10:43 PM    <DIR>          optixConsole
11/26/2025  10:43 PM    <DIR>          optixCurves
11/26/2025  10:43 PM    <DIR>          optixCustomPrimitive
11/26/2025  10:43 PM    <DIR>          optixCutouts
11/26/2025  10:43 PM    <DIR>          optixDenoiser
11/26/2025  10:43 PM    <DIR>          optixDynamicGeometry
11/26/2025  10:43 PM    <DIR>          optixDynamicMaterials
11/26/2025  10:43 PM    <DIR>          optixHair
11/26/2025  10:43 PM    <DIR>          optixHello
11/26/2025  10:43 PM    <DIR>          optixMeshViewer
11/26/2025  10:43 PM    <DIR>          optixMixSDKs
11/26/2025  10:43 PM    <DIR>          optixModuleCreateAbort
11/26/2025  10:43 PM    <DIR>          optixMotionGeometry
11/26/2025  10:43 PM    <DIR>          optixMultiGPU
11/26/2025  10:43 PM    <DIR>          optixNeuralTexture
11/26/2025  10:43 PM    <DIR>          optixNVLink
11/26/2025  10:43 PM    <DIR>          optixOpacityMicromap
11/26/2025  10:43 PM    <DIR>          optixOpticalFlow
11/26/2025  10:43 PM    <DIR>          optixPathTracer
11/26/2025  10:43 PM    <DIR>          optixRaycasting
11/26/2025  10:43 PM    <DIR>          optixRibbons
11/26/2025  10:43 PM    <DIR>          optixSimpleMotionBlur
11/26/2025  10:43 PM    <DIR>          optixSphere
11/26/2025  10:43 PM    <DIR>          optixTriangle
11/26/2025  10:43 PM    <DIR>          optixVolumeViewer
11/26/2025  10:43 PM    <DIR>          optixWhitted
01/29/2025  04:06 PM             2,512 sampleConfig.h.in
11/26/2025  10:43 PM    <DIR>          support
11/26/2025  10:43 PM    <DIR>          sutil
               4 File(s)         31,521 bytes
silk pier
cloud rivet
#

spoiled me

silk pier
#

nvm, found the thread: #vulkan message

#

hopefully one day these languages will be fully implemented and made stable

#

one day...

cloud rivet
#

I spent like 2 months on vcc

silk pier
#

this does connect some dots for me~ I recall you talking about contributing to Gob, had no idea you made a pr to shady at some point!

cloud rivet
#

vcc is amazing

#

I'm about to get vcc at home though

#

samples build

#

cool

#

uses #include <cuda_gl_interop.h>

#
D:\projects\cuda-samples>dir /s /b D:\projects\cuda-samples\Samples\*vulkan*
D:\projects\cuda-samples\Samples\5_Domain_Specific\simpleVulkan
D:\projects\cuda-samples\Samples\5_Domain_Specific\simpleVulkanMMAP
D:\projects\cuda-samples\Samples\5_Domain_Specific\vulkanImageCUDA
D:\projects\cuda-samples\Samples\5_Domain_Specific\simpleVulkan\VulkanBaseApp.cpp
D:\projects\cuda-samples\Samples\5_Domain_Specific\simpleVulkan\VulkanBaseApp.h
D:\projects\cuda-samples\Samples\5_Domain_Specific\simpleVulkanMMAP\VulkanBaseApp.cpp
D:\projects\cuda-samples\Samples\5_Domain_Specific\simpleVulkanMMAP\VulkanBaseApp.h
D:\projects\cuda-samples\Samples\5_Domain_Specific\simpleVulkanMMAP\VulkanCudaInterop.h
D:\projects\cuda-samples\Samples\5_Domain_Specific\vulkanImageCUDA\vulkanImageCUDA.cu
#

heyyyyy

cloud rivet
#

cuda vulkan interop

#

I got working OptiX examples and working vulkan memory sharing with cuda examples, this should be doable

#

tomorrow I start my 5th vulkan init

#

gonna use SDL and C++ though, no more NIH

#

so I can use vkbootstrap and go fast

#

this time I'm for sure going to get WSI right, for sure

#

imgui the whole deal

#

I'm gonna go exercise and go to bed, this is fun

hushed creek
#

You're not doing the cuberoach anymore?

cloud rivet
#

no, but this is the one, I'm sticking with this project, for sure

cloud rivet
#

Limited to ‘C++20’

#

That’s ok

#

nvcc sends host compilation steps to msvc

#

Also ok

#

Can’t actually write C as nvcc is not a C compiler

#

That’s fine

#

You can specify a different host compiler

#

So probably clang is possible as long as it’s C++20

#

you can specify older versions of the C++ std

#

nvcc creates statically linked binaries that are incompatible across major versions of NVIDIA GPUs

#

It just has to work on my machine

hushed creek
#

what's the new project about tho

cloud rivet
#

Same as all my other projects, just to learn and have fun

#

I am personally not interested in distributing my own software to others

hushed creek
#

yes but what will it do

cloud rivet
#

I am going to make a ray traced game

#

It has to be compiled from source for a specific major NVIDIA gpu version using MVDIAs CUDA compiler and the OptiX SDK and the Vulkan SDK

cloud rivet
#

I am over the handmade thing

#

Going to continue to use neovim, but going back to premake and using visual studio as my debugger

#

I think renderdoc is now useless to me

hushed creek
#

how so

#

ah because nvidia

#

you use their things

broken fog
#

i liked the nih bjorn arc

cloud rivet
#

I gotta narrow my goals and focus

broken fog
#

yeah, that's fair enough, writing your own everything is fun but not a great way to finish, well, anything really

#

gotta find a middle ground

cloud rivet
#

Meta now maintains its own fork of RenderDoc. This fork provides access to low-level GPU profiling data from Meta Quest’s Snapdragon 835, Meta Quest 2’s Snapdragon XR2, and Meta Quest Pro’s Snapdragon XR2+ chips, specifically information from its tile renderer.

#

baldurk:

As a general rule I don't add support for vendor API extensions unless they're mostly trivial and 'free' to implement, which is definitely not the case for nvidia's RT extensions.

#

and that's just about the API extensions

#

that discussion is frustrating to read

#

baldurk making a very understandable case to someone who wants the RT support and isn't reading the very clear points baldurk is making

#

I could never maintain an open source project

#

the aftermath sdk can help explain lost device crashes cool

astral hinge
#

as if RenderDoc is even capable of accurate profiling

cloud rivet
#

right, and I was surprised profiling is the use case for the meta renderdoc fork

#

reading that I was thinking, but why renderdoc

#

does qualcom not have their profiling tool

astral hinge
#

yeah idk

#

weird

cloud rivet
#

looks just like nsight

#

ok I guess I should write some code or something

#

I'll start with a blank premake lua file

#

and see what happens

cloud rivet
#

hrm latest premake that supports vs2026 doesn't build

#

that's fine, I'll just use the vs2022 option that builds in vs 2026

#

oh

#
--cc=VALUE     Choose a C/C++ compiler set; one of:
     clang       Clang (clang)
     gcc         GNU GCC (gcc/g++)
     mingw       MinGW GCC (gcc/g++)
     msc-v100    Microsoft compiler (Visual Studio 2010)
     msc-v110    Microsoft compiler (Visual Studio 2012)
     msc-v120    Microsoft compiler (Visual Studio 2013)
     msc-v140    Microsoft compiler (Visual Studio 2015)
     msc-v141    Microsoft compiler (Visual Studio 2017)
     msc-v142    Microsoft compiler (Visual Studio 2019)
     msc-v143    Microsoft compiler (Visual Studio 2022)
     msc-v80     Microsoft compiler (Visual Studio 2005)
     msc-v90     Microsoft compiler (Visual Studio 2008)
#

maybe I can't use it

#

fine cmake

cloud rivet
#
cmake_minimum_required(VERSION 4.0)
project(PixelStorm LANGUAGES CXX CUDA)

set(VULKAN_SDK $ENV{VULKAN_SDK})
set(CUDAToolkit_ROOT "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v13.0")
set(OPTIX_ROOT "C:/ProgramData/NVIDIA Corporation/OptiX SDK 9.0.0")
find_package(CUDAToolkit REQUIRED)
find_package(Vulkan REQUIRED COMPONENTS volk)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED 20)
set(CMAKE_CUDA_STANDARD 20)
set(CMAKE_CUDA_STANDARD_REQUIRED 20)
set(CMAKE_GENERATOR_INSTANCE "Visual Studio 17 2022")
set(CMAKE_CUDA_ARCHITECTURE 86)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

add_library(SDL3 SHARED IMPORTED)
set_target_properties(SDL3 PROPERTIES
    IMPORTED_LOCATION "${VULKAN_SDK}/Bin/SDL3.dll"
    IMPORTED_IMPLIB "${VULKAN_SDK}/Lib/SDL3.lib"
    INTERFACE_INCLUDE_DIRECTORIES "${VULKAN_SDK}/Include"
)

add_subdirectory("external/vk-bootstrap")

add_executable(pixelStorm WIN32 src/main.cpp)

target_include_directories(pixelStorm PRIVATE
    ${OPTIX_ROOT}/include
    ${VULKAN_SDK}/Include
)

target_link_libraries(pixelStorm PRIVATE
    SDL3
    Vulkan::Vulkan
    Vulkan::volk
    CUDA::cuda_driver
    CUDA::cudart
    vk-bootstrap::vk-bootstrap
)

add_custom_command(TARGET pixelStorm POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    "${VULKAN_SDK}/Bin/SDL3.dll"
    $<TARGET_FILE_DIR:pixelStorm>
)
#
{
    "version": 10,
    "cmakeMinimumRequired": {
        "major": 4,
        "minor": 0,
        "patch": 0
    },
    "configurePresets": [
        {
            "name": "dev",
            "displayName": "Release (Ninja)",
            "description": "development build using ninja",
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/build-dev",
            "cacheVariables": {
                "CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
                "CMAKE_BUILD_TYPE": "Debug"
            }
        },
        {
            "name": "release",
            "displayName": "Release (Ninja)",
            "description": "Relase build using ninja",
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/build-release",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Release",
                "CMAKE_CXX_FLAGS_RELEASE": "/O2 /Ob3 /DNDEBUG",
                "CMAKE_CUDA_FLAGS_RELEASE": "-O3"
            }
        },
        {
            "name": "vs",
            "displayName": "Visual Studio",
            "description": "build using Visual Studio",
            "generator": "Visual Studio 17 2022",
            "binaryDir": "${sourceDir}/build"
        }
    ]
}
#
C:\Users\Bjorn\projects\code\pixel_storm>cmake --preset dev
-- The CXX compiler identification is MSVC 19.44.35221.0
-- The CUDA compiler identification is NVIDIA 13.0.88 with host compiler MSVC 19.44.35221.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Check for working CUDA compiler: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v13.0/bin/nvcc.exe - skipped
-- Detecting CUDA compile features
-- Detecting CUDA compile features - done
-- Found CUDAToolkit: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v13.0/include;C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v13.0/include/cccl (found version "13.0.88")
-- Found Vulkan: C:/VulkanSDK/1.4.328.1/Lib/vulkan-1.lib (found version "1.4.328") found components: volk glslc glslangValidator
-- Configuring done (8.3s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/Bjorn/projects/code/pixel_storm/build-dev

C:\Users\Bjorn\projects\code\pixel_storm>cmake --build build-dev
[6/6] Linking CXX executable pixelStorm.exe

C:\Users\Bjorn\projects\code\pixel_storm>start build-dev\pixelStorm.exe
#

gives me the hello SDL window right now

#

ready for vulkan init now

#

all I need from vulkan is some memory and a present

#

I'll blit the memory to the swapchain, submit and present and that's all vulkan will do

#

cuda and optix will write pixels to the memory

#

I will actually also add imgui, so I guess I do need a dynamic render pass

#

I'll do that after I have an OptiX generated triangle presented by vulkan on the screen

#

once I have a triangle I'll set up an acceleration structure

#

once I have that I'll add my track and skimmer back in

#

and we'll be back in business

#

ah all my controls have to get migrated to sdl3 stuff

cloud rivet
#

I have so many tabs open right now

#

too many

cloud rivet
#

man vk boostrap is pretty cool, fastest device init ever

#

took like 30 minutes

#

writing C++ again is so weird

#

C and C++ are not the same language

#

I hate that meme

#

I really don't like it, it is false

astral hinge
#

C/C++ is just ++

cloud rivet
#

1/++

astral hinge
#

forgive me deccer for I have sinned by using a regional indicator instead of a flag

cloud rivet
#

I think how fast I get back to having a track and a skimmer all depends on how much work it is to get through the cuda and optix stuff

#

I'm gonna be optimistic and say before the year is over

astral hinge
#

the hardest part will probably just be figuring out the new stuff (optix, cuda, cuda-vk interop)

#

cuda is actually pretty simple to use so probably just the other two things

cloud rivet
#

well I assume the cuda vk interop is solved based on the examples I have, it's a vk timeline semaphore and an win32 external memory handle

#

I think I can just copy paste the code

#

idk

astral hinge
#

yeah that's probably a single day problem at most

#

but it's still relatively unknown territory

cloud rivet
#

yes

#

I read through the optix programming guide and it reminds me a lot of all the NV RT extensions

#

for vulkan

#

which are slightly different from the KHR RT pipeline features

bronze socket
cloud rivet
#

support for Visual Studio 2026 is still pretty far behind

#

cmake, premake, sdks, etc

#

have had trouble with pretty much everything, but just going with the Visual Studio 2022 generator in cmake solved all my problems and VS 2026 can handle it

#

I pasted my config above, I'm just ninja and rad debugger for the most part, it's just easier and faster, but if I need to debug in visual studio I have that option

#

today I have been setting up my laptop since I'll be traveling a bunch

#

haven't opened it in nearly a year had an hour's worth of windows updates to go through and am setting up my build system, making sure all the cuda optix stuff also works on this laptop

#

it's has a discrete RTX 3070 gpu for laptops, which is the same generation as my PC so hopefully works

solid grove
#

cmake has worked fine with vs 2026 for me

cloud rivet
#

my issue is with visual studio missing extensions

#

you're likely do not need these extensions

#

the extensions work with using the vs 2022 generator and then building inside vs 2026

#

the extensions are NVIDIAs

#

I don't really know where the fault is

#

I think there's problems all around in detecting the extensions, presenting the error correctly and building

solid grove
#

i think if you use cmake to create a vs2022 sln and open it in vs2026 it will still use the vs2022 compiler to build jt

cloud rivet
#

that's fine

#

I'm limited to C++20

#

that's the newest version supported by nvcc

#

I wonder if clangd is gonna have trouble with .cu files

#

I don't think it will

broken fog
#

isn't it easier to just use gdb at that point

tight torrent
#

just requires cmake 4.1 i think?

#

or at least cmake 4

cloud rivet
#

Yeh

#

Hey we all have green names now

#

It’s not easy being green

echo crystal
cloud rivet
#

Staying in the SF W Hotel for fan expo, got a real nice view

#

that picture makes it look much brighter than it is

silk pier
#

stay safe and enjoy

make sure to stay away from the Tenderloin!

cloud rivet
#

nice today I got my laptop working with my new project, tomorrow I can make more progress on vulkan init

brisk chasm
#

nvidia's vs extensions always have been meh

#

the standalone tool worked

cloud rivet
#

We compare the 16-inch Macbook Pro M1 Pro GPU rendering against the RTX 3070 Ti (CUDA and Optix) in Cycles rendering.

We’ll see how the M1 Pro measures up to an RTX 3070 Ti with and without the RT core advantages.

The scenes we test are:

The Junk Shop by Alex Trevino - https://cloud.blender.org/p/gallery/5dd6d7044441651fa3decb56

Racing Car...

▶ Play video
#

interesting I guess

#

3 year old tech though

#

idk

#

not really a Gamers Nexus benchmark video

#

hrm, the RT blender uses is optix

solid grove
#

it used to be only CUDA, then nvidia added an optix backend, and after a while apple added a metalRT backend, and AMD and Intel added backends for their respective technologies

#

I don't think blender uses DXR or VulkanRT for anything

cloud rivet
#

this is also via blender

#

optix in this video is about twice as fast, but this isn't really rigorous science

solid grove
#

twice as fast compared to what?

cloud rivet
#

using CUDA

#

the blender CUDA backend

solid grove
#

afaik the CUDA backend in blender is purely a software trace and doesn't use any dedicated silicon

cloud rivet
#

right

#

idk RT hardware is faster at RT, not surprising I guess

solid grove
#

in my testing an M4 Max is about 10% faster than a 2070 super in hardware ray tracing. idk how much those numbers mean to u though

cloud rivet
#

the M4 is about 3 or 4 years newer than the 2070, and the 2070 is first gen RT?

#

not sure

#

I was just trying to understand what the future has in store for OptiX, they built it before Vulkan RT was a thing

#

I think?

#

like I'm getting invested in this proprietary API so just was looking for recent news, and all these Blender benchmarks popped up

#

which is not really what I'm interested in

#

but was kind of interesting

#

which added clusters

#

idk

silk pier
#

optix won't be magically faster in any crazy way

#

there may be slight benefits from a few new knobs to fiddle with

#

but its the same hardware with largely the same features at the end of the day

cloud rivet
#

yeah

broken fog
#

iirc my m3 pro is only slightly slower than my 2060s too

hushed creek
#

I imagine 2070 super is nothing nowadays

broken fog
#

m3 onwards will make a big difference because they actually have hwrt

broken fog
#

m4 max has like a fifth of the power budget

#

for the entire soc

hushed creek
#

the price my man

#

m4 max macbook pros are well within the range of the highest end gaming laptops

#

for the desktop variants it's even worse

#

that's why I'm saying the amount is tiny

#

you can get a razer blade with RTX 5090 for the same price as the m4 max mbp

#

and I reckon the 5090 is more than 10% better than the 2070 super at hw rt

#

anyway I was just surprised

#

because I was under the impression that apple was much better than this at rt

broken fog
#

i had a razer blade trust me you don't want one

#

but yea gpu is not apple's strong suit

hushed creek
#

except for death stranding on their phones, it's pretty crazy to play DS on a phone

broken fog
#

the rt is pretty decent for the tiny power budget

#

but yeah it's not even close to current nvidia tech

broken fog
#

gpu is drawing 15-16w while rendering with cycles so at full sustained load

#

tdp for the smolest blackwell gpu is three times that lol, no wonder it's a lot faster

cloud rivet
#

razer's are overpriced so that actually supports FIrefly's argument

#

nobody is buying a mac for RT cores though

broken fog
#

mine was... 2018 iirc? some 6-core i7 and a mobile gtx 1060, perf was actually decent, the issue was with build quality

cloud rivet
#

yeah build quality

#

and the software was also bad

broken fog
#

razer cheaped out on the battery and stuck some no name chinesium in there rated for 40ºC

#

the cpu right next to it hit 95

cloud rivet
#

I think they deserve a class action lawsuit tbh

broken fog
#

so ofc battery got fucked after a year and it started inflating like a yummy lithium balloon

cloud rivet
#

also they shipped a crypto thing

#

oh wait mine was like in 2018 too? not 2015

broken fog
#

man i love my $2k laptop turning into a fire hazard overnight froge_love

#

oh also the gpu fan went after two years and started making a horrible grinding noise, so i had to disable it and then disable the gpu to stop it overheating

cloud rivet
#

they probably deserved a class action lawsuit for how horrible they are and the quality they ship given the price

broken fog
#

ended up selling the thing for less than half price because of all the issues it had

cloud rivet
#

mine just stopped turning on and I threw it away

broken fog
#

a year after that i got an m1 macbook for work and never looked back lmao

cloud rivet
#

there are no good windows laptops

#

I have a dell, it is "ok"

#

but it is more expensive than a mac

broken fog
#

oh btw i only got the razer blade because the dell xps i bought also had qc issues (awful fan noises day one) and it was the last one in stock

cloud rivet
#

I have an exps yeah

broken fog
#

so yea those xps look nice but i don't trust dell's qc either KEKW

cloud rivet
#

I haven't had any quality issues with this dell

#

I went through a lot of troubled windows laptops

#

I had an asus gaming laptop, the razer, two surfaces

#

before I finally got this dell and I have had this for like 3 or 4 years now with no issues

broken fog
cloud rivet
#

the asus, razer, and surfaces were all very bad

#

I don't buy lenovo

broken fog
#

but those are also prices very close or more expensive than macs so,,, why

broken fog
#

like they might as well be two different companies

cloud rivet
#

because I don't trust the manufactor to not put RoC stuff on there

brisk chasm
#

my business laptops are all thinkpads ever since, the cool (sic) thing about them is that you can flip them over during lunchtime to cook your meal on it

broken fog
#

i have two thinkpads both >12 years old froge_love

cloud rivet
#

the old thinkpads are fine before lenvo bought them

broken fog
#

awful screens, but they're excellent blunt weapons

#

i keep them around in case of home invasion

brisk chasm
#

yeah the old thinkpads had shitty lcd screens

broken fog
#

the ibm model m is my sword, the t420 is my shield

brisk chasm
#

hehe

#

literally

broken fog
brisk chasm
#

i can use my p15 as a counterweight for the liebherr ltm 11900.1

broken fog
#

newer ones are fine but not as tanky

brisk chasm
#

trust me they are tanky, still

broken fog
#

though i hate the stupid camera bump on the newer thinkpads, it looks so dumb

#

why did they do that

brisk chasm
#

to appease the mac peasants

broken fog
#

? macs don't have a bump, they have a notch thing like the iphones

#

it doesn't physically stick out

brisk chasm
#

same thing 😄

broken fog
#

i mean this dumb thing

brisk chasm
#

i always went with the performance series of them thinkpads though, not sure about the lightweight ones

broken fog
#

it's ugly

brisk chasm
#

the p15 doesnt have that one yet, not sure if that would bother me personally

brisk chasm
#

ye

broken fog
#

ye those are awesome

silk pier
broken fog
silk pier
#

and a 5060 without doubt beats a m4 max pro gigachad whatever gpu

brisk chasm
#

i was eying a p16 gen2, not sure if they had a bump mcbumpington

broken fog
cloud rivet
brisk chasm
#

ah gen 3 has the bump

brisk chasm
broken fog
#

gpu perf is not what you buy a macbook for

#

let alone gaming lmao

brisk chasm
#

indeed

#

who games on a mac... natively

broken fog
#

i play rimworld on it sometimes forgderp1

cloud rivet
#

I think the mac pro is where the target user would care about RT performance

broken fog
#

mac pro/studio have a higher power budget iirc, though if it's still stuck on m2 that has no hwrt whatsoever

silk pier
cloud rivet
#

M2 Ultra with 24-core CPU, 76-core GPU, and 32-core Neural Engine

#

hrm

brisk chasm
#

macbooks do be looking neat, at least the aluminium casing, speaking of aluminium, googles new os is called Aluminium too, not Aluminum xD

silk pier
broken fog
#

like it just feels nice to hold the thing

#

i can't say that for literally any other laptop, except maybe the fancier dell xps

brisk chasm
#

i have not touched a single macbook, last one was a powerbook 150 or something

silk pier
broken fog
cloud rivet
#

oh the mac studio ms an m3 ultra

broken fog
#

mac studio replaced it

brisk chasm
#

if i could put the intestines of my lenovo into a macbook shell, and use that beautiful display too, i would do it 😄

broken fog
#

not surprising, who would want the huge box when a tiny mac studio fits the exact same hw

broken fog
#

gpus are meh but the cpu cores are insanely good

brisk chasm
#

but the macos ecosystem sucks and asahi is probably not worth the hassle to use fulltime yet

broken fog
#

ymmv i'm drinking the hell out of this koolaid and it's tasty

silk pier
cloud rivet
#

not for developers

brisk chasm
#

looking forward to pollute my systray with 40 icons and apps of allah because you need to install all of them to make macos usable

broken fog
#

i've read stories about company gives all their employees apple silicon macs, one employee tries building the project on their new mac, oops it builds 2x faster than it does on the dedicated build server

#

i guess we support macos now

brisk chasm
#

hehe

broken fog
#

apple silicon cpus are amazing at compile workloads

#

i can build gcc in <5 mins and barely make a dent on the battery

#

and this is the cheapest m3 pro

brisk chasm
#

im just jealous hence the talking out of my ass

cloud rivet
#

your options as an engineer for a work computer at my company are a macbook or a macbook

broken fog
#

ye i do wish i could dualboot linux on it for some stuff (playing around with vk mostly heh)

silk pier
broken fog
silk pier
broken fog
#

comparing between macs and anything else is kinda pointless because you don't decide based on berf or anything like that

broken fog
#

developing on macos is great, developing for macos is a pain

brisk chasm
broken fog
#

but as long as you're not developing for ios (or macos and using swift and all the fancy shtuff ig) you can just not use xcode

cloud rivet
#

I use wezterm on my mac, ghostty is also ok

broken fog
#

kitty ftw

#

i went back to iterm2 tho for the global panel terminal thingy

cloud rivet
#

I like wezterm because it also runs on my windows machine

broken fog
#

wish kitty had that

brisk chasm
#

wish kitty had an option to center the fucking window when it spawns, but muhinder is reluctant because of some wayland excuse

cloud rivet
#

so I have the same terminal on mac and windows, obviously the shell is different, but I can share the dotfile config

silk pier
brisk chasm
broken fog
silk pier
broken fog
#

the one exception is blender

#

but it's stupid on other os too

brisk chasm
#

i blame the developers of non os software, not adhering to os guidelines

broken fog
#

xcode is truly ass

cloud rivet
brisk chasm
#

but it has a decent metal debugger 😄

broken fog
silk pier
brisk chasm
#

fish is fucked on linux too, you cant just run any bash in it, because of fish is doing some things differently

cloud rivet
silk pier
silk pier
broken fog
broken fog
#

back then it was kinda wild west and everyone did whatever

broken fog
broken fog
#

but also no

brisk chasm
solid grove
#

lol blender’s shortcuts feel like they were designed to slow people down
“hmm instead of clustering common actions next to each other so that one hand can operate all of them, lets scatter them randomly around the keyboard!”

#

slowly making my own key map

#

though I guess blender’s shortcuts are more equitable for left handed people. The industry keymap is designed for right handed people while blender’s shortcuts are equally terrible for everyone

cloud rivet
#

do left handed people have issues with wasd?

#

never considered that

silk pier
solid grove
#

(for reference I’m not left handed)
games don’t have that many shortcuts so some people just use wasd with their right hand
But one time I sprained my wrist and Maya because unusable to me because they arranged they keys assuming your left hand is over the left side of the keyboard

cloud rivet
#

I use the marking menu in maya

#

I don't use keyboard shortcuts outside of switching between rotate, translate, scale and some other minor things

#

you don't need a keyboard at all besides hitting the space and cntrol and shift buttons

#

I feel like a wizard using the marking menu

solid grove
#

I also use set key frame (s), group (g), and the shading modes (1 2 3 4)
Probably some more since they are muscle memory now

#

X to toggle the snap mode

cloud rivet
#

yeah shading modes

#

I use those

#

other than that it's all marking menu, you got the full power of maya in it

#

I'll use the menu bar for snapping windows

solid grove
#

oh yeah D to change the pivot of an object

#

F to frame selected

cloud rivet
#

have you tried the marking menu

solid grove
#

that’s the space bar menu right?

cloud rivet
#

wow

#

that's one of them

solid grove
#

oh this thing?

#

lol image didn’t paste

#

I use this all the time

cloud rivet
#

I do everything with the marking menus

#

including creating cubes/geometry, manage UVs

#

I tool switch like from quadtool to select to whatever

broken fog
cloud rivet
#

everything

solid grove
#

one of my major annoyances with blender is that the modes are global. Vs here you can have different objects in different modes at the same time and select things in both simultaneously

#

flipping between modes constantly in blender is a major source of slowdown

brisk chasm
solid grove
brisk chasm
#

yeah that mode nonsense is quite weird

#

i think they started to work on that, according to blendercon from january 2025?

solid grove
#

the modes are tied to what view you’re in too. If you change from layout to compositing and you were in edit mode it might take you to object mode and lose your selection. infuriating

brisk chasm
#

time to rewrite a blender clone from scratch!

#

screw your minecraft clone and openworld mmo rpg

#

hehe we should suggest that to beginners actually, those who want to compete with ue5 nanite and lumen

#

make a blender clone instead 🙂

#

how hard can it be

#

replace python with c# on dotnet

#

or, alternatively. replace the existing gltf importer/exporter with something fast 😄

cloud rivet
brisk chasm
#

and the source code is quite spaghetti

cloud rivet
#

Is she working on half edge still?

tight torrent
#

yes

brisk chasm
#

yep

cloud rivet
#

Nice

brisk chasm
#

she streamed yesterday while working on it

tight torrent
#

she was streaming it yesterday (or a day ago? idk)

brisk chasm
#

i think i shared the videos some time ago

#

that embedded yt looks familiar

#

could you check if this was i posted this in #graphics-resources and if not also link it there, i think this is some cool stuff

#

ah nevermind

#

that article is just few days old 🙂

#

i must have posted only the yt videos back then

echo crystal
#

just shared it froge_yeehaw

brisk chasm
#

i remember that blender ackchually builds quite fast

#

when jakov and i enhanced the existing gltf plugin lol

echo crystal
cloud rivet
#

I don't hate cmake

#

it's ok

#

I'm not doing a ton with it

#

I just kept avoiding it because everyone always complained about it

#

but just my first cmake project, idk, it's fine, it works

brisk chasm
#

yeah, its quite ok for small projects

#

once you put your butt down for half an hour to see what you need and how to use those bits, at least when it comes to lunix and binbows, no idea how fucked it is for android or mac

solid grove
#

it’s ok for big ones too. for some reason people love putting tons of extra crap in their cmake that makes it worse and I don’t know why

solid grove
broken fog
brisk chasm
#

i also had no trouble to add foreign code which didnt come with cmake support, but cmakeified it so to speak

brisk chasm
solid grove
#

On Android you have to do some backflips to get gradle to invoke cmake, and some gradle functions like “clean” don’t work correctly

broken fog
brisk chasm
#

i also thought so about android 😄 i did touch it 100 years ago for a month or two

broken fog
#

i hate cmake though

#

for a very small project i'd rather just write a makefile

#

and for something bigger i uh

brisk chasm
#

i never rely on findpackage, i just compile shit myself, and sometimes you have to anyway

broken fog
#

use cmake and really wish i had a better build system KEKW

brisk chasm
#

hehe

broken fog
#

i don't like writing cipipi to begin with anyway

solid grove
#

me waiting for Google to expose everything to NativeActivity so we never have to deal with Java again (I will die of old age)

cloud rivet
#

makefile doesn't work on windows, but it's ok too

brisk chasm
#

just join tccpcpcpp server and checkout #showcase, every other week some 17 year old reinvented a c++ build/package manager system

#

makefile also works on windows, oyu need to have your PATH properly set for that, or have some, god forbid, cygwin/wsl shit setup

cloud rivet
#

no

solid grove
#

afaik on Android your app starts life by having the jvm load your main class via reflection. It’s cooked out the gate

cloud rivet
#

makefile on windows is a shitshow unless you're using wsl 2

brisk chasm
#

i remember using make on binbows, in 2006 or so to add native ntlm support to TortoiseSVN

cloud rivet
#

it doesn't work

bronze socket
#

in theory it should at least work with the nicer JVM langs, like kotlin

cloud rivet
#

like I can just build my work's anything on windows with any of our makefiles

broken fog
bronze socket
#

don't you do fullstack stuff

broken fog
#

it isn't agonyfrog

brisk chasm
#

kotlin itself is 10000 times better than jaba

bronze socket
#

why does your work have makefiles

cloud rivet
#

because we use go

solid grove
#

I want to meet the person at Google who decided “let’s run 50 JVM instances on this memory-constrained device”

cloud rivet
#

and go projects use Makefiles

brisk chasm
#

go go make-o-mobile

bronze socket
solid grove
cloud rivet
#

like that

broken fog
#

the syntax decisions they made are utterly baffling

brisk chasm
#

its what java should have been 20 years ago already, at least

broken fog
#

it does at least get true generics ig

cloud rivet
#

that one actually works on windows

#

so bad example KEKW

broken fog
#

but the syntax is awful, ambiguity everywhere, kotlin code is just super hard to parse for a human

brisk chasm
broken fog
cloud rivet
#

yes

brisk chasm
#

not by default

bronze socket
#

I have msys 1.0 mapped into my path so makefiles work better than otherwise

#

but you still have trouble from the more GNU-y builds

#

worth it though pretty much solely for grep

solid grove
#

Switching to kotlin doesn’t make android dev with native code any easier. You still have to deal with the dual build systems and JNI-whispering to do anything

cloud rivet
#
C:\Users\swart\projects\code\pixel_storm>winget search gnuwin32.make
Name           Id            Version Source
--------------------------------------------
GnuWin32: Make GnuWin32.Make 3.81    winget
broken fog
bronze socket
#

how is mingw not an actual build

#

mingw isn't solely contained in msys 2.0, they have exes for native windows everything, pretty well maintained and supported

#

I use GCC via cmd.exe, not directly but via cmake/ninja

cloud rivet
#

Í don't know why you need mingw when there's wsl 2

bronze socket
#

but you absolutely need msys 2.0 to build weird stuff that's designed to live in GNU-y environments (ffmpeg is my chief example) though pretty much entirely for the shell emulation

broken fog
#

like just install linux

cloud rivet
#

stop lol

bronze socket
#

I don't wanna build for linux, if I wanna make a linux build I boot into linux

broken fog
#

yea you're not gonna target binbows from wsl right?

bronze socket
#

msys lets me work around shitty linux-oriented build systems but still generate an entirely windows native result

#

again e.g. ffmpeg, I can build it with msys and I link it from my regular windows builds

#

especially since it's just a DLL with a C API I can use it from either MSVC or my gcc builds

cloud rivet
#

I don't wan't or care about linux, I don't use linux I don't want to build anything for linux, but sometimes some tools are only available/work well on linux, as in maybe ffmpeg (I don't know) in that case wsl 2 is going to be fine

bronze socket
#

ffmpeg is available for windows, could not live without it

#

building it from source while on windows is just a bit annoying

cloud rivet
#

right I don't have an example of a linux only thing

#

I think the openai cli tool is an example

#

codex

bronze socket
#

the only one I can think of is valgrind, but it relies on being in the linux env

cloud rivet
#

that's only on windows via wsl 2 right now

brisk chasm
#

windows sdk also provides make for windows, but lets not talk about that

bronze socket
#

but I just have my laptop that I pretty much only boot into linux and I just build linux native stuff there

cloud rivet
#

cool, I don't have a need to do that personally

broken fog
# cloud rivet stop lol

i will respect your decisions because this is your own project thread and you're a cool frog

#

but inshallah we will wipe windows off the face of this earth 🙏

bronze socket
#

I am so used to the windows crust and have so many ways of coping that it doesn't bother me at all anymore

#

that being said it's crazy how much linux literally is by and for C/C++ devs

#

(I mean basically all OSes are by C/C++ devs when you get down to it, but you know what I mean)

wraith urchin
#

I was thinking of stepping back into Linux but the friction is still so high

bronze socket
#

I just use kubuntu, everything is like ubuntu under the hood but it uses KDE and doesn't have regular ubuntu's sponsored bloat

#

could not use it as my daily driver because there's a lot of programs I like on windows

wraith urchin
#

I have a Manjaro box, I was thinking of installing it on my main machine for a bit

bronze socket
#

but it's my "it just works" options that I open and do dev stuff and don't care

wraith urchin
#

I guess I'm gonna find out what the windows things I rely on are

bronze socket
#

yeah I mean if you're using high friction distros that's that much more stopping you

wraith urchin
#

I mean already #1 is probably Visual Studio

bronze socket
#

using an ubuntu-based distro any issue I have is like the first result when I search

wraith urchin
#

Is manjaro high friction? it was the smoothest linux experience I had in a while

#

that was on AMD though

#

Nvidia gpu is probably gonna make it worse

bronze socket
#

does it not have similar DIY setup friction as arch

wraith urchin
#

nah

#

its just an installer

#

Its like arch for dummies

#

which is what I want

brisk chasm
#

ubuntu based distros usually have "old"er packages installed, especially compilers

#

if thats no concern for you then you are good

wraith urchin
#

Yeah I hate that shit

brisk chasm
#

archinstall's installer is also very straight forward these days

#

nvidia gpus are no issue anymore, since 560.xx or 540.xx even

solid grove
#

when I set up a fedora install I had to run that stupid .run file to install the Nvidia drivers

#

so it’s still a pain there

wraith urchin
tight torrent
wraith urchin
#

You have no idea how many distros I've tried that had full screen tearing right out of the box

brisk chasm
#

cachy is one of those distros made by 18 year olds, god knows when they burn out and then this goes to shit

bronze socket
brisk chasm
#

hehe isnt it at 17 already

#

ah no, 15.2

#

fedora is also ok otherwise

bronze socket
#

I'm also using LTS so that might contribute to how far behind it is

brisk chasm
#

yeah

solid grove
#

also I find modern gnome very annoying to use. and you have to install 3rd party plugins to fix those behaviors. sucks though because gnome actually handles DPI scaling correctly

brisk chasm
#

26.04 is next LTS iirc

bronze socket
#

that's why I use kubuntu, you get KDE so you don't get gnomed

brisk chasm
#

yeah gnome sucks somehow, thats why i just go with XFCE, i like its uglyness and it has some neat even more ugly themes which i enjoy for nostalgic raisins

bronze socket
#

and no preinstalled amazon shop button or whatever else they do these days

solid grove
#

last time I used KDE it did not handle DPI scaling very well, though it’s been a few years

brisk chasm
#

kde has HDR support at least, which somehow works good enough

tight torrent
brisk chasm
#

steam also runs out of the box on arch at least, i could imagine same on fedora, not so sure about oeboentoe based ones because of outdated packages perhaps

bronze socket
#

yeah I forget how I installed official nv drivers, probably off their website though

solid grove
brisk chasm
#

sudo pacman -S nvidia-dkms or select nonfree dribers in archinstaller

#

cachy seems to break shit quite often, i was lurking on their discord for a week because i thought i give it a try

#

all i do now, is check archlinux.org once a week or two, to see if some manual intervention is required before updating the os, which was also very trivial in the past, and happened once a year or so

#

and i have to disable auto update every 3 months or so for discord, because discord claims thres an update, but the package has not been updated to latest version yet, which usually happens a day later then

#

unless you use it in ze browser only

broken fog
#

oops i accidentally unleashed a linuxshed it seems

#

sorry

brisk chasm
#

Rosy the new Linux Distro 😛

broken fog
#

would install

brisk chasm
#

but yeah, sorry bjorn

wraith urchin
brisk chasm
#

this is a thing from the past

#

no more x11 config bs

wraith urchin
#

Oh thank god

broken fog
#

wayland is the way

brisk chasm
#

even xfce is almost wayland-support-complete

#

im still on x11 though, until 100% is done and tested for some time

tight torrent
#

i just use kde (100% shameless kde shill)

brisk chasm
#

Kshameless KDE Kshill, Kplah

wraith urchin
#

Ok I might try the arch installer, but if I run into issues I'm blaming you @brisk chasm

tight torrent
#

i have cachyos on my laptop because i like the kde cachyos nord theme, can always revert to base arch if need be

tight torrent
brisk chasm
#

yeah

wraith urchin
#

wait it isn't a button?

bronze socket
#

of course not, it's arch

brisk chasm
#

its a little menu driven thing

wraith urchin
#

you aren't selling me on this

brisk chasm
#

it guides you through all the important bits

wraith urchin
#

Manjaro it is then

tight torrent
bronze socket
#

just wait another few years

tight torrent
brisk chasm
#

elementaryOS i would allow, but manjaro is dead for me

#

elementary comes with a grafickel installer too

#

and its main color is some sort of purple somehow which i like

bronze socket
#

I've heard of artix before, I think it's just arch made easier to use

#

never bothered to investigate it though

tight torrent
#

theres also endeavoros which ive heard good things about

broken fog
wraith urchin
#

no

#

I'm just saying any distro that doesn't have a GUI installer is bound to have a whole bunch of other shit I don't like

broken fog
#

fair, arch is not for people who value their time KEKW

wraith urchin
#

I like the way manjaro looks out of the box

#

The complaints about manjaro seem gpAkkoShrug

brisk chasm
#

artix is arch sans systemd, instead if uses openrc as the init system or whats it called, it also has its own repos, like manjaro

tight torrent
#

systemd is very good tho

broken fog
#

i'd stick to well known and supported distros for that reason

wraith urchin
#

I wish there wasn't this whole repo nonsense with linux, I wish I could just download shit from the developer's website like you do on windows gpAkkoShrug

#

instead you gotta trust someone is maintaining the packages

broken fog
#

you mean like package managers?

wraith urchin
#

Like on windows when I want a program I go to the developers website and I can just download an installer

#

but on linux theres all this extra bullshit

#

like oh, that version of the package isn't available on your distro

broken fog
#

on linux i just do yay thing and bam it's installed

#

that's the single reason arch is my favorite distro btw the official repos + aur has everything under the sun and it's all up to date

bronze socket
#

but who is behind making yay thing work

tight torrent
#

yay install openjdk-latest is something i had to do for my younger brother yesterday

wraith urchin
#

if it works

tight torrent
broken fog
brisk chasm
#

on windows a lot of shit can be installed via winget/chocolatey too, no manual msi bs where you download and run and click through 100 Next buttons of allah

bronze socket
#

maybe dev stuff

wraith urchin
#

I never use that chocolately stuff

true moon
#

I kind of like the 100 next buttons of allah

wraith urchin
#

I hate it

#

just give me an installer

bronze socket
#

I miss when they were called wizards

broken fog
#

idk i've always disliked installers tbh

brisk chasm
#

i always hated it

bronze socket
#

that was back when computing was cool

wraith urchin
#

Like I want a binary installer

true moon
#

My favorite is the classic installer wizard when there is a secondary window that takes up the whole screen with a fancy blue gradient background and then the regular installer wizard appears above that

wraith urchin
#

I miss those days

brisk chasm
#

i also have ptsd from building installers xD

true moon
#

I still have no idea what it means to even install a program lmao mine just run out of a folder

broken fog
# wraith urchin Like I want a binary installer

i hate not knowing what the hell the install is doing, windows installers will create three folders in different places in your filesystem, mess with the registry and do god knows what else

bronze socket
#

you install it by cramming that folder somewhere in appdata or program files

#

or both

true moon
#

there must be more to it than that though

#

I figure there's some registry BS or something going on

broken fog
#

i like the macos approach where stuff is packaged and self contained and you literally just copy it to applications folder

true moon
#

associating file extensions or whatever else

#

yeah

broken fog
#

want to uninstall? delete it

#

done

true moon
#

I don't necessarily like or dislike that but it's definitely different

wraith urchin
brisk chasm
#

i also have fond memories of having all my fav tools (TeraCopy, Getright, IrfanView et al) on some lan drive, and a .reg file to "install"

true moon
#

windows feels like it's inserting tendrils of chaos into your computer and if you just delete the folder in program files it's like leaving the head of the tick in your skin

bronze socket
#

I like that windows is standard/monolithic enough that you can do nontrivial stuff like that, imagine trying to associate a browser link with a program on linux

#

e.g. a default magnet:// program or something

brisk chasm
#

yeah, i mean, if you never did that on binbows before its as hard/trivial

bronze socket
#

I mean programs can ship that'll do that with certainty, try shipping a linux binary that can do that

brisk chasm
bronze socket
#

I remember when I was trying out matrix servers there was this rust one I was curious about because theoretically it would've been less resource intensive than synapse

brisk chasm
#

or graffical if you want

bronze socket
#

they claimed to have an ubuntu build but it was literally just a binary from their CI in one of their CI dump folders, and I had no fucking clue how to get it to work and they had no docs

#

but hey there was technically a static standalone binary

#

except it was server software so I would've needed to figure out how to configure the service for it from scratch, so fuck that

brisk chasm
#

i remember these standalone .exe files which were some standalone virtualized os thingy

#

it wasnt vmware and wasnt virtualbox, something enterprisey/commercial

tight torrent
#

hyper-v?

brisk chasm
#

a 500mb exe or so, you just run it, and inside oyu have 1 application running in another os

#

no

bronze socket
#

was it like proto-docker

brisk chasm
#

ja way before

#

mid/late 2000s

#

if not late 90s already

#

you could also "dockerize" whole applications with it, and stuff everything into that one .exe

bronze socket
#

neat, never heard of that

#

I remember like 10ish years ago it was cool and fancy tech to have seamless RDP for single applications, citrix type stuff

#

very commonplace now

brisk chasm
#

yeah xenapp/xendesktop

#

i hate it

#

luckily i dont have to use it much

echo crystal
#

freebsd merch is pretty funny hehe

brisk chasm
#

congratulations dodo 🙂

silk pier
#

oh wow, I forgot to scroll down for a while...

cloud rivet
broken fog
#

needing an uninstaller at all is fishy

#

ideally i should be able to just rm a directory and poof gone

bronze socket
#

how do you deal with the case of stuff you interact with centralized OS state for

#

like file extension association or registering services

broken fog
#

yeah, that's a fair point

#

at some point you're gonna have to register something with the os

bronze socket
#

I don't like that they're binaries though, if installers/uninstallers were transparently shell scripts you could at least deal with the majority of the crust

broken fog
#

ig at that point you'd want to make it minimal enough that the os can clean up after an uninstalled program

solid grove
#

also uninstallers have the opportunity to clear out caches and other junk that would be left behind if you just deleted the dir

#

though if you write your cache to the correct location the OS is supposed to clean it up for you

broken fog
#

like, if you have an associated extension to a program that's no longer there os just goes "well ig that's gone, let's just use the next one and get rid of this entry"

solid grove
#

eg users who uninstall bash and then wonder why nothing works anymore

broken fog
#

that's what we call a skill issue

#

uninstalling bash is like deleting random files in system32

#

if you're that dumb you do not deserve a working os

bronze socket
#

if you have a custom shell that can't even run compat for bash you should figure out how to edit your own installer scripts

#

because that's clearly the message you're sending

solid grove
#

idk, on linux every component is supposed to be replacable so I don't think the desire to uninstall bash is that unreasonable

bronze socket
#

yeah but in practice that's exactly why the user experience of linux is dogshit

solid grove
#

having a manifest system for programs to tell the OS where they write all their config and temp data would mean that an uninstaller wouldn't need to itself be an executable program

#

because it's not like the temp files location changes for a given program

brisk chasm
#

im always kind of amazed when i take a binary i cooked on arch box1 and let it run on some oeboentoe test vm and it just works out of ze box, or other way around

broken fog
#

store the config next to the binary, shrimple

solid grove
brisk chasm
#

XDG_BASE_DIRECTORY you mean 🙂

wraith urchin
#

Sorry about the thread Bjorn, we went a lil off topic

solid grove
#

esp if you got installed via a package manager

broken fog
#

hrm fair

solid grove
#

there is no excuse to dump your cache in my documents folder though

brisk chasm
#

mozilla fixed a 21 year old request recently, which was around ~/.mozilla on linux not adhering to XDG_BASE_DIRECTORY

broken fog
#

the only two sane options imo are either store it next to the binary and ensure the program has access to its own directory, or global (or user-wide) config dir

brisk chasm
#

yeah, in a multiuser environment having it all in the app dir is weird, but, if i am the only user, yes, lets go

#

btw next time we derail ravbugs fred

cloud rivet
#

I am not making a lot of progress this weekend just hanging out with my kid at the convention

true moon
#

what's the convention

silk pier
solid grove
true moon
#

I guess something in SF from his picture yesterday

#

I was working the first aid station at SJMADE on Friday

brisk chasm
#

San Jancisco

true moon
#

lol

solid grove
cloud rivet
silk pier
#

interesting.

solid grove
#

a lot of it is your typical suburban sprawl

#

SJ is also home to the nations worst light rail system froge_love

broken fog
#

that's better than most of the us

solid grove
#

I rode the VTA light rail once. should’ve walked instead

#

the plan originally was to build a circular system like in paris. but they only built a quarter of the circle

silk pier
#

In California you either drive or uber to places

every other option has severe downsides

solid grove
#

i've used SF Muni, caltrain, and bart and those have all been fine. but yeah everywhere else you're toast

silk pier
#

(and from)

cloud rivet
#

I live near Berkeley

silk pier
solid grove
#

i would take the bus to work but I'd have to connect halfway and the busses arrive within 2 minutes of each other. so if the first one is late then i'm stuck at that street corner for 30 minutes

#

not worth it

#

esp since my entire commute by car is 30 minutes froge_sad

cloud rivet
#

The transbay AC bus is a pretty fancy bus

#

Karl Urban is doing talk that’s cool

#

Cast from the Boyz

true moon
#

I think me and my partner were the only white people in the entire building though

#

About the demographics of SJ you'd expect

#

Pretty neat event

#

Cool that people line up like crazy for convention center stuff I guess nature is healing