Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Raytracing API rework, fence changes, utilities, advanced mapping #52

Merged
merged 67 commits into from
Oct 8, 2020

Conversation

jkunstwald
Copy link
Collaborator

@jkunstwald jkunstwald commented Oct 1, 2020

General

  • Reworked Raytracing API (breaking)
    • Added arg::raytracing_pipeline_state_desc to replace current arguments to PSO creation
    • Removed all occurences of wchar_t strings from the API, and most strings overall
    • Changed argument associations to only target either identifiable shaders or hitgroups
    • Removed data argument from TLAS creation
    • Removed uploadTopLevelInstances - added explicit buffer argument to cmd::update_top_level
    • Reworked cmd::dispatch_rays to support arbitrary shader table buffer locations
  • Changed GPU fence API to respect weak vulkan submit-order guarantees (breaking)
    • Removed standalone signalFenceGPU and waitFenceGPU
    • Add args to submit for 1) fences to wait on before, and 2) fences to signal afterwards
  • Added invalidation and flush range args to mapBuffer and unmapBuffer respectively
  • Added arg::graphics_pipeline_state_desc and arg::compute_pipeline_state_desc, and PSO creation overloads
  • Added additional swapchain VSync modes - synced on 2nd blank and unsynced (without allowing tearing)
  • Added format::none, simplifying some API and commands (breaking)
  • New functions in util.hh:
    • get_texture_size_bytes: compute the amount of bytes a texture will require on GPU
    • get_texture_pixel_byte_offset: compute the offset in bytes of a pixel in GPU texture data
    • unswizzle_bgra_texture_data: convert GPU-downloaded texture data in bgra format to rgba
    • get_hlsl_constant_buffer_offset: helper to compute offsets in constant buffer shader structs
    • helpers to interpret timestamp values
  • Added allocator support for all static internal memory
  • Added asserts about inconsistent shader views to both Backends
  • Moved shared internals to src/common, renamed some helpers, removed namespaces
  • Significantly optimized util::dump_hex

D3D12

  • Fixed shader table writes and RT PSO creation
  • Verify all shader table writes based on signatures
  • Verify GPU buffer accesses for CBV usage in draw/dispatch and shader table writes
  • Vastly improved fatal error messages (OS error descriptions, full DRED breadcrumb listing with enum-to-string)
  • Fixed several issues at shutdown, internal simplifications
  • Added warnings about issue Crash at shutdown with enabled GBV #50 including susceptibility check, added optional workaround
  • Added cmd::barrier_uav for UAV barriers (no Vulkan equivalent currently)
  • Enable PIX integration by default

Vulkan

  • Display SDK version at CMake config time and at backend launch


#include <emmintrin.h>

namespace phi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this public API of phi? is it used in some other lib as well?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moved to phi::util

@Philip-Trettner Philip-Trettner merged commit 7be132d into develop Oct 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants