summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineOpenGL
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-12-02 17:39:49 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-12-02 17:39:49 +0000
commit466dff5b223bd3f4af7963fec546ff179a745556 (patch)
treebfb10a46716aec66eb38e67574718c4c230d419c /Graphics/GraphicsEngineOpenGL
parentAdded explicit state transition control flags to CLEAR_DEPTH_STENCIL_FLAGS (diff)
downloadDiligentCore-466dff5b223bd3f4af7963fec546ff179a745556.tar.gz
DiligentCore-466dff5b223bd3f4af7963fec546ff179a745556.zip
Added explicit state transition control to UpdateBuffer and UpdateTexture commands
Diffstat (limited to 'Graphics/GraphicsEngineOpenGL')
-rw-r--r--Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.h20
-rw-r--r--Graphics/GraphicsEngineOpenGL/include/TextureBaseGL.h1
-rw-r--r--Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp18
3 files changed, 30 insertions, 9 deletions
diff --git a/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.h
index a2a1f0be..3cd10b90 100644
--- a/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.h
+++ b/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.h
@@ -29,17 +29,17 @@
#include "GLContextState.h"
#include "GLObjectWrapper.h"
#include "BufferGLImpl.h"
-#include "TextureViewGLImpl.h"
+#include "TextureBaseGL.h"
#include "PipelineStateGLImpl.h"
namespace Diligent
{
/// Implementation of the Diligent::IDeviceContextGL interface
-class DeviceContextGLImpl final : public DeviceContextBase<IDeviceContextGL, BufferGLImpl, TextureViewGLImpl, PipelineStateGLImpl>
+class DeviceContextGLImpl final : public DeviceContextBase<IDeviceContextGL, BufferGLImpl, TextureBaseGL, PipelineStateGLImpl>
{
public:
- using TDeviceContextBase = DeviceContextBase<IDeviceContextGL, BufferGLImpl, TextureViewGLImpl, PipelineStateGLImpl>;
+ using TDeviceContextBase = DeviceContextBase<IDeviceContextGL, BufferGLImpl, TextureBaseGL, PipelineStateGLImpl>;
DeviceContextGLImpl( IReferenceCounters *pRefCounters, class RenderDeviceGLImpl *pDeviceGL, bool bIsDeferred );
@@ -78,7 +78,11 @@ public:
virtual void Flush()override final;
- virtual void UpdateBuffer(IBuffer *pBuffer, Uint32 Offset, Uint32 Size, const PVoid pData)override final;
+ virtual void UpdateBuffer(IBuffer* pBuffer,
+ Uint32 Offset,
+ Uint32 Size,
+ const PVoid pData,
+ RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)override final;
virtual void CopyBuffer(IBuffer *pSrcBuffer, Uint32 SrcOffset, IBuffer *pDstBuffer, Uint32 DstOffset, Uint32 Size)override final;
@@ -86,7 +90,13 @@ public:
virtual void UnmapBuffer(IBuffer* pBuffer)override final;
- virtual void UpdateTexture(ITexture* pTexture, Uint32 MipLevel, Uint32 Slice, const Box& DstBox, const TextureSubResData& SubresData)override final;
+ virtual void UpdateTexture(ITexture* pTexture,
+ Uint32 MipLevel,
+ Uint32 Slice,
+ const Box& DstBox,
+ const TextureSubResData& SubresData,
+ RESOURCE_STATE_TRANSITION_MODE SrcBufferStateTransitionMode,
+ RESOURCE_STATE_TRANSITION_MODE TextureStateTransitionMode)override final;
virtual void CopyTexture(ITexture* pSrcTexture,
Uint32 SrcMipLevel,
diff --git a/Graphics/GraphicsEngineOpenGL/include/TextureBaseGL.h b/Graphics/GraphicsEngineOpenGL/include/TextureBaseGL.h
index 934e0c8e..88302ace 100644
--- a/Graphics/GraphicsEngineOpenGL/include/TextureBaseGL.h
+++ b/Graphics/GraphicsEngineOpenGL/include/TextureBaseGL.h
@@ -42,6 +42,7 @@ class TextureBaseGL : public TextureBase<ITextureGL, RenderDeviceGLImpl, Texture
{
public:
using TTextureBase = TextureBase<ITextureGL, RenderDeviceGLImpl, TextureViewGLImpl, FixedBlockMemoryAllocator>;
+ using ViewImplType = TextureViewGLImpl;
TextureBaseGL(IReferenceCounters *pRefCounters,
FixedBlockMemoryAllocator& TexViewObjAllocator,
diff --git a/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp
index a20685f3..f4e61e6f 100644
--- a/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp
+++ b/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp
@@ -1011,9 +1011,13 @@ namespace Diligent
return true;
}
- void DeviceContextGLImpl::UpdateBuffer(IBuffer* pBuffer, Uint32 Offset, Uint32 Size, const PVoid pData)
+ void DeviceContextGLImpl::UpdateBuffer(IBuffer* pBuffer,
+ Uint32 Offset,
+ Uint32 Size,
+ const PVoid pData,
+ RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)
{
- TDeviceContextBase::UpdateBuffer(pBuffer, Offset, Size, pData);
+ TDeviceContextBase::UpdateBuffer(pBuffer, Offset, Size, pData, StateTransitionMode);
auto* pBufferGL = ValidatedCast<BufferGLImpl>(pBuffer);
pBufferGL->UpdateData(m_ContextState, Offset, Size, pData);
@@ -1042,9 +1046,15 @@ namespace Diligent
pBufferGL->Unmap();
}
- void DeviceContextGLImpl::UpdateTexture(ITexture* pTexture, Uint32 MipLevel, Uint32 Slice, const Box& DstBox, const TextureSubResData& SubresData)
+ void DeviceContextGLImpl::UpdateTexture(ITexture* pTexture,
+ Uint32 MipLevel,
+ Uint32 Slice,
+ const Box& DstBox,
+ const TextureSubResData& SubresData,
+ RESOURCE_STATE_TRANSITION_MODE SrcBufferStateTransitionMode,
+ RESOURCE_STATE_TRANSITION_MODE TextureStateTransitionMode)
{
- TDeviceContextBase::UpdateTexture( pTexture, MipLevel, Slice, DstBox, SubresData );
+ TDeviceContextBase::UpdateTexture( pTexture, MipLevel, Slice, DstBox, SubresData, SrcBufferStateTransitionMode, TextureStateTransitionMode );
auto* pTexGL = ValidatedCast<TextureBaseGL>(pTexture);
pTexGL->UpdateData(m_ContextState, MipLevel, Slice, DstBox, SubresData);
}