示例#1
0
def json_to_table_data(internal_format, format_name, prefix, json):

    table_data = ""

    parsed = {
        "space": "        ",
        "internalFormat": internal_format,
        "formatName": format_name,
        "texFormat": "DXGI_FORMAT_UNKNOWN",
        "srvFormat": "DXGI_FORMAT_UNKNOWN",
        "uavFormat": "DXGI_FORMAT_UNKNOWN",
        "rtvFormat": "DXGI_FORMAT_UNKNOWN",
        "dsvFormat": "DXGI_FORMAT_UNKNOWN",
        "condition": prefix,
    }

    for k, v in json.iteritems():
        parsed[k] = v

    # Derived values.
    parsed["blitSRVFormat"] = get_blit_srv_format(parsed)
    parsed["swizzleFormat"] = get_swizzle_format_id(internal_format, parsed)
    parsed["initializer"]   = angle_format.get_internal_format_initializer(
        internal_format, parsed["formatName"])

    if len(prefix) > 0:
        return split_format_entry_template.format(**parsed)
    else:
        return format_entry_template.format(**parsed)
示例#2
0
 def gen_format_assign_code(actual_angle_format, angle_to_mtl_map):
     return image_format_assign_template1.format(
         actual_angle_format=actual_angle_format,
         mtl_format=angle_to_mtl_map[actual_angle_format] + "LDR",
         init_function=wrap_init_function(
             angle_format_utils.get_internal_format_initializer(
                 gl_format, actual_angle_format)))
示例#3
0
def json_to_table_data(internal_format, format_name, prefix, json):

    table_data = ""

    parsed = {
        "space": "        ",
        "internalFormat": internal_format,
        "formatName": format_name,
        "texFormat": "DXGI_FORMAT_UNKNOWN",
        "srvFormat": "DXGI_FORMAT_UNKNOWN",
        "uavFormat": "DXGI_FORMAT_UNKNOWN",
        "rtvFormat": "DXGI_FORMAT_UNKNOWN",
        "dsvFormat": "DXGI_FORMAT_UNKNOWN",
        "condition": prefix,
    }

    for k, v in json.iteritems():
        parsed[k] = v

    # Derived values.
    parsed["blitSRVFormat"] = get_blit_srv_format(parsed)
    parsed["swizzleFormat"] = get_swizzle_format_id(internal_format, parsed)
    parsed["initializer"] = angle_format.get_internal_format_initializer(
        internal_format, parsed["formatName"])

    if len(prefix) > 0:
        return split_format_entry_template.format(**parsed)
    else:
        return format_entry_template.format(**parsed)
示例#4
0
def gen_format_case(angle, internal_format, vk_map, vk_overrides):

    args = {
        "space": "        ",
        "format_id": angle,
        "internal_format": internal_format
    }

    if (angle not in vk_map and angle not in vk_overrides) or angle == 'NONE':
        return empty_format_entry_template.format(**args)

    if angle in vk_map:
        args["buffer"] = angle
        args["texture"] = angle

    if angle in vk_overrides:
        args.update(vk_overrides[angle])

    assert "buffer" in args, "Missing buffer format for " + angle
    assert "texture" in args, "Missing texture format for " + angle

    args["vk_buffer_format"] = vk_map[args["buffer"]]
    args["vk_texture_format"] = vk_map[args["texture"]]

    args["initializer"] = angle_format.get_internal_format_initializer(
        internal_format, args["texture"])

    return format_entry_template.format(**args)
示例#5
0
def gen_format_case(angle, internal_format, vk_json_data):

    vk_map = vk_json_data["map"]
    vk_overrides = vk_json_data["overrides"]
    vk_fallbacks = vk_json_data["fallbacks"]

    args = {
        "space": "        ",
        "format_id": angle,
        "internal_format": internal_format
    }

    if ((angle not in vk_map) and (angle not in vk_overrides) and
        (angle not in vk_fallbacks)) or angle == 'NONE':
        return empty_format_entry_template.format(**args)

    template = format_entry_template

    if angle in vk_map:
        args["buffer"] = angle
        args["texture"] = angle

    if angle in vk_overrides:
        args.update(vk_overrides[angle])

    if angle in vk_fallbacks:
        template = fallback_format_entry_template
        fallback = vk_fallbacks[angle]
        assert not "buffer" in fallback, "Buffer fallbacks not yet supported"
        assert "texture" in fallback, "Fallback must have a texture fallback"

        args["fallback_texture"] = fallback["texture"]
        args["fallback_vk_texture_format"] = vk_map[fallback["texture"]]
        args[
            "fallback_initializer"] = angle_format.get_internal_format_initializer(
                internal_format, fallback["texture"])

    assert "buffer" in args, "Missing buffer format for " + angle
    assert "texture" in args, "Missing texture format for " + angle

    args["vk_buffer_format"] = vk_map[args["buffer"]]
    args["vk_texture_format"] = vk_map[args["texture"]]

    args["initializer"] = angle_format.get_internal_format_initializer(
        internal_format, args["texture"])

    return template.format(**args)
 def gen_format_assign_code(actual_angle_format, angle_to_mtl_map):
     return image_format_assign_template2.format(
         actual_angle_format=actual_angle_format,
         mtl_format=angle_to_mtl_map[actual_angle_format] + "HDR",
         init_function=angle_format_utils.get_internal_format_initializer(
             gl_format, actual_angle_format),
         actual_angle_format_fallback=actual_angle_format,
         mtl_format_fallback=angle_to_mtl_map[actual_angle_format] + "LDR",
         init_function_fallback=angle_format_utils.
         get_internal_format_initializer(gl_format, actual_angle_format),
         fallback_condition="display->supportsAppleGPUFamily(6)")
