Renamed resourcering to resourceswapchain

This commit is contained in:
Olivier Prat 2018-02-21 15:43:19 +01:00
parent f53c2f41a5
commit 093a1491cd
10 changed files with 49 additions and 49 deletions

View file

@ -99,10 +99,10 @@ GLBackend::CommandCall GLBackend::_commandCalls[Batch::NUM_COMMANDS] =
(&::gpu::gl::GLBackend::do_setUniformBuffer), (&::gpu::gl::GLBackend::do_setUniformBuffer),
(&::gpu::gl::GLBackend::do_setResourceBuffer), (&::gpu::gl::GLBackend::do_setResourceBuffer),
(&::gpu::gl::GLBackend::do_setResourceTexture), (&::gpu::gl::GLBackend::do_setResourceTexture),
(&::gpu::gl::GLBackend::do_setResourceFramebufferRingTexture), (&::gpu::gl::GLBackend::do_setResourceFramebufferSwapChainTexture),
(&::gpu::gl::GLBackend::do_setFramebuffer), (&::gpu::gl::GLBackend::do_setFramebuffer),
(&::gpu::gl::GLBackend::do_setFramebufferRing), (&::gpu::gl::GLBackend::do_setFramebufferSwapChain),
(&::gpu::gl::GLBackend::do_clearFramebuffer), (&::gpu::gl::GLBackend::do_clearFramebuffer),
(&::gpu::gl::GLBackend::do_blit), (&::gpu::gl::GLBackend::do_blit),
(&::gpu::gl::GLBackend::do_generateTextureMips), (&::gpu::gl::GLBackend::do_generateTextureMips),

View file

@ -126,14 +126,14 @@ public:
// Resource Stage // Resource Stage
virtual void do_setResourceBuffer(const Batch& batch, size_t paramOffset) final; virtual void do_setResourceBuffer(const Batch& batch, size_t paramOffset) final;
virtual void do_setResourceTexture(const Batch& batch, size_t paramOffset) final; virtual void do_setResourceTexture(const Batch& batch, size_t paramOffset) final;
virtual void do_setResourceFramebufferRingTexture(const Batch& batch, size_t paramOffset) final; virtual void do_setResourceFramebufferSwapChainTexture(const Batch& batch, size_t paramOffset) final;
// Pipeline Stage // Pipeline Stage
virtual void do_setPipeline(const Batch& batch, size_t paramOffset) final; virtual void do_setPipeline(const Batch& batch, size_t paramOffset) final;
// Output stage // Output stage
virtual void do_setFramebuffer(const Batch& batch, size_t paramOffset) final; virtual void do_setFramebuffer(const Batch& batch, size_t paramOffset) final;
virtual void do_setFramebufferRing(const Batch& batch, size_t paramOffset) final; virtual void do_setFramebufferSwapChain(const Batch& batch, size_t paramOffset) final;
virtual void do_clearFramebuffer(const Batch& batch, size_t paramOffset) final; virtual void do_clearFramebuffer(const Batch& batch, size_t paramOffset) final;
virtual void do_blit(const Batch& batch, size_t paramOffset) = 0; virtual void do_blit(const Batch& batch, size_t paramOffset) = 0;

View file

