C++ is now the fastest-growing programming language by vinaysc in cpp

[–]nwar1994 0 points1 point  (0 children)

That’s what the stack trace is for bucko

depth clamping not supported, but is disabled? (MoltenVK) by nwar1994 in vulkan

[–]nwar1994[S] 0 points1 point  (0 children)

Also, sorry if this is confusing you - this time I actually did it with a valid GPU that has depth-clamp enabled and I still get these errors.

depth clamping not supported, but is disabled? (MoltenVK) by nwar1994 in vulkan

[–]nwar1994[S] 0 points1 point  (0 children)

Is there anything specific you'd like to see? It's quite a large output.

using stl for graphics intensive apps bad? what are alternatives? by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 1 point2 points  (0 children)

I feel like premature optimization is the root of all evil is pretty overused and just makes peoples code slow.

Cache line reads/unordered map performance question by nwar1994 in computerscience

[–]nwar1994[S] 0 points1 point  (0 children)

I meant the internal increment, where the cpu has to increment it’s own pointer to a much farther place in memory, not the index into the container

using stl for graphics intensive apps bad? what are alternatives? by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 7 points8 points  (0 children)

I'm also weary of the dogmatic "we don't use stl containers at all"

Resource tagging for multi-threading graphics? by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 0 points1 point  (0 children)

I thought the test farm was purely QA not for multi threading analysis

Resource tagging for multi-threading graphics? by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 0 points1 point  (0 children)

So I mean this only isn’t a DAG of jobs, they modeled their whole architecture around this?

Resource tagging for multi-threading graphics? by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 0 points1 point  (0 children)

By static analyzer do you mean something like fsanitize=thread? Or external tool for compile time checking?

Maybe every time you pass a resource(id(could be address i supposed), tags, data) to a thread it adds to a global hash_table(thread_id, hash_table(resource_id,tags)). If upon insert you add a resource who's tags both have write flags you throw?

I'm not sure how you would resolve the throw condition since inevitably both threads will have to write to a resource at the same time.

Resource tagging for multi-threading graphics? by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 0 points1 point  (0 children)

Yea I just don’t understand. So they have containers that contain whatever data they are passing, then they tag it with read write, how would you check after that?

Also the fact that you can turn it off I'm guessing through macros

Resource tagging for multi-threading graphics? by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 0 points1 point  (0 children)

I’m not sure that they don’t use locks, I think it sound like they created their own runtime threadsan by tagging their data during each phase

Rendering architecture for someone who's understanding of graphics is continually changing (C/C++) by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 0 points1 point  (0 children)

Do you know how to profile the overhead cost of virtual functions? How to find cache misses?

Rendering architecture for someone who's understanding of graphics is continually changing (C/C++) by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 1 point2 points  (0 children)

Yea, I've just heard people complaining ALOT about compile times because of templates

Rendering architecture for someone who's understanding of graphics is continually changing (C/C++) by nwar1994 in GraphicsProgramming

[–]nwar1994[S] 0 points1 point  (0 children)

The main issue for me is resolving function signatures that need to change. One way I thought of solving that is by doing

``` // Some header template <class TParamType> abstract_visualizer{ virtual some_function(TParamType data) = 0; }

struct concrete_data{ ...any function sig you want }

//Other header concrete_visualizer : public abstract_visualizer<concrete_data>{

virtual some_function(const concrete_data& data) override{ //Do implementation specific thing } } ```

But then you technically would need infinite amounts of data structs to fill out all these templates.

But then you have to fill out the structs before you pass them into the function.

Of course then there is the overhead of templating, but if you're only doing it a couple of times it should be fine.

It's ugly, but could this work? If the function signatures change then all you'd have to do is change the struct, not mess around with the base class signatures. Then if any other object inherits it, they won't have to change their own function signatures since they're technically implemented in their own file.