Commit Graph

1046 Commits

Author SHA1 Message Date
charles bloom
b066d4c0b3 TextureRenderTarget clean up Create/Update not supporting all formats
use generic routines so all-format support is automatic
#rb fabian.giesen

[CL 30070416 by charles bloom in ue5-main branch]
2023-12-03 10:39:38 -05:00
christopher waters
2d9fd8b52f Removing unnecessary includes of ShaderCompiler.h. Also removing a few other unnecessary includes.
[CL 30045008 by christopher waters in ue5-main branch]
2023-12-01 12:35:29 -05:00
christopher waters
52e8fb4092 Refactoring D3D11 binding to not go through Context methods.
- Writing custom version of UE::RHICore::ApplyStaticUniformBuffers, UE::RHICore::RHISetShaderParametersShared, and UE::RHICore::RHISetShaderUnbindsShared for D3D11RHI to avoid redundant overhead.
- This removed the last uses of RHISetShaderTexture, RHISetShaderSampler, RHISetUAVParameter, RHISetShaderResourceViewParameter, and RHISetShaderParameter from D3D11RHI. Those functions are now gone.

[CL 30022429 by christopher waters in ue5-main branch]
2023-11-30 15:28:22 -05:00
marc audy
a66de8e79d Ongoing C4702 warning fixes
[CL 30003628 by marc audy in ue5-main branch]
2023-11-29 19:16:19 -05:00
benjamin rouveyrol
46a8fa88f8 remove device id check for HDR on windows:
* d3d12 / d3d11-editor are already using DXGI to check whether HDR is supported on the display.
* d3d11-cooked still relies on vendor extensions, but we propagate the information from FD3D11DynamicRHI::SetupDisplayHDRMetaData to GRHISupportsHDROutput. Because of that, we don't even call ChooseHDRDeviceAndColorGamut on vendors we do not support
Remove unnecessary check in EnsureColorSpace: it's valid to call CheckColorSpaceSupport with SDR
fix d3d11-cooked backbuffer format: both vendor extensions expect FP16 ScRGB, not HDR10 format

#rb eric.renaudhoude, mihnea.balta
#jira UE-200383 UE-168203

[CL 29955969 by benjamin rouveyrol in ue5-main branch]
2023-11-28 03:39:43 -05:00
marc audy
bf0ba2c08e Fix C4702
#rb ryan.mangin
#rnx

[CL 29866863 by marc audy in ue5-main branch]
2023-11-21 11:28:56 -05:00
christopher waters
e67e3156f6 D3D12 Bindless Descriptor Updates
- Descriptor updates are queued on the D3D12 context
- Split descriptor management type into a deferred, per-pipeline manager for Resources and a simple one for Samplers.
- Initial descriptor update flushing implementations are still WIP, CPU side heap copying/switching is up next.
- Added ability for platforms to provide custom descriptor update functions.
- Moved common code from Dispatch/Draw commands into common functions: SetupDispatch, SetupIndirectArgument, SetupDraw, SetupDispatchDraw and PostGpuEvent.

#jira UE-162017
#rb zach.bethel, jeannoe.morissette

[CL 29418682 by christopher waters in ue5-main branch]
2023-11-03 15:53:43 -04:00
zach harris
3a5af8510c Fixing the -Prefer<IHV> functionality for DirectX when selecting which graphics adapter to use and cleaning up DX11 adapter selection code to more closely match our DX12 implementation.
#rb daniele.vettorel

[CL 29191160 by zach harris in ue5-main branch]
2023-10-27 14:40:36 -04:00
mihnea balta
c09ff36c64 Deprecate DrawIndexedIndirect, since it's just a more confusing version of DrawIndexedPrimitiveIndirect.
Also, while we still have it, make sure it behaves consistently across all RHIs. D3D11 used to assert that NumInstances is above 1, even though it's not using it, and a few other RHIs inherited that behavior. Vulkan was actually using NumInstances as the number of indirect draws to perform, which would have crashed if the data was set up as D3D11 wanted it.

#rb christopher.waters