@ -40,11 +40,11 @@ void GLBackend::do_setFramebuffer(const Batch& batch, size_t paramOffset) {
setFramebuffer(framebuffer); setFramebuffer(framebuffer);
} }
void GLBackend::do_setFramebufferRing(const Batch& batch, size_t paramOffset) { void GLBackend::do_setFramebufferSwapChain(const Batch& batch, size_t paramOffset) {
auto ringbuffer = batch._ringbuffers.get(batch._params[paramOffset]._uint); auto swapChain = batch._swapChains.get(batch._params[paramOffset]._uint);
if (ringbuffer) { if (swapChain) {
auto index = batch._params[paramOffset + 1]._uint; auto index = batch._params[paramOffset + 1]._uint;
FramebufferPointer framebuffer = static_cast<const FramebufferRing*>(ringbuffer.get())->get(index); FramebufferPointer framebuffer = static_cast<const FramebufferSwapChain*>(swapChain.get())->get(index);
setFramebuffer(framebuffer); setFramebuffer(framebuffer);
} }
} }
@ -61,7 +61,7 @@ void GLBackend::setFramebuffer(const FramebufferPointer& framebuffer) {
} }
void GLBackend::do_advance(const Batch& batch, size_t paramOffset) { void GLBackend::do_advance(const Batch& batch, size_t paramOffset) {
auto ringbuffer = batch._ringbuffers.get(batch._params[paramOffset]._uint); auto ringbuffer = batch._swapChains.get(batch._params[paramOffset]._uint);
if (ringbuffer) { if (ringbuffer) {
ringbuffer->advance(); ringbuffer->advance();
} }

View file

@ -256,22 +256,22 @@ void GLBackend::do_setResourceTexture(const Batch& batch, size_t paramOffset) {
setResourceTexture(slot, resourceTexture); setResourceTexture(slot, resourceTexture);
} }
void GLBackend::do_setResourceFramebufferRingTexture(const Batch& batch, size_t paramOffset) { void GLBackend::do_setResourceFramebufferSwapChainTexture(const Batch& batch, size_t paramOffset) {
GLuint slot = batch._params[paramOffset + 1]._uint; GLuint slot = batch._params[paramOffset + 1]._uint;
if (slot >= (GLuint)MAX_NUM_RESOURCE_TEXTURES) { if (slot >= (GLuint)MAX_NUM_RESOURCE_TEXTURES) {
qCDebug(gpugllogging) << "GLBackend::do_setResourceFramebufferRingTexture: Trying to set a resource Texture at slot #" << slot << " which doesn't exist. MaxNumResourceTextures = " << getMaxNumResourceTextures(); qCDebug(gpugllogging) << "GLBackend::do_setResourceFramebufferSwapChainTexture: Trying to set a resource Texture at slot #" << slot << " which doesn't exist. MaxNumResourceTextures = " << getMaxNumResourceTextures();
return; return;
} }
RingBufferPointer ringBuffer = batch._ringbuffers.get(batch._params[paramOffset + 0]._uint); SwapChainPointer swapChain = batch._swapChains.get(batch._params[paramOffset + 0]._uint);
if (!ringBuffer) { if (!swapChain) {
releaseResourceTexture(slot); releaseResourceTexture(slot);
return; return;
} }
auto index = batch._params[paramOffset + 2]._uint; auto index = batch._params[paramOffset + 2]._uint;
auto renderBufferSlot = batch._params[paramOffset + 3]._uint; auto renderBufferSlot = batch._params[paramOffset + 3]._uint;
FramebufferPointer resourceFramebuffer = static_cast<const FramebufferRing*>(ringBuffer.get())->get(index); FramebufferPointer resourceFramebuffer = static_cast<const FramebufferSwapChain*>(swapChain.get())->get(index);
TexturePointer resourceTexture = resourceFramebuffer->getRenderBuffer(renderBufferSlot); TexturePointer resourceTexture = resourceFramebuffer->getRenderBuffer(renderBufferSlot);
setResourceTexture(slot, resourceTexture); setResourceTexture(slot, resourceTexture);

View file

@ -73,7 +73,7 @@ Batch::Batch(const Batch& batch_) {
_transforms._items.swap(batch._transforms._items); _transforms._items.swap(batch._transforms._items);
_pipelines._items.swap(batch._pipelines._items); _pipelines._items.swap(batch._pipelines._items);
_framebuffers._items.swap(batch._framebuffers._items); _framebuffers._items.swap(batch._framebuffers._items);
_ringbuffers._items.swap(batch._ringbuffers._items); _swapChains._items.swap(batch._swapChains._items);
_drawCallInfos.swap(batch._drawCallInfos); _drawCallInfos.swap(batch._drawCallInfos);
_queries._items.swap(batch._queries._items); _queries._items.swap(batch._queries._items);
_lambdas._items.swap(batch._lambdas._items); _lambdas._items.swap(batch._lambdas._items);
@ -111,7 +111,7 @@ void Batch::clear() {
_transforms.clear(); _transforms.clear();
_pipelines.clear(); _pipelines.clear();
_framebuffers.clear(); _framebuffers.clear();
_ringbuffers.clear(); _swapChains.clear();
_objects.clear(); _objects.clear();
_drawCallInfos.clear(); _drawCallInfos.clear();
} }
@ -322,12 +322,12 @@ void Batch::setResourceTexture(uint32 slot, const TextureView& view) {
setResourceTexture(slot, view._texture); setResourceTexture(slot, view._texture);
} }
void Batch::setResourceFramebufferRingTexture(uint32 slot, const FramebufferRingPointer& framebuffer, unsigned int ringIndex, unsigned int renderBufferSlot) { void Batch::setResourceFramebufferSwapChainTexture(uint32 slot, const FramebufferSwapChainPointer& framebuffer, unsigned int swapChainIndex, unsigned int renderBufferSlot) {
ADD_COMMAND(setResourceFramebufferRingTexture); ADD_COMMAND(setResourceFramebufferSwapChainTexture);
_params.emplace_back(_ringbuffers.cache(framebuffer)); _params.emplace_back(_swapChains.cache(framebuffer));
_params.emplace_back(slot); _params.emplace_back(slot);
_params.emplace_back(ringIndex); _params.emplace_back(swapChainIndex);
_params.emplace_back(renderBufferSlot); _params.emplace_back(renderBufferSlot);
} }
@ -338,17 +338,17 @@ void Batch::setFramebuffer(const FramebufferPointer& framebuffer) {
} }
void Batch::setFramebufferRing(const FramebufferRingPointer& framebuffer, unsigned int ringIndex) { void Batch::setFramebufferSwapChain(const FramebufferSwapChainPointer& framebuffer, unsigned int swapChainIndex) {
ADD_COMMAND(setFramebufferRing); ADD_COMMAND(setFramebufferSwapChain);
_params.emplace_back(_ringbuffers.cache(framebuffer)); _params.emplace_back(_swapChains.cache(framebuffer));
_params.emplace_back(ringIndex); _params.emplace_back(swapChainIndex);
} }
void Batch::advance(const RingBufferPointer& ringbuffer) { void Batch::advance(const SwapChainPointer& swapChain) {
ADD_COMMAND(advance); ADD_COMMAND(advance);
_params.emplace_back(_ringbuffers.cache(ringbuffer)); _params.emplace_back(_swapChains.cache(swapChain));
} }
void Batch::clearFramebuffer(Framebuffer::Masks targets, const Vec4& color, float depth, int stencil, bool enableScissor) { void Batch::clearFramebuffer(Framebuffer::Masks targets, const Vec4& color, float depth, int stencil, bool enableScissor) {

View file

@ -187,13 +187,13 @@ public:
void setResourceTexture(uint32 slot, const TexturePointer& texture); void setResourceTexture(uint32 slot, const TexturePointer& texture);
void setResourceTexture(uint32 slot, const TextureView& view); // not a command, just a shortcut from a TextureView void setResourceTexture(uint32 slot, const TextureView& view); // not a command, just a shortcut from a TextureView
void setResourceFramebufferRingTexture(uint32 slot, const FramebufferRingPointer& framebuffer, unsigned int ringIndex, unsigned int renderBufferSlot = 0U); // not a command, just a shortcut from a TextureView void setResourceFramebufferSwapChainTexture(uint32 slot, const FramebufferSwapChainPointer& framebuffer, unsigned int swpaChainIndex, unsigned int renderBufferSlot = 0U); // not a command, just a shortcut from a TextureView
// Ouput Stage // Ouput Stage
void setFramebuffer(const FramebufferPointer& framebuffer); void setFramebuffer(const FramebufferPointer& framebuffer);
void setFramebufferRing(const FramebufferRingPointer& framebuffer, unsigned int ringIndex); void setFramebufferSwapChain(const FramebufferSwapChainPointer& framebuffer, unsigned int swapChainIndex);
void advance(const RingBufferPointer& ringbuffer); void advance(const SwapChainPointer& swapChain);
// Clear framebuffer layers // Clear framebuffer layers
// Targets can be any of the render buffers contained in the currnetly bound Framebuffer // Targets can be any of the render buffers contained in the currnetly bound Framebuffer
@ -302,10 +302,10 @@ public:
COMMAND_setUniformBuffer, COMMAND_setUniformBuffer,
COMMAND_setResourceBuffer, COMMAND_setResourceBuffer,
COMMAND_setResourceTexture, COMMAND_setResourceTexture,
COMMAND_setResourceFramebufferRingTexture, COMMAND_setResourceFramebufferSwapChainTexture,
COMMAND_setFramebuffer, COMMAND_setFramebuffer,
COMMAND_setFramebufferRing, COMMAND_setFramebufferSwapChain,
COMMAND_clearFramebuffer, COMMAND_clearFramebuffer,
COMMAND_blit, COMMAND_blit,
COMMAND_generateTextureMips, COMMAND_generateTextureMips,
@ -428,7 +428,7 @@ public:
typedef Cache<Transform>::Vector TransformCaches; typedef Cache<Transform>::Vector TransformCaches;
typedef Cache<PipelinePointer>::Vector PipelineCaches; typedef Cache<PipelinePointer>::Vector PipelineCaches;
typedef Cache<FramebufferPointer>::Vector FramebufferCaches; typedef Cache<FramebufferPointer>::Vector FramebufferCaches;
typedef Cache<RingBufferPointer>::Vector RingBufferCaches; typedef Cache<SwapChainPointer>::Vector SwapChainCaches;
typedef Cache<QueryPointer>::Vector QueryCaches; typedef Cache<QueryPointer>::Vector QueryCaches;
typedef Cache<std::string>::Vector StringCaches; typedef Cache<std::string>::Vector StringCaches;
typedef Cache<std::function<void()>>::Vector LambdaCache; typedef Cache<std::function<void()>>::Vector LambdaCache;
@ -483,7 +483,7 @@ public:
TransformCaches _transforms; TransformCaches _transforms;
PipelineCaches _pipelines; PipelineCaches _pipelines;
FramebufferCaches _framebuffers; FramebufferCaches _framebuffers;
RingBufferCaches _ringbuffers; SwapChainCaches _swapChains;
QueryCaches _queries; QueryCaches _queries;
LambdaCache _lambdas; LambdaCache _lambdas;
StringCaches _profileRanges; StringCaches _profileRanges;

View file

@ -12,7 +12,7 @@
#define hifi_gpu_Framebuffer_h #define hifi_gpu_Framebuffer_h
#include "Texture.h" #include "Texture.h"
#include "ResourceRing.h" #include "ResourceSwapChain.h"
#include <memory> #include <memory>
class Transform; // Texcood transform util class Transform; // Texcood transform util
@ -178,8 +178,8 @@ protected:
Framebuffer() {} Framebuffer() {}
}; };
typedef std::shared_ptr<Framebuffer> FramebufferPointer; typedef std::shared_ptr<Framebuffer> FramebufferPointer;
typedef ResourceRing<Framebuffer> FramebufferRing; typedef ResourceSwapChain<Framebuffer> FramebufferSwapChain;
typedef std::shared_ptr<FramebufferRing> FramebufferRingPointer; typedef std::shared_ptr<FramebufferSwapChain> FramebufferSwapChainPointer;
} }

