Improve wider platform support
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
This commit is contained in:
parent
f8b3d1b2c3
commit
d77d3fc94b
|
@ -41,6 +41,12 @@ if(CMAKE_GENERATOR_PLATFORM STREQUAL "x64" OR CMAKE_EXE_LINKER_FLAGS STREQUAL "/
|
||||||
set(FSR2_PLATFORM_NAME x64)
|
set(FSR2_PLATFORM_NAME x64)
|
||||||
elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "Win32" OR CMAKE_EXE_LINKER_FLAGS STREQUAL "/machine:X86")
|
elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "Win32" OR CMAKE_EXE_LINKER_FLAGS STREQUAL "/machine:X86")
|
||||||
set(FSR2_PLATFORM_NAME x86)
|
set(FSR2_PLATFORM_NAME x86)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR)
|
||||||
|
set(FSR2_PLATFORM_NAME ${CMAKE_SYSTEM_PROCESSOR})
|
||||||
|
|
||||||
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
|
add_compile_definitions(FFX_GCC)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Unsupported target platform - only supporting x64 and Win32 currently")
|
message(FATAL_ERROR "Unsupported target platform - only supporting x64 and Win32 currently")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <algorithm> // for max used inside SPD CPU code.
|
#include <algorithm> // for max used inside SPD CPU code.
|
||||||
#include <cmath> // for fabs, abs, sinf, sqrt, etc.
|
#include <cmath> // for fabs, abs, sinf, sqrt, etc.
|
||||||
#include <string.h> // for memset
|
#include <string.h> // for memset
|
||||||
|
#include <wchar.h> // for wcscmp, wcscpy
|
||||||
#include <cfloat> // for FLT_EPSILON
|
#include <cfloat> // for FLT_EPSILON
|
||||||
#include "ffx_fsr2.h"
|
#include "ffx_fsr2.h"
|
||||||
#define FFX_CPU
|
#define FFX_CPU
|
||||||
|
@ -36,6 +37,10 @@
|
||||||
#pragma clang diagnostic ignored "-Wunused-variable"
|
#pragma clang diagnostic ignored "-Wunused-variable"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _countof
|
||||||
|
#define _countof(array) (sizeof(array) / sizeof(array[0]))
|
||||||
|
#endif
|
||||||
|
|
||||||
// max queued frames for descriptor management
|
// max queued frames for descriptor management
|
||||||
static const uint32_t FSR2_MAX_QUEUED_FRAMES = 16;
|
static const uint32_t FSR2_MAX_QUEUED_FRAMES = 16;
|
||||||
|
|
||||||
|
@ -484,13 +489,13 @@ static void scheduleDispatch(FfxFsr2Context_Private* context, const FfxFsr2Dispa
|
||||||
const uint32_t currentResourceId = pipeline->srvResourceBindings[currentShaderResourceViewIndex].resourceIdentifier;
|
const uint32_t currentResourceId = pipeline->srvResourceBindings[currentShaderResourceViewIndex].resourceIdentifier;
|
||||||
const FfxResourceInternal currentResource = context->srvResources[currentResourceId];
|
const FfxResourceInternal currentResource = context->srvResources[currentResourceId];
|
||||||
jobDescriptor.srvs[currentShaderResourceViewIndex] = currentResource;
|
jobDescriptor.srvs[currentShaderResourceViewIndex] = currentResource;
|
||||||
wcscpy_s(jobDescriptor.srvNames[currentShaderResourceViewIndex], pipeline->srvResourceBindings[currentShaderResourceViewIndex].name);
|
wcscpy(jobDescriptor.srvNames[currentShaderResourceViewIndex], pipeline->srvResourceBindings[currentShaderResourceViewIndex].name);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint32_t currentUnorderedAccessViewIndex = 0; currentUnorderedAccessViewIndex < pipeline->uavCount; ++currentUnorderedAccessViewIndex) {
|
for (uint32_t currentUnorderedAccessViewIndex = 0; currentUnorderedAccessViewIndex < pipeline->uavCount; ++currentUnorderedAccessViewIndex) {
|
||||||
|
|
||||||
const uint32_t currentResourceId = pipeline->uavResourceBindings[currentUnorderedAccessViewIndex].resourceIdentifier;
|
const uint32_t currentResourceId = pipeline->uavResourceBindings[currentUnorderedAccessViewIndex].resourceIdentifier;
|
||||||
wcscpy_s(jobDescriptor.uavNames[currentUnorderedAccessViewIndex], pipeline->uavResourceBindings[currentUnorderedAccessViewIndex].name);
|
wcscpy(jobDescriptor.uavNames[currentUnorderedAccessViewIndex], pipeline->uavResourceBindings[currentUnorderedAccessViewIndex].name);
|
||||||
|
|
||||||
if (currentResourceId >= FFX_FSR2_RESOURCE_IDENTIFIER_AUTO_EXPOSURE_MIPMAP_0 && currentResourceId <= FFX_FSR2_RESOURCE_IDENTIFIER_AUTO_EXPOSURE_MIPMAP_12)
|
if (currentResourceId >= FFX_FSR2_RESOURCE_IDENTIFIER_AUTO_EXPOSURE_MIPMAP_0 && currentResourceId <= FFX_FSR2_RESOURCE_IDENTIFIER_AUTO_EXPOSURE_MIPMAP_12)
|
||||||
{
|
{
|
||||||
|
@ -512,7 +517,7 @@ static void scheduleDispatch(FfxFsr2Context_Private* context, const FfxFsr2Dispa
|
||||||
jobDescriptor.pipeline = *pipeline;
|
jobDescriptor.pipeline = *pipeline;
|
||||||
|
|
||||||
for (uint32_t currentRootConstantIndex = 0; currentRootConstantIndex < pipeline->constCount; ++currentRootConstantIndex) {
|
for (uint32_t currentRootConstantIndex = 0; currentRootConstantIndex < pipeline->constCount; ++currentRootConstantIndex) {
|
||||||
wcscpy_s( jobDescriptor.cbNames[currentRootConstantIndex], pipeline->cbResourceBindings[currentRootConstantIndex].name);
|
wcscpy( jobDescriptor.cbNames[currentRootConstantIndex], pipeline->cbResourceBindings[currentRootConstantIndex].name);
|
||||||
jobDescriptor.cbs[currentRootConstantIndex] = globalFsr2ConstantBuffers[pipeline->cbResourceBindings[currentRootConstantIndex].resourceIdentifier];
|
jobDescriptor.cbs[currentRootConstantIndex] = globalFsr2ConstantBuffers[pipeline->cbResourceBindings[currentRootConstantIndex].resourceIdentifier];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1003,9 +1008,9 @@ FfxErrorCode ffxFsr2ContextGenerateReactiveMask(FfxFsr2Context* context, const F
|
||||||
contextPrivate->contextDescription.callbacks.fpRegisterResource(&contextPrivate->contextDescription.callbacks, ¶ms->colorOpaqueOnly, &jobDescriptor.srvs[0]);
|
contextPrivate->contextDescription.callbacks.fpRegisterResource(&contextPrivate->contextDescription.callbacks, ¶ms->colorOpaqueOnly, &jobDescriptor.srvs[0]);
|
||||||
contextPrivate->contextDescription.callbacks.fpRegisterResource(&contextPrivate->contextDescription.callbacks, ¶ms->colorPreUpscale, &jobDescriptor.srvs[1]);
|
contextPrivate->contextDescription.callbacks.fpRegisterResource(&contextPrivate->contextDescription.callbacks, ¶ms->colorPreUpscale, &jobDescriptor.srvs[1]);
|
||||||
contextPrivate->contextDescription.callbacks.fpRegisterResource(&contextPrivate->contextDescription.callbacks, ¶ms->outReactive, &jobDescriptor.uavs[0]);
|
contextPrivate->contextDescription.callbacks.fpRegisterResource(&contextPrivate->contextDescription.callbacks, ¶ms->outReactive, &jobDescriptor.uavs[0]);
|
||||||
wcscpy_s(jobDescriptor.srvNames[0], pipeline->srvResourceBindings[0].name);
|
wcscpy(jobDescriptor.srvNames[0], pipeline->srvResourceBindings[0].name);
|
||||||
wcscpy_s(jobDescriptor.srvNames[1], pipeline->srvResourceBindings[1].name);
|
wcscpy(jobDescriptor.srvNames[1], pipeline->srvResourceBindings[1].name);
|
||||||
wcscpy_s(jobDescriptor.uavNames[0], pipeline->uavResourceBindings[0].name);
|
wcscpy(jobDescriptor.uavNames[0], pipeline->uavResourceBindings[0].name);
|
||||||
|
|
||||||
jobDescriptor.dimensions[0] = dispatchSrcX;
|
jobDescriptor.dimensions[0] = dispatchSrcX;
|
||||||
jobDescriptor.dimensions[1] = dispatchSrcY;
|
jobDescriptor.dimensions[1] = dispatchSrcY;
|
||||||
|
@ -1020,7 +1025,7 @@ FfxErrorCode ffxFsr2ContextGenerateReactiveMask(FfxFsr2Context* context, const F
|
||||||
|
|
||||||
jobDescriptor.cbs[0].uint32Size = sizeof(constants);
|
jobDescriptor.cbs[0].uint32Size = sizeof(constants);
|
||||||
memcpy(&jobDescriptor.cbs[0].data, &constants, sizeof(constants));
|
memcpy(&jobDescriptor.cbs[0].data, &constants, sizeof(constants));
|
||||||
wcscpy_s(jobDescriptor.cbNames[0], pipeline->cbResourceBindings[0].name);
|
wcscpy(jobDescriptor.cbNames[0], pipeline->cbResourceBindings[0].name);
|
||||||
|
|
||||||
FfxGpuJobDescription dispatchJob = { FFX_GPU_JOB_COMPUTE };
|
FfxGpuJobDescription dispatchJob = { FFX_GPU_JOB_COMPUTE };
|
||||||
dispatchJob.computeJobDescriptor = jobDescriptor;
|
dispatchJob.computeJobDescriptor = jobDescriptor;
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#if defined (FFX_GCC)
|
#if defined (FFX_GCC)
|
||||||
/// FidelityFX exported functions
|
/// FidelityFX exported functions
|
||||||
|
|
Loading…
Reference in New Issue
Block a user