[CL 28912567 by mihnea balta in ue5-main branch]
2023-10-19 06:29:04 -04:00
jonathan bard
ddf6dd3934 Refactored render target to texture conversion so that it can be done on any UTextureRenderTarget / UTexture type :
* Added BP functions to create all types of UTexture from their UTextureRenderTarget counterpart (except UTextureRenderTargetCubeArray, since we don't have much of anything available to produce these ATM, but there's no reason it shouldn't work)
* Fixed crash when trying to create a UTexture out of a UTextureRenderTarget with a non-supported format. The error is also appropriately reported to the user via blueprint message log, instead of a message box in the past

Misc:
* UTextureRenderTarget have to implement CanConvertToTexture to indicate if they are currently able to be converted to a texture (e.g. valid size, supported format, etc.)
* There's now a generic UpdateTexture and ConstructTexture function on UTextureRenderTarget that can be used to update an existing texture or create a new one
* D3D11 and D3D12's RHIReadSurfaceData now support reading from (cube) texture arrays
* Added R8G8 to FColor conversion (the missing .BA channels are filled with 0 and 255, respectively)
* Deprecated all redundant ReadPixels / ReadFloat16Pixels from child classes of FRenderTarget (FTextureResource, FTextureRenderTargetVolumeResource, FTextureRenderTarget2DArrayResource). Note that ReadPixels / ReadFloat16Pixels / ReadLinearColorPixels are now virtual to avoid this situation and yet allow FTextureRenderTargetVolumeResource to implement them in its own way (unlike all other implementations, it uses Read3DSurfaceFloatData internally)
* Fixed typo in FTextureRenderTargetVolumeResource::GetDisplayGamma(), which didn't take PF_R32_FORMAT into account
* Added FTextureSourceFormatInfo and GTextureSourceFormats, which provides information about the various supported formats in ETextureSourceFormat (similar to EPixelFormat and GPixelFormats)

#jira UE-194364
#rb jon.cain
#tests editor

[CL 28494190 by jonathan bard in ue5-main branch]
2023-10-05 08:12:26 -04:00
zach bethel
5be1ae901a Fix crash in D3D11 when FMaterialRenderProxy::UpdateDeferredCachedUniformExpressions is using a non-immediate command list.
#rb mihnea.balta
#rnx

[CL 28283518 by zach bethel in ue5-main branch]
2023-09-27 14:17:10 -04:00
zach bethel
e7fdf09eb9 Fixed various RHI's to only clear targets with clear actions rather than all targets when any clear action is specified.
#jira UE-195766

[CL 28206288 by zach bethel in ue5-main branch]
2023-09-25 17:20:21 -04:00
zach bethel
0f40a4d17f Fixed RHIBindDebugLabelName to take a command list.
#jira UE-195436

[CL 27966365 by zach bethel in ue5-main branch]
2023-09-18 13:51:58 -04:00
christopher waters
3cc28e6db6 Removing individual parameter binding methods from IRHI*Context now that everything uses batched shader parameters
- RHISetShaderTexture, RHISetShaderSampler, RHISetUAVParameter, RHISetShaderResourceViewParameter, RHISetShaderUniformBuffer, RHISetShaderParameter
- Only removing from the interface, each RHI still uses them in conjunction with UE::RHICore::RHISetShaderParametersShared, which uses the RHI type and not the interface.
- These methods are not part of the "public" interface so no deprecation is needed.

#rb luke.thatcher

[CL 27605633 by christopher waters in ue5-main branch]
2023-09-05 14:29:04 -04:00
christopher waters
ae3bd2b8da Don't add unbind commands if the RHI doesn't do anything with them.
- Discovered that a number of RHISetShaderResourceViewParameter and RHISetUAVParameter implementations do nothing with null resources, meaning that RHISetShaderUnbinds calls end up doing zero work with all the overhead.
- Adding GRHIGlobals::NeedsShaderUnbinds for RHIs to signal they need/handle unbind commands.
- RHIs that actually do work with RHISetShaderUnbinds now set NeedsShaderUnbinds on startup.
- Removed RHISetShaderUnbinds implementations that did zero work.

#rb luke.thatcher

[CL 27554898 by christopher waters in ue5-main branch]
2023-09-01 10:28:05 -04:00
christopher waters
2ccaffb472 RHITransferBufferUnderlyingResource and RHITransferRayTracingGeometryUnderlyingResource need to be given a command list for future rename support.
#jira UE-162016
#rb jeannoe.morissette

[CL 27101943 by christopher waters in ue5-main branch]
2023-08-15 10:12:23 -04:00
zach bethel
8f41b4b6c0 Moved RHICreateTexture to support non-immediate command lists.
#jira none

[CL 27029875 by zach bethel in ue5-main branch]
2023-08-11 11:27:36 -04:00
christopher waters
b7881548a3 RHIUpdateTexture2D Fixes
- Fixing implementations to handle source offsets.
- Fixing implementations to handle source data smaller than the image's pitch (very small regions).
- Fixing implementations to handle RHI bypass correctly.

#rb Dmitriy.Dyomin, Florin.Pascu, Jeannoe.Morissette, Luke.Thatcher, Mihnea.Balta

[CL 26920943 by christopher waters in ue5-main branch]
2023-08-08 12:57:59 -04:00
david harvey
bdb4199eeb Remove unnecessary WindowsHWrapper.h & MinWindows.h include - both files will be automatically included by AllowWindowsPlatformTypes.h
#jira UE-152863
#rnx
#rb Josh.Adams

[CL 26912096 by david harvey in ue5-main branch]
2023-08-08 05:50:53 -04:00
mihnea balta
d5454e36b4 Deprecate IDXGISwapchainProvider::GetName and replace it with GetProviderName, because due to an unfortunate overshight, the previous method returned a TCHAR* instead of a const TCHAR*.
#rb trivial

[CL 26807006 by mihnea balta in ue5-main branch]
2023-08-03 08:31:33 -04:00
bryan sefcik
64f140d78d Added shader.build.cs file.
Updated build.cs files to use new shader module.

#jira
#rb Joe.Kirchoff and guillaume.abadie

[CL 26664107 by bryan sefcik in ue5-main branch]
2023-07-27 22:53:25 -04:00
juan portillo
dc54558e4b Fix issue with XAudio2 dll expecting ref count to increment when GetDllHandle not doing so if the dll is already loaded
#rb Brian.Chrisman

[CL 26511091 by juan portillo in ue5-main branch]
2023-07-21 10:34:06 -04:00
christopher waters
e908b9544b Working on making Texture and Buffer memory accounting consistent
- Renaming GRHIGlobals.CurrentTextureMemorySize to GRHIGlobals.StreamingTextureMemorySizeInKB
- Renaming GRHIGlobals.CurrentRendertargetMemorySize to GRHIGlobals.NonStreamingTextureMemorySizeInKB
- Adding GRHIGlobals.BufferMemorySize and GRHIGlobals.UniformBufferMemorySize
- Deduplicating RHI stat accounting code and changing it to use RHI Descs.
- UE::RHICore::UpdateGlobalTextureStats is for StreamingTextureMemorySizeInKB and NonStreamingTextureMemorySizeInKB. This still allows platforms to control where the memory is counted.
- Adding more Buffer RHI stat accounting code to RHIs that were missing it.
- UE::RHICore::UpdateGlobalBufferStats is for BufferMemorySize and UniformBufferMemorySize.
- FillBaselineTextureMemoryStats initializes and fills the common members of FTextureMemoryStats.
- Adding ETextureCreateFlags::ForceIntoNonStreamingMemoryTracking which will force the texture to be counted in NonStreamingTextureMemorySizeInKB.
- Changing all RenderTargetPool textures to be flagged with ETextureCreateFlags::ForceIntoNonStreamingMemoryTracking so they aren't counted against streaming budgets.
- Adding UAV Texture stats instead of lumping them with regular textures
- Adding Buffer stats for ByteAddressBuffer, DrawIndirect and Misc

#jira UE-188415
#rb mihnea.balta, zach.bethel

[CL 26158360 by christopher waters in ue5-main branch]
2023-06-21 15:19:41 -04:00
zach bethel
a7a9029b20 Deprecated InitRHI() in favor of InitRHI(FRHICommandListBase&).
#rb mihnea.balta, luke.thatcher, christopher.waters

[CL 26097009 by zach bethel in ue5-main branch]
2023-06-19 13:56:56 -04:00
henrik karlsson
5db685f97d [Engine]
* Moved dllexport from type to methods/staticvar in all Engine runtime code. This improves compile times, memory and performance in dll builds

[CL 26082269 by henrik karlsson in ue5-main branch]
2023-06-17 18:13:06 -04:00