Commit dd152e1b by Alexis Hetu Committed by Alexis Hétu

Replaced sw::Format with VkFormat

To avoid format conversion issues and simplify the code, sw::Format was replaced with VkFormat. sw::Format only contained formats with exact 1:1 correspondence with an equivalent VkFormat, with the exception of YUV formats, which will require a minor adjustment in SamplerCore::sampleTexel(). Bug b/119620767 Change-Id: I8124cbc40e1031a5b233156a10e87c35f1334eef Reviewed-on: https://swiftshader-review.googlesource.com/c/22549Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent b16f9897
......@@ -63,8 +63,8 @@ namespace sw
return memcmp(this, &state, sizeof(State)) == 0;
}
Format sourceFormat;
Format destFormat;
VkFormat sourceFormat;
VkFormat destFormat;
int destSamples;
};
......@@ -94,18 +94,18 @@ namespace sw
Blitter();
virtual ~Blitter();
void clear(void *pixel, sw::Format format, Surface *dest, const SliceRect &dRect, unsigned int rgbaMask);
void clear(void *pixel, VkFormat format, Surface *dest, const SliceRect &dRect, unsigned int rgbaMask);
void blit(Surface *source, const SliceRectF &sRect, Surface *dest, const SliceRect &dRect, const Options &options);
void blit3D(Surface *source, Surface *dest);
private:
bool fastClear(void *pixel, sw::Format format, Surface *dest, const SliceRect &dRect, unsigned int rgbaMask);
bool fastClear(void *pixel, VkFormat format, Surface *dest, const SliceRect &dRect, unsigned int rgbaMask);
bool read(Float4 &color, Pointer<Byte> element, const State &state);
bool write(Float4 &color, Pointer<Byte> element, const State &state);
bool read(Int4 &color, Pointer<Byte> element, const State &state);
bool write(Int4 &color, Pointer<Byte> element, const State &state);
static bool GetScale(float4& scale, Format format);
static bool GetScale(float4& scale, VkFormat format);
static bool ApplyScaleAndClamp(Float4 &value, const State &state, bool preScaled = false);
static Int ComputeOffset(Int &x, Int &y, Int &pitchB, int bytes, bool quadLayout);
static Float4 LinearToSRGB(Float4 &color);
......
......@@ -740,7 +740,7 @@ namespace sw
return renderTarget[0] ? renderTarget[0]->getMultiSampleCount() : 1;
}
Format Context::renderTargetInternalFormat(int index)
VkFormat Context::renderTargetInternalFormat(int index)
{
if(renderTarget[index])
{
......@@ -748,7 +748,7 @@ namespace sw
}
else
{
return FORMAT_NULL;
return VK_FORMAT_UNDEFINED;
}
}
......@@ -759,7 +759,7 @@ namespace sw
int Context::colorWriteActive(int index)
{
if(!renderTarget[index] || renderTarget[index]->getInternalFormat() == FORMAT_NULL)
if(!renderTarget[index] || renderTarget[index]->getInternalFormat() == VK_FORMAT_UNDEFINED)
{
return 0;
}
......
......@@ -305,7 +305,7 @@ namespace sw
Sampler sampler[TOTAL_IMAGE_UNITS];
Format renderTargetInternalFormat(int index);
VkFormat renderTargetInternalFormat(int index);
int colorWriteActive();
int colorWriteActive(int index);
bool colorUsed();
......
......@@ -73,7 +73,7 @@ namespace sw
BlendOperation blendOperationAlpha : BITS(BLENDOP_LAST);
unsigned int colorWriteMask : RENDERTARGETS * 4; // Four component bit masks
Format targetFormat[RENDERTARGETS];
VkFormat targetFormat[RENDERTARGETS];
bool writeSRGB : 1;
unsigned int multiSample : 3;
unsigned int multiSampleMask : 4;
......
......@@ -598,7 +598,7 @@ namespace sw
}
}
void Renderer::clear(void *value, Format format, Surface *dest, const Rect &clearRect, unsigned int rgbaMask)
void Renderer::clear(void *value, VkFormat format, Surface *dest, const Rect &clearRect, unsigned int rgbaMask)
{
blitter->clear(value, format, dest, clearRect, rgbaMask);
}
......
......@@ -262,7 +262,7 @@ namespace sw
void draw(DrawType drawType, unsigned int indexOffset, unsigned int count, bool update = true);
void clear(void *value, Format format, Surface *dest, const Rect &rect, unsigned int rgbaMask);
void clear(void *value, VkFormat format, Surface *dest, const Rect &rect, unsigned int rgbaMask);
void blit(Surface *source, const SliceRectF &sRect, Surface *dest, const SliceRect &dRect, bool filter, bool isStencil = false, bool sRGBconversion = true);
void blit3D(Surface *source, Surface *dest);
......
......@@ -49,8 +49,8 @@ namespace sw
}
}
externalTextureFormat = FORMAT_NULL;
internalTextureFormat = FORMAT_NULL;
externalTextureFormat = VK_FORMAT_UNDEFINED;
internalTextureFormat = VK_FORMAT_UNDEFINED;
textureType = TEXTURE_NULL;
textureFilter = FILTER_LINEAR;
......@@ -222,9 +222,7 @@ namespace sw
mipmap.sliceP[2] = sliceP;
mipmap.sliceP[3] = sliceP;
if(internalTextureFormat == FORMAT_YV12_BT601 ||
internalTextureFormat == FORMAT_YV12_BT709 ||
internalTextureFormat == FORMAT_YV12_JFIF)
if(internalTextureFormat == VK_FORMAT_G8_B8R8_2PLANE_420_UNORM)
{
unsigned int YStride = pitchP;
unsigned int YSize = YStride * height;
......
......@@ -147,7 +147,7 @@ namespace sw
State();
TextureType textureType : BITS(TEXTURE_LAST);
Format textureFormat : BITS(FORMAT_LAST);
VkFormat textureFormat : BITS(VK_FORMAT_END_RANGE);
FilterType textureFilter : BITS(FILTER_LAST);
AddressingMode addressingModeU : BITS(ADDRESSING_LAST);
AddressingMode addressingModeV : BITS(ADDRESSING_LAST);
......@@ -214,8 +214,8 @@ namespace sw
AddressingMode getAddressingModeW() const;
CompareFunc getCompareFunc() const;
Format externalTextureFormat;
Format internalTextureFormat;
VkFormat externalTextureFormat;
VkFormat internalTextureFormat;
TextureType textureType;
FilterType textureFilter;
......
......@@ -78,7 +78,7 @@ namespace sw
for(int i = 0; i < RENDERTARGETS; i++)
{
if(state.targetFormat[i] != FORMAT_NULL)
if(state.targetFormat[i] != VK_FORMAT_UNDEFINED)
{
oC[i] = Vector4f(0.0f, 0.0f, 0.0f, 0.0f);
}
......@@ -629,20 +629,20 @@ namespace sw
switch(state.targetFormat[index])
{
case FORMAT_R5G6B5:
case FORMAT_A8R8G8B8:
case FORMAT_A8B8G8R8:
case FORMAT_SRGB8_A8:
case FORMAT_G8R8:
case FORMAT_R8:
case FORMAT_G16R16:
case FORMAT_A16B16G16R16:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
case VK_FORMAT_B8G8R8A8_UNORM:
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
case VK_FORMAT_R8G8_UNORM:
case VK_FORMAT_R8_UNORM:
case VK_FORMAT_R16G16_UNORM:
case VK_FORMAT_R16G16B16A16_UNORM:
for(unsigned int q = 0; q < state.multiSample; q++)
{
Pointer<Byte> buffer = cBuffer[index] + q * *Pointer<Int>(data + OFFSET(DrawData, colorSliceB[index]));
Vector4s color;
if(state.targetFormat[index] == FORMAT_R5G6B5)
if(state.targetFormat[index] == VK_FORMAT_R5G6B5_UNORM_PACK16)
{
color.x = UShort4(c[index].x * Float4(0xFBFF), false);
color.y = UShort4(c[index].y * Float4(0xFDFF), false);
......@@ -665,27 +665,27 @@ namespace sw
}
}
break;
case FORMAT_R32F:
case FORMAT_G32R32F:
case FORMAT_A32B32G32R32F:
case FORMAT_R32I:
case FORMAT_G32R32I:
case FORMAT_A32B32G32R32I:
case FORMAT_R32UI:
case FORMAT_G32R32UI:
case FORMAT_A32B32G32R32UI:
case FORMAT_R16I:
case FORMAT_G16R16I:
case FORMAT_A16B16G16R16I:
case FORMAT_R16UI:
case FORMAT_G16R16UI:
case FORMAT_A16B16G16R16UI:
case FORMAT_R8I:
case FORMAT_G8R8I:
case FORMAT_A8B8G8R8I:
case FORMAT_R8UI:
case FORMAT_G8R8UI:
case FORMAT_A8B8G8R8UI:
case VK_FORMAT_R32_SFLOAT:
case VK_FORMAT_R32G32_SFLOAT:
case VK_FORMAT_R32G32B32A32_SFLOAT:
case VK_FORMAT_R32_SINT:
case VK_FORMAT_R32G32_SINT:
case VK_FORMAT_R32G32B32A32_SINT:
case VK_FORMAT_R32_UINT:
case VK_FORMAT_R32G32_UINT:
case VK_FORMAT_R32G32B32A32_UINT:
case VK_FORMAT_R16_SINT:
case VK_FORMAT_R16G16_SINT:
case VK_FORMAT_R16G16B16A16_SINT:
case VK_FORMAT_R16_UINT:
case VK_FORMAT_R16G16_UINT:
case VK_FORMAT_R16G16B16A16_UINT:
case VK_FORMAT_R8_SINT:
case VK_FORMAT_R8G8_SINT:
case VK_FORMAT_R8G8B8A8_SINT:
case VK_FORMAT_R8_UINT:
case VK_FORMAT_R8G8_UINT:
case VK_FORMAT_R8G8B8A8_UINT:
for(unsigned int q = 0; q < state.multiSample; q++)
{
Pointer<Byte> buffer = cBuffer[index] + q * *Pointer<Int>(data + OFFSET(DrawData, colorSliceB[index]));
......@@ -765,42 +765,42 @@ namespace sw
switch(state.targetFormat[index])
{
case FORMAT_NULL:
case VK_FORMAT_UNDEFINED:
break;
case FORMAT_R5G6B5:
case FORMAT_A8R8G8B8:
case FORMAT_A8B8G8R8:
case FORMAT_SRGB8_A8:
case FORMAT_G8R8:
case FORMAT_R8:
case FORMAT_G16R16:
case FORMAT_A16B16G16R16:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
case VK_FORMAT_B8G8R8A8_UNORM:
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
case VK_FORMAT_R8G8_UNORM:
case VK_FORMAT_R8_UNORM:
case VK_FORMAT_R16G16_UNORM:
case VK_FORMAT_R16G16B16A16_UNORM:
oC[index].x = Max(oC[index].x, Float4(0.0f)); oC[index].x = Min(oC[index].x, Float4(1.0f));
oC[index].y = Max(oC[index].y, Float4(0.0f)); oC[index].y = Min(oC[index].y, Float4(1.0f));
oC[index].z = Max(oC[index].z, Float4(0.0f)); oC[index].z = Min(oC[index].z, Float4(1.0f));
oC[index].w = Max(oC[index].w, Float4(0.0f)); oC[index].w = Min(oC[index].w, Float4(1.0f));
break;
case FORMAT_R32F:
case FORMAT_G32R32F:
case FORMAT_A32B32G32R32F:
case FORMAT_R32I:
case FORMAT_G32R32I:
case FORMAT_A32B32G32R32I:
case FORMAT_R32UI:
case FORMAT_G32R32UI:
case FORMAT_A32B32G32R32UI:
case FORMAT_R16I:
case FORMAT_G16R16I:
case FORMAT_A16B16G16R16I:
case FORMAT_R16UI:
case FORMAT_G16R16UI:
case FORMAT_A16B16G16R16UI:
case FORMAT_R8I:
case FORMAT_G8R8I:
case FORMAT_A8B8G8R8I:
case FORMAT_R8UI:
case FORMAT_G8R8UI:
case FORMAT_A8B8G8R8UI:
case VK_FORMAT_R32_SFLOAT:
case VK_FORMAT_R32G32_SFLOAT:
case VK_FORMAT_R32G32B32A32_SFLOAT:
case VK_FORMAT_R32_SINT:
case VK_FORMAT_R32G32_SINT:
case VK_FORMAT_R32G32B32A32_SINT:
case VK_FORMAT_R32_UINT:
case VK_FORMAT_R32G32_UINT:
case VK_FORMAT_R32G32B32A32_UINT:
case VK_FORMAT_R16_SINT:
case VK_FORMAT_R16G16_SINT:
case VK_FORMAT_R16G16B16A16_SINT:
case VK_FORMAT_R16_UINT:
case VK_FORMAT_R16G16_UINT:
case VK_FORMAT_R16G16B16A16_UINT:
case VK_FORMAT_R8_SINT:
case VK_FORMAT_R8G8_SINT:
case VK_FORMAT_R8G8B8A8_SINT:
case VK_FORMAT_R8_UINT:
case VK_FORMAT_R8G8_UINT:
case VK_FORMAT_R8G8B8A8_UINT:
break;
default:
ASSERT(false);
......
......@@ -40,7 +40,7 @@ namespace sw
this->width = width;
this->height = height;
format = FORMAT_A8R8G8B8;
format = VK_FORMAT_B8G8R8A8_UNORM;
stride = 0;
windowed = !fullscreen || forceWindowed;
......@@ -187,13 +187,13 @@ namespace sw
switch(state.destFormat)
{
case FORMAT_A8R8G8B8:
case VK_FORMAT_B8G8R8A8_UNORM:
{
Int x = x0;
switch(state.sourceFormat)
{
case FORMAT_A8R8G8B8:
case VK_FORMAT_B8G8R8A8_UNORM:
For(, x < width - 3, x += 4)
{
*Pointer<Int4>(d, 1) = *Pointer<Int4>(s, sStride % 16 ? 1 : 16);
......@@ -202,7 +202,7 @@ namespace sw
d += 4 * dBytes;
}
break;
case FORMAT_A8B8G8R8:
case VK_FORMAT_R8G8B8A8_UNORM:
For(, x < width - 3, x += 4)
{
Int4 bgra = *Pointer<Int4>(s, sStride % 16 ? 1 : 16);
......@@ -215,7 +215,7 @@ namespace sw
d += 4 * dBytes;
}
break;
case FORMAT_A16B16G16R16:
case VK_FORMAT_R16G16B16A16_UNORM:
For(, x < width - 1, x += 2)
{
Short4 c0 = As<UShort4>(Swizzle(*Pointer<Short4>(s + 0), 0xC6)) >> 8;
......@@ -227,7 +227,7 @@ namespace sw
d += 2 * dBytes;
}
break;
case FORMAT_R5G6B5:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
For(, x < width - 3, x += 4)
{
Int4 rgb = Int4(*Pointer<Short4>(s));
......@@ -249,10 +249,10 @@ namespace sw
{
switch(state.sourceFormat)
{
case FORMAT_A8R8G8B8:
case VK_FORMAT_B8G8R8A8_UNORM:
*Pointer<Int>(d) = *Pointer<Int>(s);
break;
case FORMAT_A8B8G8R8:
case VK_FORMAT_R8G8B8A8_UNORM:
{
Int rgba = *Pointer<Int>(s);
......@@ -261,14 +261,14 @@ namespace sw
(rgba & Int(0xFF00FF00));
}
break;
case FORMAT_A16B16G16R16:
case VK_FORMAT_R16G16B16A16_UNORM:
{
Short4 c = As<UShort4>(Swizzle(*Pointer<Short4>(s), 0xC6)) >> 8;
*Pointer<Int>(d) = Int(As<Int2>(PackUnsigned(c, c)));
}
break;
case FORMAT_R5G6B5:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
{
Int rgb = Int(*Pointer<Short>(s));
......@@ -288,14 +288,14 @@ namespace sw
}
}
break;
case FORMAT_A8B8G8R8:
case FORMAT_SRGB8_A8:
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
{
Int x = x0;
switch(state.sourceFormat)
{
case FORMAT_A8B8G8R8:
case VK_FORMAT_R8G8B8A8_UNORM:
For(, x < width - 3, x += 4)
{
*Pointer<Int4>(d, 1) = *Pointer<Int4>(s, sStride % 16 ? 1 : 16);
......@@ -304,7 +304,7 @@ namespace sw
d += 4 * dBytes;
}
break;
case FORMAT_A8R8G8B8:
case VK_FORMAT_B8G8R8A8_UNORM:
For(, x < width - 3, x += 4)
{
Int4 bgra = *Pointer<Int4>(s, sStride % 16 ? 1 : 16);
......@@ -317,7 +317,7 @@ namespace sw
d += 4 * dBytes;
}
break;
case FORMAT_A16B16G16R16:
case VK_FORMAT_R16G16B16A16_UNORM:
For(, x < width - 1, x += 2)
{
Short4 c0 = *Pointer<UShort4>(s + 0) >> 8;
......@@ -329,7 +329,7 @@ namespace sw
d += 2 * dBytes;
}
break;
case FORMAT_R5G6B5:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
For(, x < width - 3, x += 4)
{
Int4 rgb = Int4(*Pointer<Short4>(s));
......@@ -352,10 +352,10 @@ namespace sw
{
switch(state.sourceFormat)
{
case FORMAT_A8B8G8R8:
case VK_FORMAT_R8G8B8A8_UNORM:
*Pointer<Int>(d) = *Pointer<Int>(s);
break;
case FORMAT_A8R8G8B8:
case VK_FORMAT_B8G8R8A8_UNORM:
{
Int bgra = *Pointer<Int>(s);
*Pointer<Int>(d) = ((bgra & Int(0x00FF0000)) >> 16) |
......@@ -363,14 +363,14 @@ namespace sw
(bgra & Int(0xFF00FF00));
}
break;
case FORMAT_A16B16G16R16:
case VK_FORMAT_R16G16B16A16_UNORM:
{
Short4 c = *Pointer<UShort4>(s) >> 8;
*Pointer<Int>(d) = Int(As<Int2>(PackUnsigned(c, c)));
}
break;
case FORMAT_R5G6B5:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
{
Int rgb = Int(*Pointer<Short>(s));
......@@ -390,13 +390,13 @@ namespace sw
}
}
break;
case FORMAT_R5G6B5:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
{
For(Int x = x0, x < width, x++)
{
switch(state.sourceFormat)
{
case FORMAT_A8R8G8B8:
case VK_FORMAT_B8G8R8A8_UNORM:
{
Int c = *Pointer<Int>(s);
......@@ -405,7 +405,7 @@ namespace sw
(c & 0x000000F8) >> 3);
}
break;
case FORMAT_A8B8G8R8:
case VK_FORMAT_R8G8B8A8_UNORM:
{
Int c = *Pointer<Int>(s);
......@@ -414,7 +414,7 @@ namespace sw
(c & 0x000000F8) << 8);
}
break;
case FORMAT_A16B16G16R16:
case VK_FORMAT_R16G16B16A16_UNORM:
{
Short4 cc = *Pointer<UShort4>(s) >> 8;
Int c = Int(As<Int2>(PackUnsigned(cc, cc)));
......@@ -424,7 +424,7 @@ namespace sw
(c & 0x000000F8) << 8);
}
break;
case FORMAT_R5G6B5:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
*Pointer<Short>(d) = *Pointer<Short>(s);
break;
default:
......@@ -488,16 +488,16 @@ namespace sw
switch(state.sourceFormat)
{
case FORMAT_A8R8G8B8:
case VK_FORMAT_B8G8R8A8_UNORM:
c2 = Unpack(*Pointer<Byte4>(s));
break;
case FORMAT_A8B8G8R8:
case VK_FORMAT_R8G8B8A8_UNORM:
c2 = Swizzle(Unpack(*Pointer<Byte4>(s)), 0xC6);
break;
case FORMAT_A16B16G16R16:
case VK_FORMAT_R16G16B16A16_UNORM:
c2 = Swizzle(*Pointer<Short4>(s), 0xC6);
break;
case FORMAT_R5G6B5:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
{
Int rgb(*Pointer<Short>(s));
rgb = 0xFF000000 |
......@@ -524,18 +524,18 @@ namespace sw
switch(state.destFormat)
{
case FORMAT_A8R8G8B8:
case VK_FORMAT_B8G8R8A8_UNORM:
*Pointer<Byte4>(d) = Byte4(PackUnsigned(c1, c1));
break;
case FORMAT_A8B8G8R8:
case FORMAT_SRGB8_A8:
case VK_FORMAT_R8G8B8A8_UNORM:
case VK_FORMAT_R8G8B8A8_SRGB:
{
c1 = Swizzle(c1, 0xC6);
*Pointer<Byte4>(d) = Byte4(PackUnsigned(c1, c1));
}
break;
case FORMAT_R5G6B5:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
{
Int c = Int(As<Int2>(PackUnsigned(c1, c1)));
......
......@@ -29,8 +29,8 @@ namespace sw
{
int width;
int height;
Format destFormat;
Format sourceFormat;
VkFormat destFormat;
VkFormat sourceFormat;
int destStride;
int sourceStride;
int cursorWidth;
......@@ -65,7 +65,7 @@ namespace sw
int width;
int height;
int stride;
Format format;
VkFormat format;
private:
void copyLocked();
......
......@@ -100,13 +100,13 @@ namespace sw
switch(buffer->format)
{
case HAL_PIXEL_FORMAT_RGB_565: format = FORMAT_R5G6B5; break;
case HAL_PIXEL_FORMAT_RGBA_8888: format = FORMAT_A8B8G8R8; break;
case HAL_PIXEL_FORMAT_RGB_565: format = VK_FORMAT_R5G6B5_UNORM_PACK16; break;
case HAL_PIXEL_FORMAT_RGBA_8888: format = VK_FORMAT_R8G8B8A8_UNORM; break;
#if ANDROID_PLATFORM_SDK_VERSION > 16
case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: format = FORMAT_X8B8G8R8; break;
#endif
case HAL_PIXEL_FORMAT_RGBX_8888: format = FORMAT_X8B8G8R8; break;
case HAL_PIXEL_FORMAT_BGRA_8888: format = FORMAT_A8R8G8B8; break;
case HAL_PIXEL_FORMAT_BGRA_8888: format = VK_FORMAT_B8G8R8A8_UNORM; break;
case HAL_PIXEL_FORMAT_RGB_888:
// Frame buffers are expected to have 16-bit or 32-bit colors, not 24-bit.
TRACE("Unsupported frame buffer format RGB_888"); ASSERT(false);
......@@ -114,7 +114,7 @@ namespace sw
break;
default:
TRACE("Unsupported frame buffer format %d", buffer->format); ASSERT(false);
format = FORMAT_NULL;
format = VK_FORMAT_UNDEFINED;
break;
}
......
......@@ -106,12 +106,12 @@ namespace sw
switch(ddsd.ddpfPixelFormat.dwRGBBitCount)
{
case 32: format = FORMAT_A8R8G8B8; break;
case 16: format = FORMAT_R5G6B5; break;
default: format = FORMAT_NULL; break;
case 32: format = VK_FORMAT_B8G8R8A8_UNORM; break;
case 16: format = VK_FORMAT_R5G6B5_UNORM_PACK16; break;
default: format = VK_FORMAT_UNDEFINED; break;
}
if((result != DD_OK && result != DDERR_PRIMARYSURFACEALREADYEXISTS) || (format == FORMAT_NULL))
if((result != DD_OK && result != DDERR_PRIMARYSURFACEALREADYEXISTS) || (format == VK_FORMAT_UNDEFINED))
{
assert(!"Failed to initialize graphics: Incompatible display mode.");
}
......@@ -205,12 +205,12 @@ namespace sw
do
{
format = FORMAT_A8R8G8B8;
format = VK_FORMAT_B8G8R8A8_UNORM;
result = directDraw->SetDisplayMode(width, height, 32);
if(result == DDERR_INVALIDMODE)
{
format = FORMAT_R5G6B5;
format = VK_FORMAT_R5G6B5_UNORM_PACK16;
result = directDraw->SetDisplayMode(width, height, 16);
if(result == DDERR_INVALIDMODE)
......
......@@ -37,7 +37,7 @@ namespace sw
init(this->windowHandle);
format = FORMAT_A8R8G8B8;
format = VK_FORMAT_B8G8R8A8_UNORM;
}
FrameBufferGDI::~FrameBufferGDI()
......
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