示例#7
0
def gen_format_case(angle, internal_format, vk_json_data):
    vk_map = vk_json_data["map"]
    vk_overrides = vk_json_data["overrides"]
    vk_fallbacks = vk_json_data["fallbacks"]
    args = {"format_id": angle}

    if ((angle not in vk_map) and (angle not in vk_overrides) and
        (angle not in vk_fallbacks)) or angle == 'NONE':
        return empty_format_entry_template.format(**args)

    def get_formats_and_template(format, type, basic_template,
                                 fallback_template):
        format = vk_overrides.get(format, {}).get(type, format)
        fallback = vk_fallbacks.get(format, {}).get(type, "NONE")
        if format not in vk_map:
            format = "NONE"
            template = ""
        elif fallback == "NONE":
            template = basic_template
        else:
            template = fallback_template
        return format, fallback, template

    texture_format, texture_fallback, texture_template = get_formats_and_template(
        angle, "texture", texture_basic_template, texture_fallback_template)
    buffer_format, buffer_fallback, buffer_template = get_formats_and_template(
        angle, "buffer", buffer_basic_template, buffer_fallback_template)

    args.update(
        internal_format=internal_format,
        texture_template=texture_template,
        texture=texture_format,
        vk_texture_format=vk_map[texture_format],
        texture_initializer=angle_format.get_internal_format_initializer(
            internal_format, texture_format),
        texture_fallback=texture_fallback,
        vk_texture_format_fallback=vk_map[texture_fallback],
        texture_initializer_fallback=angle_format.
        get_internal_format_initializer(internal_format, texture_fallback),
        buffer_template=buffer_template,
        buffer=buffer_format,
        vk_buffer_format=vk_map[buffer_format],
        vertex_load_function=angle_format.get_vertex_copy_function(
            angle, buffer_format),
        vertex_load_converts='false' if angle == buffer_format else 'true',
        buffer_fallback=buffer_fallback,
        vk_buffer_format_fallback=vk_map[buffer_fallback],
        vertex_load_function_fallback=angle_format.get_vertex_copy_function(
            angle, buffer_fallback),
    )

    return format_entry_template.format(**args).format(**args)
示例#8
0
    def gen_format_assign_code(actual_angle_format, angle_to_mtl_map):
        if actual_angle_format in override_fallbacks:
            actual_angle_format_fallback = override_fallbacks[
                actual_angle_format]
            actual_mtl_format_fallback = angle_to_mtl_map[
                actual_angle_format_fallback]
            init_function_fallback = angle_format_utils.get_internal_format_initializer(
                gl_format, actual_angle_format_fallback)
        else:
            actual_angle_format_fallback = "NONE"
            actual_mtl_format_fallback = "MTLPixelFormatInvalid"
            init_function_fallback = "nullptr"

        return image_format_assign_template2.format(
            actual_angle_format=actual_angle_format,
            mtl_format=angle_to_mtl_map[actual_angle_format],
            init_function=angle_format_utils.get_internal_format_initializer(
                gl_format, actual_angle_format),
            actual_angle_format_fallback=actual_angle_format_fallback,
            mtl_format_fallback=actual_mtl_format_fallback,
            init_function_fallback=init_function_fallback,
            fallback_condition=fallback_condition)
