• Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

998 Good


About pcmaster

  • Rank

Personal Information

  • Industry Role
  • Interests
  1. DX11 WARP vs UAVs in PS

    Over the years and platforms this is far from the only bug that makes me wanna cry My UAV start slot is 1 (u1) indeed, but I do not have a missmatch there. As I said, it works fine with normal drivers and it works fine now with setting a dummy (big enough) RTV with WARP.
  2. DX11 WARP vs UAVs in PS

    Okay. Filling the first unused UAV slot doesn't help, however binding a fake RT to slot 0 does help. It's fine with WARP then. I want to cry for almost a whole day wasted figuring this out Thank you Microsoft
  3. DX11 WARP vs UAVs in PS

    Unfortunately I can't test it on Windows 10 I will try to give it a fake RT (and a fake u0 UAV) to see if I can fool it.
  4. DX11 WARP vs UAVs in PS

    To be even more specific, the DXBC goes like this: ps_5_0 dcl_globalFlags refactoringAllowed dcl_constantbuffer cb0[2], immediateIndexed dcl_sampler s0, mode_default dcl_resource_texture2darray (float,float,float,float) t0 dcl_uav_typed_texture2darray (float,float,float,float) u1 dcl_input_ps_siv v0.xy, position dcl_input_ps linear v1.xy dcl_output o0.xyzw dcl_temps 5 0: ftoi r0.xy, v0.xyxx // pixel XY ... 2: ftoi r0.zw, cb0[1].xxxx // array slice ... // sample the SRV 23: sample_indexable(texture2darray)(float,float,float,float) r2.xyzw, r1.xyzx, t0.xyzw, s0 .. // output (r0.xyz will be used as the address -- I hope) 26: store_uav_typed u1.xyzw, r0.xyzw, r2.xyzw // fake output 27: mov o0.xyzw, l(0, 0, 0, 0) 28: ret The only weird thing I can think of is that my UAV is u1 (not u0) and there are no RTVs, i.e. OMSetRenderTargetsAndUnorderedAccessViews(D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL, nullptr, nullptr, 0, 2, { null, myUAV }, nullptr); So maybe WARP doesn't like this?
  5. DX11 WARP vs UAVs in PS

    Well, bad news is that I made two RenderDoc captures, and the one made on the real driver renders fine and the one with WARP does not and I can clearly see the draw-calls in question not doing anything there
  6. Hi all, I have another "niche" architecture error On our building servers, we're using head-less machines on which we're running DX11 WARP in a console session, that is D3D_DRIVER_TYPE_WARP plus D3D_FEATURE_LEVEL_11_0. It's Windows 7 or Windows Server 2008 R2 with "Platform Update for Windows 7". Everything's been fine, it's running all kinds of complex rendering, compute shaders, UAVs, everything fine and even fast. The problem: Writes to a cubemap array specific slice and specific mipmap using PS+UAV seem to be dropped. Do note that with D3D_DRIVER_TYPE_HARDWARE it works correctly; I can reproduce the bug on any normal workstation (also Windows 7 x64) with D3D_DRIVER_TYPE_WARP. The shader in question is a simple average 4->1 mipmapping PS, which samples a source SRV texture and writes into a UAV like this: RWTexture2DArray<float4> array2d; array2d[int3(xy, arrayIdx)] = avg_float4_value; The output merger is set to do no RT writes, the only output is via that one UAV. Note again that with a normal HW driver (GeForce) it works right, but with WARP it doesn't. Any ideas how I could debug this, to be sure it's really WARP causing this? Do you think RenderDoc will capture also a WARP application (using their StartFrameCapture/EndFrameCapture API of course, since the there's no window nor swap chain)? EDIT: RenderDoc does make a capture even with WARP, wow Thanks!
  7. ID3D12PipelineState::GetCachedBlob might give you an idea about the size of a PSO. It is driver dependent and also NOT anyhow ABI compatible. Creating it isn't very cheap, the driver has to patch pixel shaders for the desired render target formats, create fetch shaders (or patch vertex shaders to account for the IA layout), etc.. This time is measurable and isn't negligible. Unless you suffer from lack of RAM badly, I'd keep them around from load time, if you already have the framework in place.
  8. Change career path to GameDev

    Hi there! The best thing you can do is to look for an open position near your area, given that there are some game companies around, get yourself invited for an interview, ask them all kinds of questions (about working hours, crunches, etc.) and decide if you really want to take it Also, how's your C++? Of course don't go blindly and prepare seriously, as for any job interview. I just wanted to say that the final decision is up to both you and the employer. And you'll learn how things go on the interview. Also, go meet indie developers in your area, if possible, some of them will know (or even be) full-time employees at studios, they'll tell you details of the daily developer's life. I work for a bigger studio in Central Europe, my salary is competitive (but you bet it's lower than classmates doing software for telecom or banks), I work 8 hours a day, colleagues are great, working premises are great, some perks are great, there are tons of ice-cream and I do (kinda) what I like So far I haven't decided to go away from GameDev (5 years). Also, do expect crunches around important milestones and releases, however, our company doesn't force anyone too much - it's more a synergic effect that everyone wants to pull the same rope for the same goal and finally finish it, when crunch happens. Crunch = usually free pizza and paid overtime. If they push too much, people might run away. Can't talk about other studios (not even in my city), I'm not exactly sure how they manage crunching. Before releasing our game in the autumn 2016, I spent several Saturdays and very few Sundays at work during the summer when we were finishing it, and I stayed later (~10 hours instead of 8) during working days when totally needed. It was exhausting but survivable, given it happens only once in a few years. Plus when anyone simply couldn't work extra (family issues, health issues), they simply didn't. Our company seems to obey all regulations. Other studios' experience may vary Does that help?
  9. Which Degree Should I Pursue?

    Select a programme with a strong foundation in data structures and algorithms, theoretic computer science, linear algebra and at least a few more semesters of mathematics, some basic digital circuits and microcontrollers, assembly languages, parallel algorithms, networking. Basic Newtonian physics, probability theory, statistics or relational databases aren't a mistake either. These will lay out some computer science minimum for you. Then you need to get into C++ (asap) and as many other languages as possible, gradually, so you aren't scared of anything. As for (advanced) computer graphics, that's a topic for masters, I believe. If you'll hear terms like rendering equation, BRDF, BVH, kDtree, path-tracing, Monte-Carlo, convex hull, ... that's what's going to be in a master's degree (not viable without the few semesters of mathematics). This is about what I got (2004) and it made me aware of all the different stuff I might have and you bet most of us have encountered to some degree. Over the years I also managed to forget most of the details... But I know where to look and what do the things "do". Regarding C++, DirectX, OpenGL, shading languages, assembly languages, networking, gameplay scripting, Unity, Unreal, Maya, 3dsmax etc, they showed us a lot in school but they'll never show you enough, they can't and it isn't their goal. Work at home, make (little bullshit) games at home, create a small app to help your mother sort books in her archive, make an app to count beers in the pub, clone asteroids, mario and tetris, write your own UDP chat application... WHATEVER is going to help you. I ended up doing engine/render in an AAA company and if you send us your resume and we see you graduated a computer science / software engineering programme, it's a big plus. Then if you show us that you made this small thing here and that funky thing there, it's going to sound even better. It's going to sound very good for an engine coder, for a gameplay coder you'll have to show even more of your own games, but the CS basics are going to be important as well. In either case and coding role, expect basic CS/algebra/C++ tests when applying to gaming companies, to filter out people without even minimal knowledge. Good luck! Off-topic: "Online" university sounds weird, maybe I'm old I think I'd miss shaking in the cold, dark and hundreds of years old hallways with a bunch of schoolmates before and after any harder exam... plus the exchange programmes (at least in EU) But I understand it's becoming an option nowadays.
  10. Spidi, an independent European developer, provided deep insights into the struggles and decisions he encountered while making his little cute and awesome game. I appreciate the breakdown of his marketing efforts, especially if you don't know anything about marketing games nowadays (as I don't). Although I don't play rouge-like, "I Am Overburdened" caught my eye and I congratulate Spidi for its release. Thank you for writing this inspiring blog-post, it'll surely help small indies!
  11. I'm starting to get panicky

    Reclan, there's plenty of online market places - just off the top of my head: Guru, Upwork, ... You can get paid to Paypal and wire it to a real bank from there. There's all kinds of online work on such portals, from programming to writing to human language translation. Never heard about any of them? Also, why that angry tone towards _Silence_? He meant well and maybe he DID overlook your bold highlight so what? It isn't descpicable to flip burgers when you start, also nobody is forcing you, so save that hatred for your future bosses and customers People here are trying to help each other (and you (and for free)).
  12. DX12 Can someone help a newbie?

    Your Vertex structure contains float3+float3+float4+float2, that's 44 bytes (if packed). You declare this on stack: Vertex v[31076]; That's 1367344 bytes or 1.3 MB. That's too much for a typical stack, which is 1 MB IIRC. Why don't you allocate a std::vector<Vector>, do a resize() on it, and load it into it? That'll solve it. You can access its data by ::data().
  13. Leaving a company at a critical moment

    I don't envy you your position but it's good that you're trying to do the right thing for everyone. I'd do what costin and rnlf_in_space suggested. Talk to both companies about a transitional period and try to take it. On a totally off-topic note, in many countries in Central Europe you wouldn't have such a problem, really, because the notice period is 2 months starting with the following calendar month, for both sides (i.e. 2-3 calendar months effectively, a longer one is negotiable, a shorter is illegal).
  14. DX12 DX12 Occlusion Queries

    Thank you for the article. It's very interesting, however in the engine (and rather types of games) I'm implementing DX12 into, we don't happen to be instancing that very much and that approach doesn't lower the CPU cost - the higher level still has to prepare the data for each draw, which isn't negligible. But the approach sounds very good for many applications.
  15. DX12 DX12 Occlusion Queries

    One last thought. By reading back the query results on CPU, I decide not to issue the draws already on CPU. Therefore I save the CPU time needed to prepare the constant buffers, descriptor tables, set other states, etc.. With GPU predication, I'd still have to prepare each draw, possibly in vain. This is all only valid for a "traditional" renderer without fancy on-GPU command list building.
  • Advertisement