mirror of
https://github.com/libretro/RetroArch.git
synced 2026-11-08 17:28:49 -10:00
(vita2d) Declare locals at the top of their scope
The libretro coding standards require C89 declaration placement: all local variables at the beginning of their scope block, not inline at first use. The folded-in libvita2d code declared throughout, 20 sites in nine functions, most of them in vita2d_init_internal. Split each into a declaration at the top of the enclosing block and a plain assignment where the initialiser was. Pointer-to-const declarators keep their qualifier: the SceGxmProgramParameter lookups and the frame32/frame16 aliases of the const void *frame parameter would otherwise start discarding const. Also drop draw_texture_part_scale_rotate_generic, which had no callers. Builds clean under -Wall -Wdeclaration-after-statement apart from the pre-existing 'err set but not used'. .text/.data/.bss unchanged.
This commit is contained in:
1 parent
f5ca63b697
commit
06518916df
1 file changed
+95
-57
+95
-57
@@ -466,6 +466,7 @@ static void patcher_host_free(void *user_data, void *mem)
|
||||
|
||||
static int vita2d_switch_video_mode(vita2d_video_mode video_mode)
|
||||
{
|
||||
SceGxmRenderTargetParams renderTargetParams;
|
||||
int i, x, y;
|
||||
|
||||
if(video_mode > video_mode_initial)
|
||||
@@ -537,7 +538,6 @@ static int vita2d_switch_video_mode(vita2d_video_mode video_mode)
|
||||
}
|
||||
|
||||
/* set up parameters */
|
||||
SceGxmRenderTargetParams renderTargetParams;
|
||||
memset(&renderTargetParams, 0, sizeof(SceGxmRenderTargetParams));
|
||||
renderTargetParams.flags = 0;
|
||||
renderTargetParams.width = video_mode_data.width;
|
||||
@@ -627,6 +627,42 @@ static void vita2d_set_blend_mode_add(int enable)
|
||||
|
||||
static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMode msaa, vita2d_video_mode video_mode)
|
||||
{
|
||||
SceGxmInitializeParams initializeParams;
|
||||
void *fragmentUsseRingBuffer;
|
||||
unsigned int fragmentUsseRingBufferOffset;
|
||||
void *fragmentRingBuffer;
|
||||
void *vertexRingBuffer;
|
||||
void *vdmRingBuffer;
|
||||
vita2d_display_data displayData;
|
||||
unsigned int depthStrideInSamples;
|
||||
unsigned int sampleCount;
|
||||
unsigned int alignedHeight;
|
||||
unsigned int alignedWidth;
|
||||
SceGxmShaderPatcherParams patcherParams;
|
||||
void *patcherFragmentUsse;
|
||||
unsigned int patcherFragmentUsseOffset;
|
||||
void *patcherVertexUsse;
|
||||
unsigned int patcherVertexUsseOffset;
|
||||
void *patcherBuffer;
|
||||
unsigned int patcherFragmentUsseSize;
|
||||
unsigned int patcherVertexUsseSize;
|
||||
unsigned int patcherBufferSize;
|
||||
SceGxmVertexStream clearVertexStreams[1];
|
||||
SceGxmVertexAttribute clearVertexAttributes[1];
|
||||
const SceGxmProgramParameter *paramClearPositionAttribute;
|
||||
SceGxmVertexStream colorVertexStreams[1];
|
||||
SceGxmVertexAttribute colorVertexAttributes[2];
|
||||
const SceGxmProgramParameter *paramColorColorAttribute;
|
||||
const SceGxmProgramParameter *paramColorPositionAttribute;
|
||||
SceGxmVertexStream textureVertexStreams[1];
|
||||
SceGxmVertexAttribute textureVertexAttributes[2];
|
||||
const SceGxmProgramParameter *paramTextureTexcoordAttribute;
|
||||
const SceGxmProgramParameter *paramTexturePositionAttribute;
|
||||
SceGxmVertexStream textureTintVertexStreams[1];
|
||||
SceGxmVertexAttribute textureTintVertexAttributes[3];
|
||||
const SceGxmProgramParameter *paramTextureTintColorAttribute;
|
||||
const SceGxmProgramParameter *paramTextureTintTexcoordAttribute;
|
||||
const SceGxmProgramParameter *paramTextureTintPositionAttribute;
|
||||
/* Blend modes. Fields are in SceGxmBlendInfo declaration order:
|
||||
* colorMask, colorFunc, alphaFunc, colorSrc, colorDst, alphaSrc,
|
||||
* alphaDst.
|
||||
@@ -658,7 +694,6 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
|
||||
video_mode_initial = video_mode;
|
||||
current_msaa = msaa;
|
||||
|
||||
SceGxmInitializeParams initializeParams;
|
||||
memset(&initializeParams, 0, sizeof(SceGxmInitializeParams));
|
||||
initializeParams.flags = 0;
|
||||
initializeParams.displayQueueMaxPendingCount = DISPLAY_MAX_PENDING_SWAPS;
|
||||
@@ -669,29 +704,28 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
|
||||
err = sceGxmInitialize(&initializeParams);
|
||||
|
||||
/* allocate ring buffer memory using default sizes */
|
||||
void *vdmRingBuffer = gpu_alloc(
|
||||
vdmRingBuffer = gpu_alloc(
|
||||
SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE,
|
||||
SCE_GXM_DEFAULT_VDM_RING_BUFFER_SIZE,
|
||||
4,
|
||||
SCE_GXM_MEMORY_ATTRIB_READ,
|
||||
&vdmRingBufferUid);
|
||||
|
||||
void *vertexRingBuffer = gpu_alloc(
|
||||
vertexRingBuffer = gpu_alloc(
|
||||
SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE,
|
||||
SCE_GXM_DEFAULT_VERTEX_RING_BUFFER_SIZE,
|
||||
4,
|
||||
SCE_GXM_MEMORY_ATTRIB_READ,
|
||||
&vertexRingBufferUid);
|
||||
|
||||
void *fragmentRingBuffer = gpu_alloc(
|
||||
fragmentRingBuffer = gpu_alloc(
|
||||
SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE,
|
||||
SCE_GXM_DEFAULT_FRAGMENT_RING_BUFFER_SIZE,
|
||||
4,
|
||||
SCE_GXM_MEMORY_ATTRIB_READ,
|
||||
&fragmentRingBufferUid);
|
||||
|
||||
unsigned int fragmentUsseRingBufferOffset;
|
||||
void *fragmentUsseRingBuffer = fragment_usse_alloc(
|
||||
fragmentUsseRingBuffer = fragment_usse_alloc(
|
||||
SCE_GXM_DEFAULT_FRAGMENT_USSE_RING_BUFFER_SIZE,
|
||||
&fragmentUsseRingBufferUid,
|
||||
&fragmentUsseRingBufferOffset);
|
||||
@@ -714,7 +748,6 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
vita2d_display_data displayData;
|
||||
displayData.address = displayBufferData[0];
|
||||
gxm_display_callback(&displayData);
|
||||
|
||||
@@ -724,10 +757,10 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
|
||||
err = sceGxmSyncObjectCreate(&displayBufferSync[i]);
|
||||
|
||||
/* compute the memory footprint of the depth buffer */
|
||||
const unsigned int alignedWidth = ALIGN(video_mode_data.width, SCE_GXM_TILE_SIZEX);
|
||||
const unsigned int alignedHeight = ALIGN(video_mode_data.height, SCE_GXM_TILE_SIZEY);
|
||||
unsigned int sampleCount = alignedWidth*alignedHeight;
|
||||
unsigned int depthStrideInSamples = alignedWidth;
|
||||
alignedWidth = ALIGN(video_mode_data.width, SCE_GXM_TILE_SIZEX);
|
||||
alignedHeight = ALIGN(video_mode_data.height, SCE_GXM_TILE_SIZEY);
|
||||
sampleCount = alignedWidth*alignedHeight;
|
||||
depthStrideInSamples = alignedWidth;
|
||||
if (current_msaa == SCE_GXM_MULTISAMPLE_4X)
|
||||
{
|
||||
/* samples increase in X and Y */
|
||||
@@ -776,32 +809,29 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
|
||||
0xFF);
|
||||
|
||||
/* set buffer sizes for this sample */
|
||||
const unsigned int patcherBufferSize = 64*1024;
|
||||
const unsigned int patcherVertexUsseSize = 64*1024;
|
||||
const unsigned int patcherFragmentUsseSize = 64*1024;
|
||||
patcherBufferSize = 64*1024;
|
||||
patcherVertexUsseSize = 64*1024;
|
||||
patcherFragmentUsseSize = 64*1024;
|
||||
|
||||
/* allocate memory for buffers and USSE code */
|
||||
void *patcherBuffer = gpu_alloc(
|
||||
patcherBuffer = gpu_alloc(
|
||||
SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE,
|
||||
patcherBufferSize,
|
||||
4,
|
||||
SCE_GXM_MEMORY_ATTRIB_READ | SCE_GXM_MEMORY_ATTRIB_WRITE,
|
||||
&patcherBufferUid);
|
||||
|
||||
unsigned int patcherVertexUsseOffset;
|
||||
void *patcherVertexUsse = vertex_usse_alloc(
|
||||
patcherVertexUsse = vertex_usse_alloc(
|
||||
patcherVertexUsseSize,
|
||||
&patcherVertexUsseUid,
|
||||
&patcherVertexUsseOffset);
|
||||
|
||||
unsigned int patcherFragmentUsseOffset;
|
||||
void *patcherFragmentUsse = fragment_usse_alloc(
|
||||
patcherFragmentUsse = fragment_usse_alloc(
|
||||
patcherFragmentUsseSize,
|
||||
&patcherFragmentUsseUid,
|
||||
&patcherFragmentUsseOffset);
|
||||
|
||||
/* create a shader patcher */
|
||||
SceGxmShaderPatcherParams patcherParams;
|
||||
memset(&patcherParams, 0, sizeof(SceGxmShaderPatcherParams));
|
||||
patcherParams.userData = NULL;
|
||||
patcherParams.hostAllocCallback = &patcher_host_alloc;
|
||||
@@ -844,11 +874,9 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
|
||||
err = sceGxmShaderPatcherRegisterProgram(shaderPatcher, textureTintFragmentProgramGxp, &textureTintFragmentProgramId);
|
||||
|
||||
/* get attributes by name to create vertex format bindings */
|
||||
const SceGxmProgramParameter *paramClearPositionAttribute = sceGxmProgramFindParameterByName(clearVertexProgramGxp, "aPosition");
|
||||
paramClearPositionAttribute = sceGxmProgramFindParameterByName(clearVertexProgramGxp, "aPosition");
|
||||
|
||||
/* create clear vertex format */
|
||||
SceGxmVertexAttribute clearVertexAttributes[1];
|
||||
SceGxmVertexStream clearVertexStreams[1];
|
||||
clearVertexAttributes[0].streamIndex = 0;
|
||||
clearVertexAttributes[0].offset = 0;
|
||||
clearVertexAttributes[0].format = SCE_GXM_ATTRIBUTE_FORMAT_F32;
|
||||
@@ -906,12 +934,10 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
|
||||
clearVertices[2].x = -1.0f;
|
||||
clearVertices[2].y = 3.0f;
|
||||
|
||||
const SceGxmProgramParameter *paramColorPositionAttribute = sceGxmProgramFindParameterByName(colorVertexProgramGxp, "aPosition");
|
||||
const SceGxmProgramParameter *paramColorColorAttribute = sceGxmProgramFindParameterByName(colorVertexProgramGxp, "aColor");
|
||||
paramColorPositionAttribute = sceGxmProgramFindParameterByName(colorVertexProgramGxp, "aPosition");
|
||||
paramColorColorAttribute = sceGxmProgramFindParameterByName(colorVertexProgramGxp, "aColor");
|
||||
|
||||
/* create color vertex format */
|
||||
SceGxmVertexAttribute colorVertexAttributes[2];
|
||||
SceGxmVertexStream colorVertexStreams[1];
|
||||
/* x,y,z: 3 float 32 bits */
|
||||
colorVertexAttributes[0].streamIndex = 0;
|
||||
colorVertexAttributes[0].offset = 0;
|
||||
@@ -938,13 +964,11 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
|
||||
1,
|
||||
&_vita2d_colorVertexProgram);
|
||||
|
||||
const SceGxmProgramParameter *paramTexturePositionAttribute = sceGxmProgramFindParameterByName(textureVertexProgramGxp, "aPosition");
|
||||
paramTexturePositionAttribute = sceGxmProgramFindParameterByName(textureVertexProgramGxp, "aPosition");
|
||||
|
||||
const SceGxmProgramParameter *paramTextureTexcoordAttribute = sceGxmProgramFindParameterByName(textureVertexProgramGxp, "aTexcoord");
|
||||
paramTextureTexcoordAttribute = sceGxmProgramFindParameterByName(textureVertexProgramGxp, "aTexcoord");
|
||||
|
||||
/* create texture vertex format */
|
||||
SceGxmVertexAttribute textureVertexAttributes[2];
|
||||
SceGxmVertexStream textureVertexStreams[1];
|
||||
/* x,y,z: 3 float 32 bits */
|
||||
textureVertexAttributes[0].streamIndex = 0;
|
||||
textureVertexAttributes[0].offset = 0;
|
||||
@@ -971,13 +995,11 @@ static int vita2d_init_internal(unsigned int temp_pool_size, SceGxmMultisampleMo
|
||||
1,
|
||||
&_vita2d_textureVertexProgram);
|
||||
|
||||
const SceGxmProgramParameter *paramTextureTintPositionAttribute = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "aPosition");
|
||||
const SceGxmProgramParameter *paramTextureTintTexcoordAttribute = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "aTexcoord");
|
||||
const SceGxmProgramParameter *paramTextureTintColorAttribute = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "aColor");
|
||||
paramTextureTintPositionAttribute = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "aPosition");
|
||||
paramTextureTintTexcoordAttribute = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "aTexcoord");
|
||||
paramTextureTintColorAttribute = sceGxmProgramFindParameterByName(textureTintVertexProgramGxp, "aColor");
|
||||
|
||||
/* create texture vertex format */
|
||||
SceGxmVertexAttribute textureTintVertexAttributes[3];
|
||||
SceGxmVertexStream textureTintVertexStreams[1];
|
||||
/* x,y,z: 3 float 32 bits */
|
||||
textureTintVertexAttributes[0].streamIndex = 0;
|
||||
textureTintVertexAttributes[0].offset = 0;
|
||||
@@ -1156,6 +1178,7 @@ static void *vita2d_pool_memalign(unsigned int size, unsigned int alignment)
|
||||
|
||||
static void vita2d_draw_rectangle(float x, float y, float w, float h, unsigned int color)
|
||||
{
|
||||
void *vertexDefaultBuffer;
|
||||
vita2d_color_vertex *vertices = (vita2d_color_vertex *)
|
||||
vita2d_pool_memalign(
|
||||
4 * sizeof(vita2d_color_vertex), /* 4 vertices */
|
||||
@@ -1193,7 +1216,6 @@ static void vita2d_draw_rectangle(float x, float y, float w, float h, unsigned i
|
||||
sceGxmSetVertexProgram(_vita2d_context, _vita2d_colorVertexProgram);
|
||||
sceGxmSetFragmentProgram(_vita2d_context, _vita2d_colorFragmentProgram);
|
||||
|
||||
void *vertexDefaultBuffer;
|
||||
sceGxmReserveVertexDefaultUniformBuffer(_vita2d_context, &vertexDefaultBuffer);
|
||||
sceGxmSetUniformDataF(vertexDefaultBuffer, _vita2d_colorWvpParam, 0, 16, _vita2d_ortho_matrix);
|
||||
|
||||
@@ -1308,19 +1330,22 @@ static void vita2d_free_texture(vita2d_texture *texture)
|
||||
|
||||
static vita2d_texture *vita2d_create_empty_texture_format(unsigned int w, unsigned int h, SceGxmTextureFormat format)
|
||||
{
|
||||
vita2d_texture *texture;
|
||||
void *texture_data;
|
||||
int tex_size;
|
||||
if (w > GXM_TEX_MAX_SIZE || h > GXM_TEX_MAX_SIZE)
|
||||
return NULL;
|
||||
|
||||
vita2d_texture *texture = malloc(sizeof(*texture));
|
||||
texture = malloc(sizeof(*texture));
|
||||
if (!texture)
|
||||
return NULL;
|
||||
|
||||
memset(texture, 0, sizeof(vita2d_texture));
|
||||
|
||||
const int tex_size = w * h * tex_format_to_bytespp(format);
|
||||
tex_size = w * h * tex_format_to_bytespp(format);
|
||||
|
||||
/* Allocate a GPU buffer for the texture */
|
||||
void *texture_data = gpu_alloc(
|
||||
texture_data = gpu_alloc(
|
||||
MemBlockType,
|
||||
tex_size,
|
||||
SCE_GXM_TEXTURE_ALIGNMENT,
|
||||
@@ -1503,6 +1528,13 @@ static void vita2d_draw_texture_tint_part_scale(const vita2d_texture *texture, f
|
||||
|
||||
static void vita2d_draw_texture_scale_rotate(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, float rad)
|
||||
{
|
||||
float center_y_scaled;
|
||||
float center_x_scaled;
|
||||
float h;
|
||||
float w;
|
||||
int i;
|
||||
float s;
|
||||
float c;
|
||||
const float center_x = sceGxmTextureGetWidth(&texture->gxm_tex) / 2.0f;
|
||||
const float center_y = sceGxmTextureGetHeight(&texture->gxm_tex) / 2.0f;
|
||||
void *vertex_wvp_buffer;
|
||||
@@ -1518,10 +1550,10 @@ static void vita2d_draw_texture_scale_rotate(const vita2d_texture *texture, floa
|
||||
4 * sizeof(vita2d_texture_vertex), /* 4 vertices */
|
||||
sizeof(vita2d_texture_vertex));
|
||||
|
||||
const float w = x_scale * sceGxmTextureGetWidth(&texture->gxm_tex);
|
||||
const float h = y_scale * sceGxmTextureGetHeight(&texture->gxm_tex);
|
||||
const float center_x_scaled = x_scale * center_x;
|
||||
const float center_y_scaled = y_scale * center_y;
|
||||
w = x_scale * sceGxmTextureGetWidth(&texture->gxm_tex);
|
||||
h = y_scale * sceGxmTextureGetHeight(&texture->gxm_tex);
|
||||
center_x_scaled = x_scale * center_x;
|
||||
center_y_scaled = y_scale * center_y;
|
||||
|
||||
vertices[0].x = -center_x_scaled;
|
||||
vertices[0].y = -center_y_scaled;
|
||||
@@ -1547,9 +1579,8 @@ static void vita2d_draw_texture_scale_rotate(const vita2d_texture *texture, floa
|
||||
vertices[3].u = 1.0f;
|
||||
vertices[3].v = 1.0f;
|
||||
|
||||
float c = cosf(rad);
|
||||
float s = sinf(rad);
|
||||
int i;
|
||||
c = cosf(rad);
|
||||
s = sinf(rad);
|
||||
for (i = 0; i < 4; ++i) { /* Rotate and translate */
|
||||
float _x = vertices[i].x;
|
||||
float _y = vertices[i].y;
|
||||
@@ -1567,6 +1598,9 @@ static void vita2d_draw_texture_scale_rotate(const vita2d_texture *texture, floa
|
||||
static inline void draw_texture_part_scale_rotate_generic(const vita2d_texture *texture, float x, float y,
|
||||
float tex_x, float tex_y, float tex_w, float tex_h, float x_scale, float y_scale, float rad)
|
||||
{
|
||||
int i;
|
||||
float s;
|
||||
float c;
|
||||
vita2d_texture_vertex *vertices = (vita2d_texture_vertex *)
|
||||
vita2d_pool_memalign(
|
||||
4 * sizeof(vita2d_texture_vertex), /* 4 vertices */
|
||||
@@ -1607,9 +1641,8 @@ static inline void draw_texture_part_scale_rotate_generic(const vita2d_texture *
|
||||
vertices[3].u = u1;
|
||||
vertices[3].v = v1;
|
||||
|
||||
const float c = cosf(rad);
|
||||
const float s = sinf(rad);
|
||||
int i;
|
||||
c = cosf(rad);
|
||||
s = sinf(rad);
|
||||
for (i = 0; i < 4; ++i) { /* Rotate and translate */
|
||||
float _x = vertices[i].x;
|
||||
float _y = vertices[i].y;
|
||||
@@ -1626,10 +1659,10 @@ static inline void draw_texture_part_scale_rotate_generic(const vita2d_texture *
|
||||
|
||||
static void vita2d_draw_array_textured_mat(const vita2d_texture *texture, const vita2d_texture_tint_vertex *vertices, size_t count, float *mat)
|
||||
{
|
||||
void *vertex_wvp_buffer;
|
||||
sceGxmSetVertexProgram(_vita2d_context, _vita2d_textureTintVertexProgram);
|
||||
sceGxmSetFragmentProgram(_vita2d_context, _vita2d_textureTintFragmentProgram);
|
||||
|
||||
void *vertex_wvp_buffer;
|
||||
sceGxmReserveVertexDefaultUniformBuffer(_vita2d_context, &vertex_wvp_buffer);
|
||||
sceGxmSetUniformDataF(vertex_wvp_buffer, _vita2d_textureWvpParam, 0, 16, mat);
|
||||
|
||||
@@ -1670,6 +1703,7 @@ static void *gfx_display_vita2d_get_default_mvp(void *data)
|
||||
static void gfx_display_vita2d_draw(gfx_display_ctx_draw_t *draw,
|
||||
void *data, unsigned video_width, unsigned video_height)
|
||||
{
|
||||
vita2d_texture_tint_vertex *vertices;
|
||||
unsigned i;
|
||||
struct vita2d_texture *texture = NULL;
|
||||
const float *vertex = NULL;
|
||||
@@ -1697,7 +1731,7 @@ static void gfx_display_vita2d_draw(gfx_display_ctx_draw_t *draw,
|
||||
color = &vita2d_colors[0];
|
||||
|
||||
vita2d_set_viewport(draw->x, draw->y, draw->width, draw->height);
|
||||
vita2d_texture_tint_vertex *vertices = (vita2d_texture_tint_vertex *)
|
||||
vertices = (vita2d_texture_tint_vertex *)
|
||||
vita2d_pool_memalign(
|
||||
draw->coords->vertices * sizeof(vita2d_texture_tint_vertex),
|
||||
sizeof(vita2d_texture_tint_vertex));
|
||||
@@ -2329,20 +2363,24 @@ static bool vita2d_frame(void *data, const void *frame,
|
||||
|
||||
if (vita->format == SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB)
|
||||
{
|
||||
const uint32_t *frame32;
|
||||
uint32_t *tex32;
|
||||
stride /= 4;
|
||||
pitch /= 4;
|
||||
uint32_t *tex32 = tex_p;
|
||||
const uint32_t *frame32 = frame;
|
||||
tex32 = tex_p;
|
||||
frame32 = frame;
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
memcpy_neon(&tex32[i*stride],&frame32[i*pitch],pitch*sizeof(uint32_t));
|
||||
}
|
||||
else
|
||||
{
|
||||
const uint16_t *frame16;
|
||||
uint16_t *tex16;
|
||||
stride /= 2;
|
||||
pitch /= 2;
|
||||
uint16_t *tex16 = tex_p;
|
||||
const uint16_t *frame16 = frame;
|
||||
tex16 = tex_p;
|
||||
frame16 = frame;
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
memcpy_neon(&tex16[i*stride],&frame16[i*pitch],width*sizeof(uint16_t));
|
||||
|
||||
Reference in new issue
Block a user