示例#9
0
 def gen_format_assign_code(actual_angle_format, angle_to_mtl_map):
     if actual_angle_format in mac_fallbacks:
         # This format requires fallback when depth24Stencil8PixelFormatSupported flag is false.
         # Fallback format:
         actual_angle_format_fallback = mac_fallbacks[actual_angle_format]
         # return if else block:
         return image_format_assign_template2.format(
             actual_angle_format=actual_angle_format,
             mtl_format=angle_to_mtl_map[actual_angle_format],
             init_function=angle_format_utils.get_internal_format_initializer(
                 gl_format, actual_angle_format),
             actual_angle_format_fallback=actual_angle_format_fallback,
             mtl_format_fallback=angle_to_mtl_map[actual_angle_format_fallback],
             init_function_fallback=angle_format_utils.get_internal_format_initializer(
                 gl_format, actual_angle_format_fallback))
     else:
         # return ordinary block:
         return image_format_assign_template1.format(
             actual_angle_format=actual_angle_format,
             mtl_format=angle_to_mtl_map[actual_angle_format],
             init_function=angle_format_utils.get_internal_format_initializer(
                 gl_format, actual_angle_format))
示例#10
0
def parse_format_case(internal_format, format_name, native_format):

    table_data = ""

    parsed = {
        "space": "        ",
        "internalFormat": internal_format,
        "formatName": format_name,
        "vkFormat": native_format,
    }

    # Derived values.
    parsed["initializer"] = angle_format.get_internal_format_initializer(
        internal_format, format_name)

    return format_entry_template.format(**parsed)
示例#11
0
def gen_format_case(angle, internal_format, vk_map):

    if angle not in vk_map or angle == 'NONE':
        return empty_format_entry_template.format(
            space = '        ',
            format_id = angle)

    texture_format_id = angle
    buffer_format_id = angle

    vk_format_name = vk_map[angle]
    vk_buffer_format = vk_format_name
    vk_texture_format = vk_format_name

    if isinstance(vk_format_name, dict):
        info = vk_format_name
        vk_format_name = info["native"]

        if "buffer" in info:
            buffer_format_id = info["buffer"]
            vk_buffer_format = vk_map[buffer_format_id]
            assert(not isinstance(vk_buffer_format, dict))
        else:
            vk_buffer_format = vk_format_name

        if "texture" in info:
            texture_format_id = info["texture"]
            vk_texture_format = vk_map[texture_format_id]
            assert(not isinstance(vk_texture_format, dict))
        else:
            vk_texture_format = vk_format_name

    initializer = angle_format.get_internal_format_initializer(
        internal_format, texture_format_id)

    return format_entry_template.format(
        space = '        ',
        internal_format = internal_format,
        format_id = angle,
        texture_format_id = texture_format_id,
        buffer_format_id = buffer_format_id,
        vk_buffer_format = vk_buffer_format,
        vk_texture_format = vk_texture_format,
        initializer = initializer)
示例#12
0
def gen_format_case(angle, internal_format, vk_map):

    if angle not in vk_map or angle == 'NONE':
        return empty_format_entry_template.format(space='        ',
                                                  format_id=angle)

    texture_format_id = angle
    buffer_format_id = angle

    vk_format_name = vk_map[angle]
    vk_buffer_format = vk_format_name
    vk_texture_format = vk_format_name

    if isinstance(vk_format_name, dict):
        info = vk_format_name
        vk_format_name = info["native"]

        if "buffer" in info:
            buffer_format_id = info["buffer"]
            vk_buffer_format = vk_map[buffer_format_id]
            assert (not isinstance(vk_buffer_format, dict))
        else:
            vk_buffer_format = vk_format_name

        if "texture" in info:
            texture_format_id = info["texture"]
            vk_texture_format = vk_map[texture_format_id]
            assert (not isinstance(vk_texture_format, dict))
        else:
            vk_texture_format = vk_format_name

    initializer = angle_format.get_internal_format_initializer(
        internal_format, texture_format_id)

    return format_entry_template.format(space='        ',
                                        internal_format=internal_format,
                                        format_id=angle,
                                        texture_format_id=texture_format_id,
                                        buffer_format_id=buffer_format_id,
                                        vk_buffer_format=vk_buffer_format,
                                        vk_texture_format=vk_texture_format,
                                        initializer=initializer)
示例#13
0
 def image_args(format):
     return dict(
         image="angle::FormatID::" + format,
         image_initializer=angle_format.get_internal_format_initializer(
             internal_format, format))
示例#14
0
 def texture_args(format):
   return dict(
       texture="angle::FormatID::" + format,
       vk_texture_format=vk_map[format],
       texture_initializer=angle_format.get_internal_format_initializer(
           internal_format, format))
示例#15
0
 def image_args(format):
     return dict(
         image="angle::FormatID::" + format,
         vk_image_format=vk_map[format],
         image_initializer=angle_format.get_internal_format_initializer(
             internal_format, format))