| /* |
| * Copyright 2017 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can |
| * be found in the LICENSE file. |
| * |
| */ |
| |
| #ifndef SKC_COMMON_ONCE |
| #define SKC_COMMON_ONCE |
| |
| #include "types.h" |
| |
| // |
| // structures common to both host and device -- placeholder until |
| // everything shakes out |
| // |
| |
| union skc_transform |
| { |
| // |
| // Transform is always scaled s.t. w2 is 1.0f |
| // |
| skc_float f32a8[8]; |
| |
| skc_float8 f32v8; |
| |
| struct { |
| skc_float sx; |
| skc_float shx; |
| skc_float tx; |
| |
| skc_float shy; |
| skc_float sy; |
| skc_float ty; |
| |
| skc_float w0; |
| skc_float w1; |
| }; |
| }; |
| |
| // |
| // |
| // |
| |
| union skc_path_clip |
| { |
| skc_float f32a4[4]; // FIXME -- use the SIMD4 representation trick |
| |
| skc_float4 f32v4; |
| |
| struct { |
| skc_float x0; |
| skc_float y0; |
| skc_float x1; |
| skc_float y1; |
| }; |
| }; |
| |
| // |
| // host-side path fill cmd that is expanded into rasterization cmds |
| // |
| // FIXME -- these magic numbers will be replaced with tile.h constants |
| // |
| // FIXME -- make this command opaque by moving it into the platform impl |
| // |
| // FIXME -- NEED TO EVALUATE IF THIS DISTRIBUTION OF BITS IS GOING TO |
| // BE TOO SMALL -- plenty of room to jiggle these bits |
| // |
| |
| #define SKC_CMD_FILL_BITS_TRANSFORM 12 // distinct transforms -- perhaps too generous |
| #define SKC_CMD_FILL_BITS_CLIP 12 // distinct clips -- perhaps too generous |
| #define SKC_CMD_FILL_BITS_COHORT 8 // perhaps too small |
| |
| // |
| // |
| // |
| |
| typedef skc_uint skc_path_h; // host path handle |
| |
| union skc_cmd_fill |
| { |
| skc_ulong u64; |
| |
| skc_uint2 u32v2; |
| |
| struct { |
| skc_path_h path; // host path id |
| #if defined(__OPENCL_C_VERSION__) |
| skc_uint tcc; |
| #else |
| skc_uint transform : SKC_CMD_FILL_BITS_TRANSFORM; |
| skc_uint clip : SKC_CMD_FILL_BITS_CLIP; |
| skc_uint cohort : SKC_CMD_FILL_BITS_COHORT; |
| #endif |
| }; |
| }; |
| |
| // |
| // |
| // |
| |
| typedef skc_uint skc_raster_h; |
| |
| union skc_cmd_place |
| { |
| skc_uint4 u32v4; |
| |
| struct { |
| skc_raster_h raster_h; |
| skc_uint layer_id; |
| skc_uint tx; |
| skc_uint ty; |
| }; |
| }; |
| |
| SKC_STATIC_ASSERT(sizeof(union skc_cmd_place) == sizeof(skc_uint4)); |
| |
| // |
| // |
| // |
| |
| #endif |
| |
| // |
| // |
| // |