@@ -2597,6 +2597,182 @@ size_t GetVertexFormatSize(angle::FormatID vertexFormatID)
25972597 }
25982598}
25992599
2600+ angle::FormatID ConvertFormatSignedness (const angle::Format &format)
2601+ {
2602+ switch (format.id )
2603+ {
2604+ // 1 byte signed to unsigned
2605+ case angle::FormatID::R8_SINT:
2606+ return angle::FormatID::R8_UINT;
2607+ case angle::FormatID::R8_SNORM:
2608+ return angle::FormatID::R8_UNORM;
2609+ case angle::FormatID::R8_SSCALED:
2610+ return angle::FormatID::R8_USCALED;
2611+ case angle::FormatID::R8G8_SINT:
2612+ return angle::FormatID::R8G8_UINT;
2613+ case angle::FormatID::R8G8_SNORM:
2614+ return angle::FormatID::R8G8_UNORM;
2615+ case angle::FormatID::R8G8_SSCALED:
2616+ return angle::FormatID::R8G8_USCALED;
2617+ case angle::FormatID::R8G8B8_SINT:
2618+ return angle::FormatID::R8G8B8_UINT;
2619+ case angle::FormatID::R8G8B8_SNORM:
2620+ return angle::FormatID::R8G8B8_UNORM;
2621+ case angle::FormatID::R8G8B8_SSCALED:
2622+ return angle::FormatID::R8G8B8_USCALED;
2623+ case angle::FormatID::R8G8B8A8_SINT:
2624+ return angle::FormatID::R8G8B8A8_UINT;
2625+ case angle::FormatID::R8G8B8A8_SNORM:
2626+ return angle::FormatID::R8G8B8A8_UNORM;
2627+ case angle::FormatID::R8G8B8A8_SSCALED:
2628+ return angle::FormatID::R8G8B8A8_USCALED;
2629+ // 1 byte unsigned to signed
2630+ case angle::FormatID::R8_UINT:
2631+ return angle::FormatID::R8_SINT;
2632+ case angle::FormatID::R8_UNORM:
2633+ return angle::FormatID::R8_SNORM;
2634+ case angle::FormatID::R8_USCALED:
2635+ return angle::FormatID::R8_SSCALED;
2636+ case angle::FormatID::R8G8_UINT:
2637+ return angle::FormatID::R8G8_SINT;
2638+ case angle::FormatID::R8G8_UNORM:
2639+ return angle::FormatID::R8G8_SNORM;
2640+ case angle::FormatID::R8G8_USCALED:
2641+ return angle::FormatID::R8G8_SSCALED;
2642+ case angle::FormatID::R8G8B8_UINT:
2643+ return angle::FormatID::R8G8B8_SINT;
2644+ case angle::FormatID::R8G8B8_UNORM:
2645+ return angle::FormatID::R8G8B8_SNORM;
2646+ case angle::FormatID::R8G8B8_USCALED:
2647+ return angle::FormatID::R8G8B8_SSCALED;
2648+ case angle::FormatID::R8G8B8A8_UINT:
2649+ return angle::FormatID::R8G8B8A8_SINT;
2650+ case angle::FormatID::R8G8B8A8_UNORM:
2651+ return angle::FormatID::R8G8B8A8_SNORM;
2652+ case angle::FormatID::R8G8B8A8_USCALED:
2653+ return angle::FormatID::R8G8B8A8_SSCALED;
2654+ // 2 byte signed to unsigned
2655+ case angle::FormatID::R16_SINT:
2656+ return angle::FormatID::R16_UINT;
2657+ case angle::FormatID::R16_SNORM:
2658+ return angle::FormatID::R16_UNORM;
2659+ case angle::FormatID::R16_SSCALED:
2660+ return angle::FormatID::R16_USCALED;
2661+ case angle::FormatID::R16G16_SINT:
2662+ return angle::FormatID::R16G16_UINT;
2663+ case angle::FormatID::R16G16_SNORM:
2664+ return angle::FormatID::R16G16_UNORM;
2665+ case angle::FormatID::R16G16_SSCALED:
2666+ return angle::FormatID::R16G16_USCALED;
2667+ case angle::FormatID::R16G16B16_SINT:
2668+ return angle::FormatID::R16G16B16_UINT;
2669+ case angle::FormatID::R16G16B16_SNORM:
2670+ return angle::FormatID::R16G16B16_UNORM;
2671+ case angle::FormatID::R16G16B16_SSCALED:
2672+ return angle::FormatID::R16G16B16_USCALED;
2673+ case angle::FormatID::R16G16B16A16_SINT:
2674+ return angle::FormatID::R16G16B16A16_UINT;
2675+ case angle::FormatID::R16G16B16A16_SNORM:
2676+ return angle::FormatID::R16G16B16A16_UNORM;
2677+ case angle::FormatID::R16G16B16A16_SSCALED:
2678+ return angle::FormatID::R16G16B16A16_USCALED;
2679+ // 2 byte unsigned to signed
2680+ case angle::FormatID::R16_UINT:
2681+ return angle::FormatID::R16_SINT;
2682+ case angle::FormatID::R16_UNORM:
2683+ return angle::FormatID::R16_SNORM;
2684+ case angle::FormatID::R16_USCALED:
2685+ return angle::FormatID::R16_SSCALED;
2686+ case angle::FormatID::R16G16_UINT:
2687+ return angle::FormatID::R16G16_SINT;
2688+ case angle::FormatID::R16G16_UNORM:
2689+ return angle::FormatID::R16G16_SNORM;
2690+ case angle::FormatID::R16G16_USCALED:
2691+ return angle::FormatID::R16G16_SSCALED;
2692+ case angle::FormatID::R16G16B16_UINT:
2693+ return angle::FormatID::R16G16B16_SINT;
2694+ case angle::FormatID::R16G16B16_UNORM:
2695+ return angle::FormatID::R16G16B16_SNORM;
2696+ case angle::FormatID::R16G16B16_USCALED:
2697+ return angle::FormatID::R16G16B16_SSCALED;
2698+ case angle::FormatID::R16G16B16A16_UINT:
2699+ return angle::FormatID::R16G16B16A16_SINT;
2700+ case angle::FormatID::R16G16B16A16_UNORM:
2701+ return angle::FormatID::R16G16B16A16_SNORM;
2702+ case angle::FormatID::R16G16B16A16_USCALED:
2703+ return angle::FormatID::R16G16B16A16_SSCALED;
2704+ // 4 byte signed to unsigned
2705+ case angle::FormatID::R32_SINT:
2706+ return angle::FormatID::R32_UINT;
2707+ case angle::FormatID::R32_SNORM:
2708+ return angle::FormatID::R32_UNORM;
2709+ case angle::FormatID::R32_SSCALED:
2710+ return angle::FormatID::R32_USCALED;
2711+ case angle::FormatID::R32G32_SINT:
2712+ return angle::FormatID::R32G32_UINT;
2713+ case angle::FormatID::R32G32_SNORM:
2714+ return angle::FormatID::R32G32_UNORM;
2715+ case angle::FormatID::R32G32_SSCALED:
2716+ return angle::FormatID::R32G32_USCALED;
2717+ case angle::FormatID::R32G32B32_SINT:
2718+ return angle::FormatID::R32G32B32_UINT;
2719+ case angle::FormatID::R32G32B32_SNORM:
2720+ return angle::FormatID::R32G32B32_UNORM;
2721+ case angle::FormatID::R32G32B32_SSCALED:
2722+ return angle::FormatID::R32G32B32_USCALED;
2723+ case angle::FormatID::R32G32B32A32_SINT:
2724+ return angle::FormatID::R32G32B32A32_UINT;
2725+ case angle::FormatID::R32G32B32A32_SNORM:
2726+ return angle::FormatID::R32G32B32A32_UNORM;
2727+ case angle::FormatID::R32G32B32A32_SSCALED:
2728+ return angle::FormatID::R32G32B32A32_USCALED;
2729+ // 4 byte unsigned to signed
2730+ case angle::FormatID::R32_UINT:
2731+ return angle::FormatID::R32_SINT;
2732+ case angle::FormatID::R32_UNORM:
2733+ return angle::FormatID::R32_SNORM;
2734+ case angle::FormatID::R32_USCALED:
2735+ return angle::FormatID::R32_SSCALED;
2736+ case angle::FormatID::R32G32_UINT:
2737+ return angle::FormatID::R32G32_SINT;
2738+ case angle::FormatID::R32G32_UNORM:
2739+ return angle::FormatID::R32G32_SNORM;
2740+ case angle::FormatID::R32G32_USCALED:
2741+ return angle::FormatID::R32G32_SSCALED;
2742+ case angle::FormatID::R32G32B32_UINT:
2743+ return angle::FormatID::R32G32B32_SINT;
2744+ case angle::FormatID::R32G32B32_UNORM:
2745+ return angle::FormatID::R32G32B32_SNORM;
2746+ case angle::FormatID::R32G32B32_USCALED:
2747+ return angle::FormatID::R32G32B32_SSCALED;
2748+ case angle::FormatID::R32G32B32A32_UINT:
2749+ return angle::FormatID::R32G32B32A32_SINT;
2750+ case angle::FormatID::R32G32B32A32_UNORM:
2751+ return angle::FormatID::R32G32B32A32_SNORM;
2752+ case angle::FormatID::R32G32B32A32_USCALED:
2753+ return angle::FormatID::R32G32B32A32_SSCALED;
2754+ // 1010102 signed to unsigned
2755+ case angle::FormatID::R10G10B10A2_SINT:
2756+ return angle::FormatID::R10G10B10A2_UINT;
2757+ case angle::FormatID::R10G10B10A2_SSCALED:
2758+ return angle::FormatID::R10G10B10A2_USCALED;
2759+ case angle::FormatID::R10G10B10A2_SNORM:
2760+ return angle::FormatID::R10G10B10A2_UNORM;
2761+ // 1010102 unsigned to signed
2762+ case angle::FormatID::R10G10B10A2_UINT:
2763+ return angle::FormatID::R10G10B10A2_SINT;
2764+ case angle::FormatID::R10G10B10A2_USCALED:
2765+ return angle::FormatID::R10G10B10A2_SSCALED;
2766+ case angle::FormatID::R10G10B10A2_UNORM:
2767+ return angle::FormatID::R10G10B10A2_SNORM;
2768+ default :
2769+ UNREACHABLE ();
2770+ }
2771+ #if !UNREACHABLE_IS_NORETURN
2772+ return angle::FormatID::NONE;
2773+ #endif
2774+ }
2775+
26002776bool ValidES3InternalFormat (GLenum internalFormat)
26012777{
26022778 const InternalFormatInfoMap &formatMap = GetInternalFormatMap ();
0 commit comments