Skip to content

Commit a5bef68

Browse files
Create default views for typeless textures
1 parent b957e0e commit a5bef68

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ class TexFormatToViewFormatConverter
131131
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_RGB10A2_UINT, RGB10A2_UINT, RGB10A2_UINT, UNKNOWN, RGB10A2_UINT);
132132
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_R11G11B10_FLOAT, R11G11B10_FLOAT, R11G11B10_FLOAT, UNKNOWN, R11G11B10_FLOAT);
133133

134-
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_RGBA8_TYPELESS, RGBA8_UNORM_SRGB, RGBA8_UNORM_SRGB, UNKNOWN, RGBA8_UNORM);
134+
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_RGBA8_TYPELESS, RGBA8_UNORM, RGBA8_UNORM, UNKNOWN, RGBA8_UNORM);
135135
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_RGBA8_UNORM, RGBA8_UNORM, RGBA8_UNORM, UNKNOWN, RGBA8_UNORM);
136136
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_RGBA8_UNORM_SRGB, RGBA8_UNORM_SRGB, RGBA8_UNORM_SRGB, UNKNOWN, RGBA8_UNORM);
137137
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_RGBA8_UINT, RGBA8_UINT, RGBA8_UINT, UNKNOWN, RGBA8_UINT);
@@ -206,7 +206,7 @@ class TexFormatToViewFormatConverter
206206
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_BGRA8_UNORM, BGRA8_UNORM, BGRA8_UNORM, UNKNOWN, BGRA8_UNORM);
207207
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_BGRX8_UNORM, BGRX8_UNORM, BGRX8_UNORM, UNKNOWN, BGRX8_UNORM);
208208
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM, R10G10B10_XR_BIAS_A2_UNORM, UNKNOWN, UNKNOWN, UNKNOWN);
209-
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_BGRA8_TYPELESS, BGRA8_UNORM_SRGB, BGRA8_UNORM_SRGB, UNKNOWN, BGRA8_UNORM);
209+
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_BGRA8_TYPELESS, BGRA8_UNORM, BGRA8_UNORM, UNKNOWN, BGRA8_UNORM);
210210
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_BGRA8_UNORM_SRGB, BGRA8_UNORM_SRGB, BGRA8_UNORM_SRGB, UNKNOWN, BGRA8_UNORM);
211211
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_BGRX8_TYPELESS, BGRX8_UNORM_SRGB, BGRX8_UNORM_SRGB, UNKNOWN, BGRX8_UNORM);
212212
INIT_TEX_VIEW_FORMAT_INFO(TEX_FORMAT_BGRX8_UNORM_SRGB, BGRX8_UNORM_SRGB, BGRX8_UNORM_SRGB, UNKNOWN, BGRX8_UNORM);
@@ -227,8 +227,10 @@ class TexFormatToViewFormatConverter
227227
#undef INIT_TVIEW_FORMAT_INFO
228228
// clang-format on
229229

230-
m_ViewFormats[TEX_FORMAT_R8_UINT][TEXTURE_VIEW_SHADING_RATE - 1] = TEX_FORMAT_R8_UINT;
231-
m_ViewFormats[TEX_FORMAT_RG8_UNORM][TEXTURE_VIEW_SHADING_RATE - 1] = TEX_FORMAT_RG8_UNORM;
230+
m_ViewFormats[TEX_FORMAT_R8_TYPELESS][TEXTURE_VIEW_SHADING_RATE - 1] = TEX_FORMAT_R8_UINT;
231+
m_ViewFormats[TEX_FORMAT_R8_UINT][TEXTURE_VIEW_SHADING_RATE - 1] = TEX_FORMAT_R8_UINT;
232+
m_ViewFormats[TEX_FORMAT_RG8_TYPELESS][TEXTURE_VIEW_SHADING_RATE - 1] = TEX_FORMAT_RG8_UNORM;
233+
m_ViewFormats[TEX_FORMAT_RG8_UNORM][TEXTURE_VIEW_SHADING_RATE - 1] = TEX_FORMAT_RG8_UNORM;
232234
}
233235

234236
TEXTURE_FORMAT GetViewFormat(TEXTURE_FORMAT Format, TEXTURE_VIEW_TYPE ViewType, Uint32 BindFlags)

Graphics/GraphicsEngine/include/TextureBase.hpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,6 @@ class TextureBase : public DeviceObjectBase<typename EngineImplTraits::TextureIn
183183
{
184184
VERIFY(m_pDefaultViews == nullptr, "Default views have already been initialized");
185185

186-
const TextureFormatAttribs& TexFmtAttribs = GetTextureFormatAttribs(this->m_Desc.Format);
187-
if (TexFmtAttribs.ComponentType == COMPONENT_TYPE_UNDEFINED)
188-
{
189-
// Cannot create default view for TYPELESS formats
190-
return;
191-
}
192-
193186
const Uint32 NumDefaultViews = GetNumDefaultViews();
194187
if (NumDefaultViews == 0)
195188
return;
@@ -201,13 +194,24 @@ class TextureBase : public DeviceObjectBase<typename EngineImplTraits::TextureIn
201194
}
202195
TextureViewImplType** ppDefaultViews = GetDefaultViewsArrayPtr();
203196

197+
const TextureFormatAttribs& TexFmtAttribs = GetTextureFormatAttribs(this->m_Desc.Format);
198+
204199
Uint8 ViewIdx = 0;
205200

206201
auto CreateDefaultView = [&](TEXTURE_VIEW_TYPE ViewType) //
207202
{
208203
TextureViewDesc ViewDesc;
209204
ViewDesc.ViewType = ViewType;
210205

206+
if (TexFmtAttribs.IsTypeless)
207+
{
208+
ViewDesc.Format = GetDefaultTextureViewFormat(this->m_Desc, ViewType);
209+
if (ViewDesc.Format == TEX_FORMAT_UNKNOWN)
210+
{
211+
return;
212+
}
213+
}
214+
211215
std::string ViewName;
212216
switch (ViewType)
213217
{

0 commit comments

Comments
 (0)