Commit 43341b7a by Jamie Madill Committed by Commit Bot

D3D11: Merge FL10 and 9_3 ANGLE formats.

This will let us use ANGLE formats to describe a format layout rather than a Renderer-specific usage. This in turn will let us use ANGLE formats for other Renderers, as a universal thing. BUG=angleproject:1455 Change-Id: I56492cb809d4ef6ac4b962cb12affbc853bbdaa0 Reviewed-on: https://chromium-review.googlesource.com/365269Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 509a1d46
......@@ -1984,8 +1984,9 @@ gl::Error Blit11::initResolveDepthStencil(const gl::Extents &extents)
releaseResolveDepthStencilResources();
}
auto resolvedFormat = d3d11::ANGLE_FORMAT_R32G32_FLOAT;
const auto &formatSet = d3d11::GetANGLEFormatSet(resolvedFormat);
auto resolvedFormat = d3d11::ANGLE_FORMAT_R32G32_FLOAT;
const auto &formatSet =
d3d11::GetANGLEFormatSet(resolvedFormat, mRenderer->getRenderer11DeviceCaps());
D3D11_TEXTURE2D_DESC textureDesc;
textureDesc.Width = extents.width;
......
......@@ -3280,7 +3280,8 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G
{
*outRT = new TextureRenderTarget11(
static_cast<ID3D11RenderTargetView *>(nullptr), nullptr, nullptr, nullptr, format,
d3d11::GetANGLEFormatSet(d3d11::ANGLE_FORMAT_NONE), width, height, 1, supportedSamples);
d3d11::GetANGLEFormatSet(d3d11::ANGLE_FORMAT_NONE, mRenderer11DeviceCaps), width,
height, 1, supportedSamples);
}
return gl::Error(GL_NO_ERROR);
......
......@@ -1569,7 +1569,8 @@ TextureStorage11_EGLImage::TextureStorage11_EGLImage(Renderer11 *renderer, EGLIm
mMipLevels = 1;
mTextureFormatSet = &renderTarget11->getFormatSet();
mSwizzleFormatSet = &d3d11::GetANGLEFormatSet(mTextureFormatSet->swizzleFormat);
mSwizzleFormatSet = &d3d11::GetANGLEFormatSet(mTextureFormatSet->swizzleFormat,
renderer->getRenderer11DeviceCaps());
mTextureWidth = renderTarget11->getWidth();
mTextureHeight = renderTarget11->getHeight();
mTextureDepth = 1;
......
......@@ -163,11 +163,12 @@ ANGLEFormatSet::ANGLEFormatSet()
// DSVs given a GL internal format.
TextureFormat::TextureFormat(GLenum internalFormat,
const ANGLEFormat angleFormat,
InitializeTextureDataFunction internalFormatInitializer)
InitializeTextureDataFunction internalFormatInitializer,
const Renderer11DeviceCaps &deviceCaps)
: dataInitializerFunction(internalFormatInitializer)
{{
formatSet = &GetANGLEFormatSet(angleFormat);
swizzleFormatSet = &GetANGLEFormatSet(formatSet->swizzleFormat);
formatSet = &GetANGLEFormatSet(angleFormat, deviceCaps);
swizzleFormatSet = &GetANGLEFormatSet(formatSet->swizzleFormat, deviceCaps);
// Gather all the load functions for this internal format
loadFunctions = GetLoadFunctionsMap(internalFormat, formatSet->texFormat);
......@@ -200,7 +201,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format,
{{
}}
const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat,
const Renderer11DeviceCaps &deviceCaps)
{{
// clang-format off
switch (angleFormat)
......@@ -217,7 +219,7 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
}}
const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
const Renderer11DeviceCaps &renderer11DeviceCaps)
const Renderer11DeviceCaps &deviceCaps)
{{
// clang-format off
switch (internalFormat)
......@@ -229,7 +231,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}}
// clang-format on
static const TextureFormat defaultInfo(GL_NONE, ANGLE_FORMAT_NONE, nullptr);
static const TextureFormat defaultInfo(GL_NONE, ANGLE_FORMAT_NONE, nullptr, deviceCaps);
return defaultInfo;
}} // GetTextureFormatInfo
......@@ -371,15 +373,16 @@ def get_texture_format_item(idx, internal_format, requirements_fn, angle_format_
indent = ' '
if requirements_fn != None:
if idx == 0:
table_data += ' if (' + requirements_fn + '(renderer11DeviceCaps))\n'
table_data += ' if (' + requirements_fn + '(deviceCaps))\n'
else:
table_data += ' else if (' + requirements_fn + '(renderer11DeviceCaps))\n'
table_data += ' else if (' + requirements_fn + '(deviceCaps))\n'
table_data += ' {\n'
indent += ' '
table_data += indent + 'static const TextureFormat textureFormat(internalFormat,\n'
table_data += indent + ' ' + angle_format_id + ',\n'
table_data += indent + ' ' + internal_format_initializer + ');\n'
table_data += indent + ' ' + internal_format_initializer + ',\n'
table_data += indent + ' deviceCaps);\n'
table_data += indent + 'return textureFormat;\n'
if requirements_fn != None:
......@@ -465,39 +468,109 @@ def get_blit_srv_format(angle_format):
return angle_format["srvFormat"] if "srvFormat" in angle_format else "DXGI_FORMAT_UNKNOWN"
format_entry_template = """{space}{{
{space} static const ANGLEFormatSet formatInfo({formatName},
{space} {glInternalFormat},
{space} {fboImplementationInternalFormat},
{space} {texFormat},
{space} {srvFormat},
{space} {rtvFormat},
{space} {dsvFormat},
{space} {blitSRVFormat},
{space} {swizzleFormat},
{space} {mipGenerationFunction},
{space} {colorReadFunction});
{space} return formatInfo;
{space}}}
"""
split_format_entry_template = """{space} {condition}
{space} {{
{space} static const ANGLEFormatSet formatInfo({formatName},
{space} {glInternalFormat},
{space} {fboImplementationInternalFormat},
{space} {texFormat},
{space} {srvFormat},
{space} {rtvFormat},
{space} {dsvFormat},
{space} {blitSRVFormat},
{space} {swizzleFormat},
{space} {mipGenerationFunction},
{space} {colorReadFunction});
{space} return formatInfo;
{space} }}
"""
def json_to_table_data(format_name, prefix, json):
table_data = ""
parsed = {
"space": " ",
"formatName": format_name,
"texFormat": "DXGI_FORMAT_UNKNOWN",
"srvFormat": "DXGI_FORMAT_UNKNOWN",
"rtvFormat": "DXGI_FORMAT_UNKNOWN",
"dsvFormat": "DXGI_FORMAT_UNKNOWN",
"glInternalFormat": "GL_NONE",
"condition": prefix,
}
for k, v in json.iteritems():
parsed[k] = v
if (format_name != "ANGLE_FORMAT_NONE") and (parsed["glInternalFormat"] == "GL_NONE"):
print("Missing 'glInternalFormat' from " + format_name)
sys.exit(1)
if "fboImplementationInternalFormat" not in parsed:
parsed["fboImplementationInternalFormat"] = parsed["glInternalFormat"]
# Derived values.
parsed["blitSRVFormat"] = get_blit_srv_format(parsed)
parsed["swizzleFormat"] = get_swizzle_format_id(format_name, parsed)
parsed["mipGenerationFunction"] = get_mip_generation_function(parsed)
parsed["colorReadFunction"] = get_color_read_function(parsed)
if len(prefix) > 0:
return split_format_entry_template.format(**parsed)
else:
return format_entry_template.format(**parsed)
def parse_json_into_switch_angle_format_string(json_data):
table_data = ''
for angle_format_item in sorted(json_data.iteritems()):
table_data += ' case ' + angle_format_item[0] + ':\n'
format_name = angle_format_item[0]
angle_format = angle_format_item[1]
if (format_name != "ANGLE_FORMAT_NONE") and ("glInternalFormat" not in angle_format):
print("Missing 'glInternalFormat' from " + format_name)
sys.exit(1)
gl_internal_format = "GL_NONE" if format_name == "ANGLE_FORMAT_NONE" else angle_format["glInternalFormat"]
fbo_internal_format = angle_format["fboImplementationInternalFormat"] if "fboImplementationInternalFormat" in angle_format else gl_internal_format
tex_format = angle_format["texFormat"] if "texFormat" in angle_format else "DXGI_FORMAT_UNKNOWN"
srv_format = angle_format["srvFormat"] if "srvFormat" in angle_format else "DXGI_FORMAT_UNKNOWN"
rtv_format = angle_format["rtvFormat"] if "rtvFormat" in angle_format else "DXGI_FORMAT_UNKNOWN"
dsv_format = angle_format["dsvFormat"] if "dsvFormat" in angle_format else "DXGI_FORMAT_UNKNOWN"
blit_srv_format = get_blit_srv_format(angle_format)
swizzle_format = get_swizzle_format_id(format_name, angle_format)
mip_generation_function = get_mip_generation_function(angle_format)
color_read_function = get_color_read_function(angle_format)
table_data += ' {\n'
table_data += ' static const ANGLEFormatSet formatInfo(' + format_name + ',\n'
table_data += ' ' + gl_internal_format + ',\n'
table_data += ' ' + fbo_internal_format + ',\n'
table_data += ' ' + tex_format + ',\n'
table_data += ' ' + srv_format + ',\n'
table_data += ' ' + rtv_format + ',\n'
table_data += ' ' + dsv_format + ',\n'
table_data += ' ' + blit_srv_format + ',\n'
table_data += ' ' + swizzle_format + ',\n'
table_data += ' ' + mip_generation_function + ',\n'
table_data += ' ' + color_read_function + ');\n'
table_data += ' return formatInfo;\n'
table_data += ' }\n'
fl10plus = {}
fl9_3 = {}
split = False
for k, v in angle_format.iteritems():
if k == "FL10Plus":
split = True
for k2, v2 in v.iteritems():
fl10plus[k2] = v2
elif k == "FL9_3":
split = True
for k2, v2 in v.iteritems():
fl9_3[k2] = v2
else:
fl10plus[k] = v
fl9_3[k] = v
if split:
table_data += " {\n"
table_data += json_to_table_data(format_name, "if (OnlyFL10Plus(deviceCaps))", fl10plus)
table_data += json_to_table_data(format_name, "else", fl9_3)
table_data += " }\n"
table_data += " break;\n"
else:
table_data += json_to_table_data(format_name, "", fl10plus)
return table_data
def parse_json_into_angle_format_enum_string(json_data):
......
......@@ -80,22 +80,20 @@
"swizzleFormat": "ANGLE_FORMAT_R8G8B8A8_UNORM",
"glInternalFormat": "GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE"
},
"ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10": {
"texFormat": "DXGI_FORMAT_R24G8_TYPELESS",
"srvFormat": "DXGI_FORMAT_R24_UNORM_X8_TYPELESS",
"ANGLE_FORMAT_D24_UNORM_S8_UINT": {
"FL10Plus": {
"texFormat": "DXGI_FORMAT_R24G8_TYPELESS",
"srvFormat": "DXGI_FORMAT_R24_UNORM_X8_TYPELESS"
},
"FL9_3": {
"texFormat": "DXGI_FORMAT_D24_UNORM_S8_UINT"
},
"dsvFormat": "DXGI_FORMAT_D24_UNORM_S8_UINT",
"channels": "ds",
"bits": { "depth": 24, "stencil": 8 },
"glInternalFormat": "GL_DEPTH24_STENCIL8_OES"
},
"ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3": {
"texFormat": "DXGI_FORMAT_D24_UNORM_S8_UINT",
"dsvFormat": "DXGI_FORMAT_D24_UNORM_S8_UINT",
"channels": "ds",
"bits": { "depth": 24, "stencil": 8 },
"glInternalFormat": "GL_DEPTH24_STENCIL8_OES"
},
"ANGLE_FORMAT_D32_FLOAT_S8X24_UINT_FL10": {
"ANGLE_FORMAT_D32_FLOAT_S8X24_UINT": {
"texFormat": "DXGI_FORMAT_R32G8X24_TYPELESS",
"srvFormat": "DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS",
"dsvFormat": "DXGI_FORMAT_D32_FLOAT_S8X24_UINT",
......@@ -103,17 +101,14 @@
"bits": { "depth": 32, "stencil": 8 },
"glInternalFormat": "GL_DEPTH32F_STENCIL8"
},
"ANGLE_FORMAT_D16_UNORM_FL10": {
"texFormat": "DXGI_FORMAT_R16_TYPELESS",
"srvFormat": "DXGI_FORMAT_R16_UNORM",
"dsvFormat": "DXGI_FORMAT_D16_UNORM",
"channels": "d",
"componentType": "unorm",
"bits": { "depth": 16 },
"glInternalFormat": "GL_DEPTH_COMPONENT16"
},
"ANGLE_FORMAT_D16_UNORM_FL9_3": {
"texFormat": "DXGI_FORMAT_D16_UNORM",
"ANGLE_FORMAT_D16_UNORM": {
"FL10Plus": {
"texFormat": "DXGI_FORMAT_R16_TYPELESS",
"srvFormat": "DXGI_FORMAT_R16_UNORM"
},
"FL9_3": {
"texFormat": "DXGI_FORMAT_D16_UNORM"
},
"dsvFormat": "DXGI_FORMAT_D16_UNORM",
"channels": "d",
"componentType": "unorm",
......
......@@ -77,27 +77,25 @@
"OnlyFL10Plus": "ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB"
},
"GL_DEPTH24_STENCIL8": {
"OnlyFL10Plus": "ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10",
"OnlyFL9_3": "ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3"
"OnlyFL10Plus": "ANGLE_FORMAT_D24_UNORM_S8_UINT",
"OnlyFL9_3": "ANGLE_FORMAT_D24_UNORM_S8_UINT"
},
"GL_DEPTH32F_STENCIL8": {
"OnlyFL10Plus": "ANGLE_FORMAT_D32_FLOAT_S8X24_UINT_FL10",
"OnlyFL9_3": "ANGLE_FORMAT_NONE"
"OnlyFL10Plus": "ANGLE_FORMAT_D32_FLOAT_S8X24_UINT"
},
"GL_DEPTH_COMPONENT16": {
"OnlyFL10Plus": "ANGLE_FORMAT_D16_UNORM_FL10",
"OnlyFL9_3": "ANGLE_FORMAT_D16_UNORM_FL9_3"
"OnlyFL10Plus": "ANGLE_FORMAT_D16_UNORM",
"OnlyFL9_3": "ANGLE_FORMAT_D16_UNORM"
},
"GL_DEPTH_COMPONENT24": {
"OnlyFL10Plus": "ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10",
"OnlyFL9_3": "ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3"
"OnlyFL10Plus": "ANGLE_FORMAT_D24_UNORM_S8_UINT",
"OnlyFL9_3": "ANGLE_FORMAT_D24_UNORM_S8_UINT"
},
"GL_DEPTH_COMPONENT32F": {
"OnlyFL10Plus": "ANGLE_FORMAT_D32_FLOAT",
"OnlyFL9_3": "ANGLE_FORMAT_NONE"
"OnlyFL10Plus": "ANGLE_FORMAT_D32_FLOAT"
},
"GL_DEPTH_COMPONENT32_OES": {
"OnlyFL10Plus": "ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10"
"OnlyFL10Plus": "ANGLE_FORMAT_D24_UNORM_S8_UINT"
},
"GL_ETC1_RGB8_OES": "ANGLE_FORMAT_R8G8B8A8_UNORM",
"GL_ETC1_RGB8_LOSSY_DECODE_ANGLE": "ANGLE_FORMAT_BC1_UNORM",
......@@ -171,8 +169,8 @@
"GL_SRGB8": "ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB",
"GL_SRGB8_ALPHA8": "ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB",
"GL_STENCIL_INDEX8": {
"OnlyFL10Plus": "ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10",
"OnlyFL9_3": "ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3"
"OnlyFL10Plus": "ANGLE_FORMAT_D24_UNORM_S8_UINT",
"OnlyFL9_3": "ANGLE_FORMAT_D24_UNORM_S8_UINT"
},
"GL_R16_EXT": "ANGLE_FORMAT_R16_UNORM",
"GL_RG16_EXT": "ANGLE_FORMAT_R16G16_UNORM",
......
......@@ -81,7 +81,8 @@ struct TextureFormat : public angle::NonCopyable
{
TextureFormat(GLenum internalFormat,
const ANGLEFormat angleFormat,
InitializeTextureDataFunction internalFormatInitializer);
InitializeTextureDataFunction internalFormatInitializer,
const Renderer11DeviceCaps &deviceCaps);
const ANGLEFormatSet *formatSet;
const ANGLEFormatSet *swizzleFormatSet;
......@@ -92,7 +93,8 @@ struct TextureFormat : public angle::NonCopyable
LoadFunctionMap loadFunctions;
};
const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat);
const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat,
const Renderer11DeviceCaps &deviceCaps);
const TextureFormat &GetTextureFormatInfo(GLenum internalformat,
const Renderer11DeviceCaps &renderer11DeviceCaps);
......
......@@ -123,11 +123,12 @@ ANGLEFormatSet::ANGLEFormatSet()
// DSVs given a GL internal format.
TextureFormat::TextureFormat(GLenum internalFormat,
const ANGLEFormat angleFormat,
InitializeTextureDataFunction internalFormatInitializer)
InitializeTextureDataFunction internalFormatInitializer,
const Renderer11DeviceCaps &deviceCaps)
: dataInitializerFunction(internalFormatInitializer)
{
formatSet = &GetANGLEFormatSet(angleFormat);
swizzleFormatSet = &GetANGLEFormatSet(formatSet->swizzleFormat);
formatSet = &GetANGLEFormatSet(angleFormat, deviceCaps);
swizzleFormatSet = &GetANGLEFormatSet(formatSet->swizzleFormat, deviceCaps);
// Gather all the load functions for this internal format
loadFunctions = GetLoadFunctionsMap(internalFormat, formatSet->texFormat);
......@@ -160,7 +161,8 @@ ANGLEFormatSet::ANGLEFormatSet(ANGLEFormat format,
{
}
const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat,
const Renderer11DeviceCaps &deviceCaps)
{
// clang-format off
switch (angleFormat)
......@@ -285,66 +287,74 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
nullptr);
return formatInfo;
}
case ANGLE_FORMAT_D16_UNORM_FL10:
case ANGLE_FORMAT_D16_UNORM:
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D16_UNORM_FL10,
GL_DEPTH_COMPONENT16,
GL_DEPTH_COMPONENT16,
DXGI_FORMAT_R16_TYPELESS,
DXGI_FORMAT_R16_UNORM,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D16_UNORM,
DXGI_FORMAT_R16_UNORM,
ANGLE_FORMAT_R16G16B16A16_UNORM,
nullptr,
nullptr);
return formatInfo;
}
case ANGLE_FORMAT_D16_UNORM_FL9_3:
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D16_UNORM_FL9_3,
GL_DEPTH_COMPONENT16,
GL_DEPTH_COMPONENT16,
DXGI_FORMAT_D16_UNORM,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D16_UNORM,
DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_UNORM,
nullptr,
nullptr);
return formatInfo;
}
case ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10:
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10,
GL_DEPTH24_STENCIL8_OES,
GL_DEPTH24_STENCIL8_OES,
DXGI_FORMAT_R24G8_TYPELESS,
DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D24_UNORM_S8_UINT,
DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr,
nullptr);
return formatInfo;
if (OnlyFL10Plus(deviceCaps))
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D16_UNORM,
GL_DEPTH_COMPONENT16,
GL_DEPTH_COMPONENT16,
DXGI_FORMAT_R16_TYPELESS,
DXGI_FORMAT_R16_UNORM,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D16_UNORM,
DXGI_FORMAT_R16_UNORM,
ANGLE_FORMAT_R16G16B16A16_UNORM,
nullptr,
nullptr);
return formatInfo;
}
else
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D16_UNORM,
GL_DEPTH_COMPONENT16,
GL_DEPTH_COMPONENT16,
DXGI_FORMAT_D16_UNORM,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D16_UNORM,
DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R16G16B16A16_UNORM,
nullptr,
nullptr);
return formatInfo;
}
}
case ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3:
break;
case ANGLE_FORMAT_D24_UNORM_S8_UINT:
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3,
GL_DEPTH24_STENCIL8_OES,
GL_DEPTH24_STENCIL8_OES,
DXGI_FORMAT_D24_UNORM_S8_UINT,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D24_UNORM_S8_UINT,
DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr,
nullptr);
return formatInfo;
if (OnlyFL10Plus(deviceCaps))
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D24_UNORM_S8_UINT,
GL_DEPTH24_STENCIL8_OES,
GL_DEPTH24_STENCIL8_OES,
DXGI_FORMAT_R24G8_TYPELESS,
DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D24_UNORM_S8_UINT,
DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr,
nullptr);
return formatInfo;
}
else
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D24_UNORM_S8_UINT,
GL_DEPTH24_STENCIL8_OES,
GL_DEPTH24_STENCIL8_OES,
DXGI_FORMAT_D24_UNORM_S8_UINT,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_UNKNOWN,
DXGI_FORMAT_D24_UNORM_S8_UINT,
DXGI_FORMAT_UNKNOWN,
ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr,
nullptr);
return formatInfo;
}
}
break;
case ANGLE_FORMAT_D32_FLOAT:
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D32_FLOAT,
......@@ -360,9 +370,9 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
nullptr);
return formatInfo;
}
case ANGLE_FORMAT_D32_FLOAT_S8X24_UINT_FL10:
case ANGLE_FORMAT_D32_FLOAT_S8X24_UINT:
{
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D32_FLOAT_S8X24_UINT_FL10,
static const ANGLEFormatSet formatInfo(ANGLE_FORMAT_D32_FLOAT_S8X24_UINT,
GL_DEPTH32F_STENCIL8,
GL_DEPTH32F_STENCIL8,
DXGI_FORMAT_R32G8X24_TYPELESS,
......@@ -1017,25 +1027,27 @@ const ANGLEFormatSet &GetANGLEFormatSet(ANGLEFormat angleFormat)
}
const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
const Renderer11DeviceCaps &renderer11DeviceCaps)
const Renderer11DeviceCaps &deviceCaps)
{
// clang-format off
switch (internalFormat)
{
case GL_ALPHA:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else if (OnlyFL9_3(renderer11DeviceCaps))
else if (OnlyFL9_3(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1047,30 +1059,34 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_ALPHA32F_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_ALPHA8_EXT:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else if (OnlyFL9_3(renderer11DeviceCaps))
else if (OnlyFL9_3(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1082,44 +1098,50 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_B5G6R5_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_BGR5_A1_ANGLEX:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_B8G8R8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_BGRA4_ANGLEX:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_B8G8R8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_BGRA8_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_B8G8R8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_BGRA_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_B8G8R8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_R11_EAC:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1129,11 +1151,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_COMPRESSED_RG11_EAC:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1143,11 +1166,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_COMPRESSED_RGB8_ETC2:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
else
......@@ -1157,11 +1181,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
else
......@@ -1171,11 +1196,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_COMPRESSED_RGBA8_ETC2_EAC:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1187,135 +1213,154 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_BC1_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_BC2_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_BC3_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_BC1_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SIGNED_R11_EAC:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8_SNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1325,11 +1370,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_COMPRESSED_SIGNED_RG11_EAC:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8_SNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1341,107 +1387,122 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1451,11 +1512,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_COMPRESSED_SRGB8_ETC2:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
else
......@@ -1465,11 +1527,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1479,18 +1542,20 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_DEPTH24_STENCIL8:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10,
nullptr);
ANGLE_FORMAT_D24_UNORM_S8_UINT,
nullptr,
deviceCaps);
return textureFormat;
}
else if (OnlyFL9_3(renderer11DeviceCaps))
else if (OnlyFL9_3(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3,
nullptr);
ANGLE_FORMAT_D24_UNORM_S8_UINT,
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1500,18 +1565,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_DEPTH32F_STENCIL8:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D32_FLOAT_S8X24_UINT_FL10,
nullptr);
return textureFormat;
}
else if (OnlyFL9_3(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
ANGLE_FORMAT_D32_FLOAT_S8X24_UINT,
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1521,18 +1580,20 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_DEPTH_COMPONENT16:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D16_UNORM_FL10,
nullptr);
ANGLE_FORMAT_D16_UNORM,
nullptr,
deviceCaps);
return textureFormat;
}
else if (OnlyFL9_3(renderer11DeviceCaps))
else if (OnlyFL9_3(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D16_UNORM_FL9_3,
nullptr);
ANGLE_FORMAT_D16_UNORM,
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1542,18 +1603,20 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_DEPTH_COMPONENT24:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10,
nullptr);
ANGLE_FORMAT_D24_UNORM_S8_UINT,
nullptr,
deviceCaps);
return textureFormat;
}
else if (OnlyFL9_3(renderer11DeviceCaps))
else if (OnlyFL9_3(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3,
nullptr);
ANGLE_FORMAT_D24_UNORM_S8_UINT,
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1563,18 +1626,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_DEPTH_COMPONENT32F:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D32_FLOAT,
nullptr);
return textureFormat;
}
else if (OnlyFL9_3(renderer11DeviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1584,11 +1641,12 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_DEPTH_COMPONENT32_OES:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10,
nullptr);
ANGLE_FORMAT_D24_UNORM_S8_UINT,
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1600,345 +1658,394 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_BC1_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_ETC1_RGB8_OES:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
case GL_LUMINANCE:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
case GL_LUMINANCE16F_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_FLOAT,
Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>,
deviceCaps);
return textureFormat;
}
case GL_LUMINANCE32F_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32B32A32_FLOAT,
Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>,
deviceCaps);
return textureFormat;
}
case GL_LUMINANCE8_ALPHA8_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_LUMINANCE8_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
case GL_LUMINANCE_ALPHA:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_LUMINANCE_ALPHA16F_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_LUMINANCE_ALPHA32F_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_NONE:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_NONE,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R11F_G11F_B10F:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R11G11B10_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R16F:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R16I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16_SINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R16UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R16_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R16_SNORM_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16_SNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R32F:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R32I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32_SINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R32UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R8:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R8I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8_SINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R8UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_R8_SNORM:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8_SNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG16F:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG16I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16_SINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG16UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG16_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG16_SNORM_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16_SNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG32F:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG32I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32_SINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG32UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG8:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG8I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8_SINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG8UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RG8_SNORM:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8_SNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGB:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
case GL_RGB10_A2:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R10G10B10A2_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGB10_A2UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R10G10B10A2_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGB16F:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_FLOAT,
Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>);
Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>,
deviceCaps);
return textureFormat;
}
case GL_RGB16I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_SINT,
Initialize4ComponentData<GLshort, 0x0000, 0x0000, 0x0000, 0x0001>);
Initialize4ComponentData<GLshort, 0x0000, 0x0000, 0x0000, 0x0001>,
deviceCaps);
return textureFormat;
}
case GL_RGB16UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_UINT,
Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x0001>);
Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x0001>,
deviceCaps);
return textureFormat;
}
case GL_RGB16_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_UNORM,
Initialize4ComponentData<GLubyte, 0x0000, 0x0000, 0x0000, 0xFFFF>);
Initialize4ComponentData<GLubyte, 0x0000, 0x0000, 0x0000, 0xFFFF>,
deviceCaps);
return textureFormat;
}
case GL_RGB16_SNORM_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_SNORM,
Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x7FFF>);
Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x7FFF>,
deviceCaps);
return textureFormat;
}
case GL_RGB32F:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32B32A32_FLOAT,
Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>);
Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, 0x00000000, gl::Float32One>,
deviceCaps);
return textureFormat;
}
case GL_RGB32I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32B32A32_SINT,
Initialize4ComponentData<GLint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
Initialize4ComponentData<GLint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>,
deviceCaps);
return textureFormat;
}
case GL_RGB32UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32B32A32_UINT,
Initialize4ComponentData<GLuint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>);
Initialize4ComponentData<GLuint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>,
deviceCaps);
return textureFormat;
}
case GL_RGB565:
{
if (SupportsFormat<DXGI_FORMAT_B5G6R5_UNORM,false>(renderer11DeviceCaps))
if (SupportsFormat<DXGI_FORMAT_B5G6R5_UNORM,false>(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
else if (SupportsFormat<DXGI_FORMAT_B5G6R5_UNORM,true>(renderer11DeviceCaps))
else if (SupportsFormat<DXGI_FORMAT_B5G6R5_UNORM,true>(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_B5G6R5_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1948,18 +2055,20 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
case GL_RGB5_A1:
{
if (SupportsFormat<DXGI_FORMAT_B5G5R5A1_UNORM,false>(renderer11DeviceCaps))
if (SupportsFormat<DXGI_FORMAT_B5G5R5A1_UNORM,false>(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else if (SupportsFormat<DXGI_FORMAT_B5G5R5A1_UNORM,true>(renderer11DeviceCaps))
else if (SupportsFormat<DXGI_FORMAT_B5G5R5A1_UNORM,true>(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_B5G5R5A1_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -1971,114 +2080,130 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
case GL_RGB8I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_SINT,
Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x01>);
Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x01>,
deviceCaps);
return textureFormat;
}
case GL_RGB8UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UINT,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0x01>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0x01>,
deviceCaps);
return textureFormat;
}
case GL_RGB8_SNORM:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_SNORM,
Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x7F>);
Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x7F>,
deviceCaps);
return textureFormat;
}
case GL_RGB9_E5:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R9G9B9E5_SHAREDEXP,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA16F:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA16I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_SINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA16UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA16_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA16_SNORM_EXT:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R16G16B16A16_SNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA32F:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32B32A32_FLOAT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA32I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32B32A32_SINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA32UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R32G32B32A32_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA4:
{
if (SupportsFormat<DXGI_FORMAT_B4G4R4A4_UNORM,false>(renderer11DeviceCaps))
if (SupportsFormat<DXGI_FORMAT_B4G4R4A4_UNORM,false>(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else if (SupportsFormat<DXGI_FORMAT_B4G4R4A4_UNORM,true>(renderer11DeviceCaps))
else if (SupportsFormat<DXGI_FORMAT_B4G4R4A4_UNORM,true>(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_B4G4R4A4_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -2090,58 +2215,66 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA8I:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_SINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA8UI:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UINT,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_RGBA8_SNORM:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_SNORM,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_SRGB8:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB,
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>,
deviceCaps);
return textureFormat;
}
case GL_SRGB8_ALPHA8:
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_R8G8B8A8_UNORM_SRGB,
nullptr);
nullptr,
deviceCaps);
return textureFormat;
}
case GL_STENCIL_INDEX8:
{
if (OnlyFL10Plus(renderer11DeviceCaps))
if (OnlyFL10Plus(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10,
nullptr);
ANGLE_FORMAT_D24_UNORM_S8_UINT,
nullptr,
deviceCaps);
return textureFormat;
}
else if (OnlyFL9_3(renderer11DeviceCaps))
else if (OnlyFL9_3(deviceCaps))
{
static const TextureFormat textureFormat(internalFormat,
ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3,
nullptr);
ANGLE_FORMAT_D24_UNORM_S8_UINT,
nullptr,
deviceCaps);
return textureFormat;
}
else
......@@ -2156,7 +2289,7 @@ const TextureFormat &GetTextureFormatInfo(GLenum internalFormat,
}
// clang-format on
static const TextureFormat defaultInfo(GL_NONE, ANGLE_FORMAT_NONE, nullptr);
static const TextureFormat defaultInfo(GL_NONE, ANGLE_FORMAT_NONE, nullptr, deviceCaps);
return defaultInfo;
} // GetTextureFormatInfo
......
......@@ -22,12 +22,10 @@ enum ANGLEFormat
ANGLE_FORMAT_BC1_UNORM,
ANGLE_FORMAT_BC2_UNORM,
ANGLE_FORMAT_BC3_UNORM,
ANGLE_FORMAT_D16_UNORM_FL10,
ANGLE_FORMAT_D16_UNORM_FL9_3,
ANGLE_FORMAT_D24_UNORM_S8_UINT_FL10,
ANGLE_FORMAT_D24_UNORM_S8_UINT_FL9_3,
ANGLE_FORMAT_D16_UNORM,
ANGLE_FORMAT_D24_UNORM_S8_UINT,
ANGLE_FORMAT_D32_FLOAT,
ANGLE_FORMAT_D32_FLOAT_S8X24_UINT_FL10,
ANGLE_FORMAT_D32_FLOAT_S8X24_UINT,
ANGLE_FORMAT_NONE,
ANGLE_FORMAT_R10G10B10A2_UINT,
ANGLE_FORMAT_R10G10B10A2_UNORM,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment