Cogs.Core
ResolveResourceTask.cpp
1#include "ResolveResourceTask.h"
2
3#include "Rendering/IGraphicsDevice.h"
4#include "Rendering/IContext.h"
5#include "Rendering/ITextures.h"
6
7#include "Renderer/RenderTexture.h"
8#include "Platform/Instrumentation.h"
9
10void Cogs::Core::ResolveResourceTask::apply(RenderTaskContext * renderContext)
11{
12 RenderInstrumentationScope(renderContext->device->getImmediateContext(), SCOPE_RENDERING, "ResolveResourceTask::apply");
13
14 auto inputTexture = input.get(RenderResourceType::RenderTexture)->renderTexure;
15 auto outputTexture = output.get(RenderResourceType::RenderTexture)->renderTexure;
16
17 auto device = renderContext->device;
18 auto deviceContext = device->getImmediateContext();
19
20 if (!HandleIsValid(inputTexture->textureHandle)) return;
21
22 if (inputTexture->description.samples == 1) {
23 deviceContext->copyResource(outputTexture->textureHandle, inputTexture->textureHandle);
24 } else {
25 deviceContext->resolveResource(inputTexture->textureHandle, outputTexture->textureHandle);
26 }
27}
bool HandleIsValid(const ResourceHandle_t< T > &handle)
Check if the given resource is valid, that is not equal to NoHandle or InvalidHandle.