View file

@ -5,18 +5,18 @@
// Distributed under the Apache License, Version 2.0. // Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// //
#ifndef hifi_gpu_ResourceRing_h #ifndef hifi_gpu_ResourceSwapChain_h
#define hifi_gpu_ResourceRing_h #define hifi_gpu_ResourceSwapChain_h
#include <memory> #include <memory>
#include <array> #include <array>
namespace gpu { namespace gpu {
class RingBuffer { class SwapChain {
public: public:
RingBuffer(unsigned int size = 2U) : _size{ size } {} SwapChain(unsigned int size = 2U) : _size{ size } {}
virtual ~RingBuffer() {} virtual ~SwapChain() {}
void advance() { void advance() {
_frontIndex = (_frontIndex + 1) % _size; _frontIndex = (_frontIndex + 1) % _size;
@ -29,10 +29,10 @@ namespace gpu {
unsigned int _frontIndex{ 0U }; unsigned int _frontIndex{ 0U };
}; };
typedef std::shared_ptr<RingBuffer> RingBufferPointer; typedef std::shared_ptr<SwapChain> SwapChainPointer;
template <class R> template <class R>
class ResourceRing : public RingBuffer { class ResourceSwapChain : public SwapChain {
public: public:
enum { enum {
@ -42,7 +42,7 @@ namespace gpu {
using Type = R; using Type = R;
using TypePointer = std::shared_ptr<R>; using TypePointer = std::shared_ptr<R>;
ResourceRing(unsigned int size = 2U) : RingBuffer{ size } {} ResourceSwapChain(unsigned int size = 2U) : SwapChain{ size } {}
void reset() { void reset() {
for (auto& ptr : _resources) { for (auto& ptr : _resources) {

View file

@ -188,7 +188,7 @@ const int AntialiasingPass_NextMapSlot = 4;
Antialiasing::Antialiasing() { Antialiasing::Antialiasing() {
_antialiasingBuffers = std::make_shared<gpu::FramebufferRing>(2U); _antialiasingBuffers = std::make_shared<gpu::FramebufferSwapChain>(2U);
} }
Antialiasing::~Antialiasing() { Antialiasing::~Antialiasing() {
@ -343,7 +343,7 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const
// TAA step // TAA step
getAntialiasingPipeline(); getAntialiasingPipeline();
batch.setResourceFramebufferRingTexture(AntialiasingPass_HistoryMapSlot, _antialiasingBuffers, 0); batch.setResourceFramebufferSwapChainTexture(AntialiasingPass_HistoryMapSlot, _antialiasingBuffers, 0);
batch.setResourceTexture(AntialiasingPass_SourceMapSlot, sourceBuffer->getRenderBuffer(0)); batch.setResourceTexture(AntialiasingPass_SourceMapSlot, sourceBuffer->getRenderBuffer(0));
batch.setResourceTexture(AntialiasingPass_VelocityMapSlot, velocityBuffer->getVelocityTexture()); batch.setResourceTexture(AntialiasingPass_VelocityMapSlot, velocityBuffer->getVelocityTexture());
batch.setResourceTexture(AntialiasingPass_DepthMapSlot, linearDepthBuffer->getLinearDepthTexture()); batch.setResourceTexture(AntialiasingPass_DepthMapSlot, linearDepthBuffer->getLinearDepthTexture());
@ -351,7 +351,7 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const
batch.setUniformBuffer(AntialiasingPass_ParamsSlot, _params); batch.setUniformBuffer(AntialiasingPass_ParamsSlot, _params);
batch.setUniformBuffer(AntialiasingPass_FrameTransformSlot, deferredFrameTransform->getFrameTransformBuffer()); batch.setUniformBuffer(AntialiasingPass_FrameTransformSlot, deferredFrameTransform->getFrameTransformBuffer());
batch.setFramebufferRing(_antialiasingBuffers, 1); batch.setFramebufferSwapChain(_antialiasingBuffers, 1);
batch.setPipeline(getAntialiasingPipeline()); batch.setPipeline(getAntialiasingPipeline());
batch.draw(gpu::TRIANGLE_STRIP, 4); batch.draw(gpu::TRIANGLE_STRIP, 4);
@ -364,7 +364,7 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const
} else { } else {
batch.setPipeline(getBlendPipeline()); batch.setPipeline(getBlendPipeline());
} }
batch.setResourceFramebufferRingTexture(AntialiasingPass_NextMapSlot, _antialiasingBuffers, 1); batch.setResourceFramebufferSwapChainTexture(AntialiasingPass_NextMapSlot, _antialiasingBuffers, 1);
batch.draw(gpu::TRIANGLE_STRIP, 4); batch.draw(gpu::TRIANGLE_STRIP, 4);
batch.advance(_antialiasingBuffers); batch.advance(_antialiasingBuffers);

View file

@ -191,7 +191,7 @@ private:
// Uniforms for AA // Uniforms for AA
gpu::int32 _texcoordOffsetLoc; gpu::int32 _texcoordOffsetLoc;
gpu::FramebufferRingPointer _antialiasingBuffers; gpu::FramebufferSwapChainPointer _antialiasingBuffers;
gpu::TexturePointer _antialiasingTextures[2]; gpu::TexturePointer _antialiasingTextures[2];
gpu::PipelinePointer _antialiasingPipeline; gpu::PipelinePointer _antialiasingPipeline;