void PACK_APIENTRY crPackCombinerStageParameterfvNV( GLenum stage, GLenum pname, const GLfloat *params )
{
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;

    CR_GET_BUFFERED_POINTER(pc, 32 );
    WRITE_DATA( 0, GLint, 32 );
    WRITE_DATA( 4, GLenum, CR_COMBINERSTAGEPARAMETERFVNV_EXTEND_OPCODE );
    WRITE_DATA( 8, GLenum, stage );
    WRITE_DATA( 12, GLenum, pname );
    WRITE_DATA( 16, GLfloat, params[0] );
    WRITE_DATA( 20, GLfloat, params[1] );
    WRITE_DATA( 24, GLfloat, params[2] );
    WRITE_DATA( 28, GLfloat, params[3] );
    WRITE_OPCODE( pc, CR_EXTEND_OPCODE );
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 2
0
void PACK_APIENTRY crPackGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params, int *writeback)
{
    int packet_length = 32 + len;
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;
    CR_GET_BUFFERED_POINTER(pc, packet_length);
    WRITE_DATA(0, GLint, packet_length);
    WRITE_DATA(4, GLenum, CR_GETPROGRAMNAMEDPARAMETERDVNV_EXTEND_OPCODE);
    WRITE_DATA(8, GLuint, id);
    WRITE_DATA(12, GLsizei, len);
    crMemcpy(data_ptr + 16, name, len);
    WRITE_NETWORK_POINTER(16 + len, (void *) params);
    WRITE_NETWORK_POINTER(16 + len + 8, (void *) writeback);
    WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
    CR_CMDBLOCK_CHECK_FLUSH(pc);
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 3
0
void PACK_APIENTRY crPackVertexAttribPointerARB( GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer )
{
	CR_GET_PACKER_CONTEXT(pc);
	unsigned char *data_ptr;
	int packet_length = 32;
	CR_GET_BUFFERED_POINTER( pc, packet_length );
	WRITE_DATA( 0, GLint, packet_length );
	WRITE_DATA( 4, GLenum, CR_VERTEXATTRIBPOINTERARB_EXTEND_OPCODE );
	WRITE_DATA( 8, GLint, index );
	WRITE_DATA( 12, GLint, size );
	WRITE_DATA( 16, GLenum, type );
	WRITE_DATA( 20, GLboolean, normalized );
	WRITE_DATA( 24, GLsizei, stride );
	WRITE_DATA( 28, GLuint, (GLuint) ((uintptr_t) pointer) );
	WRITE_OPCODE( pc, CR_EXTEND_OPCODE );
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 4
0
void PACK_APIENTRY crPackUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;
    int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(location)+sizeof(count)+sizeof(transpose)
                        + 4*3*count*sizeof(*value);

    CR_GET_BUFFERED_POINTER(pc, packet_length);
    WRITE_DATA_AI(int, packet_length);
    WRITE_DATA_AI(GLenum, CR_UNIFORMMATRIX4X3FV_EXTEND_OPCODE);
    WRITE_DATA_AI(GLint, location);
    WRITE_DATA_AI(GLsizei, count);
    WRITE_DATA_AI(GLboolean, transpose);
    crMemcpy(data_ptr, value, 4*3*count*sizeof(*value));
    WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 5
0
void PACK_APIENTRY
crPackGetBufferSubDataARBSWAP( GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data, int * writeback )
{
	CR_GET_PACKER_CONTEXT(pc);
	unsigned char *data_ptr;
	(void) pc;
	CR_GET_BUFFERED_POINTER( pc, 36 );
	WRITE_DATA( 0, GLint, SWAP32(36) );
	WRITE_DATA( 4, GLenum, SWAP32(CR_GETBUFFERSUBDATAARB_EXTEND_OPCODE) );
	WRITE_DATA( 8, GLenum, SWAP32(target) );
	WRITE_DATA( 12, GLuint, SWAP32((GLuint) offset) );
	WRITE_DATA( 16, GLuint, SWAP32((GLuint) size) );
	WRITE_NETWORK_POINTER( 20, (void *) data );
	WRITE_NETWORK_POINTER( 28, (void *) writeback );
	WRITE_OPCODE( pc, CR_EXTEND_OPCODE );
	CR_CMDBLOCK_CHECK_FLUSH(pc);
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 6
0
void PACK_APIENTRY crPackVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )
{
	/* Packing this command is only useful if we have server-side vertex
	 * arrays - GL_ARB_vertex_buffer_object.  Note that pointer will really
	 * be an offset into a server-side buffer.
	 */
	GET_PACKER_CONTEXT(pc);
	unsigned char *data_ptr;
	int packet_length = 20 + sizeof(GLintptrARB);
	GET_BUFFERED_POINTER( pc, packet_length );
	WRITE_DATA( 0, GLint, packet_length );
	WRITE_DATA( 4, GLenum, CR_VERTEXPOINTER_EXTEND_OPCODE );
	WRITE_DATA( 8, GLint, size );
	WRITE_DATA( 12, GLenum, type );
	WRITE_DATA( 16, GLsizei, stride );
	WRITE_DATA( 20, GLintptrARB, (GLintptrARB) pointer );
	WRITE_OPCODE( pc, CR_EXTEND_OPCODE );
}
Esempio n. 7
0
void PACK_APIENTRY crPackExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params)
{
    const int packet_length = 32;
    unsigned char *data_ptr;
    CR_GET_PACKER_CONTEXT(pc);

    CR_GET_BUFFERED_POINTER(pc, packet_length);
    WRITE_DATA(0, int, packet_length);
    WRITE_DATA(4, GLenum, CR_EXECUTEPROGRAMNV_EXTEND_OPCODE);
    WRITE_DATA(8, GLenum, target);
    WRITE_DATA(12, GLuint, id);
    WRITE_DATA(16, GLfloat, params[0]);
    WRITE_DATA(20, GLfloat, params[1]);
    WRITE_DATA(24, GLfloat, params[2]);
    WRITE_DATA(28, GLfloat, params[3]);
    WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 8
0
void PACK_APIENTRY crPackGetUniformLocation(GLuint program, const char * name, GLint * return_value, int * writeback)
{
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;
    int cbName = crStrlen(name)+1;
    int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(program)+cbName*sizeof(*name)+16;

    CR_GET_BUFFERED_POINTER(pc, packet_length);
    WRITE_DATA_AI(int, packet_length);
    WRITE_DATA_AI(GLenum, CR_GETUNIFORMLOCATION_EXTEND_OPCODE);
    WRITE_DATA_AI(GLuint, program);
    crMemcpy(data_ptr, name, cbName*sizeof(*name));
    data_ptr +=  cbName*sizeof(*name);
    WRITE_NETWORK_POINTER(0, (void *) return_value);
    WRITE_NETWORK_POINTER(8, (void *) writeback);
    WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 9
0
void PACK_APIENTRY crPackProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;
    int packet_length = 32 + len;

    CR_GET_BUFFERED_POINTER(pc, packet_length);
    WRITE_DATA(0, GLint, packet_length);
    WRITE_DATA(4, GLenum, CR_PROGRAMNAMEDPARAMETER4FNV_EXTEND_OPCODE);
    WRITE_DATA(8, GLuint, id);
    WRITE_DATA(12, GLsizei, len);
    WRITE_DATA(16, GLfloat, x);
    WRITE_DATA(20, GLfloat, y);
    WRITE_DATA(24, GLfloat, z);
    WRITE_DATA(28, GLfloat, w);
    crMemcpy((void *) (data_ptr + 32), name, len);
    WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 10
0
void PACK_APIENTRY crPackBegin( GLenum mode )
{
	GET_PACKER_CONTEXT(pc);
	unsigned char *data_ptr;
	(void) pc;
	if (pc->buffer.canBarf)
	{
		if (!pc->buffer.holds_BeginEnd)
			pc->Flush( pc->flush_arg );
		pc->buffer.in_BeginEnd = 1;
		pc->buffer.holds_BeginEnd = 1;
	}
	GET_BUFFERED_POINTER( pc, 4 );
	pc->current.begin_data = data_ptr;
	pc->current.begin_op = pc->buffer.opcode_current;
	pc->current.attribsUsedMask = 0;
	WRITE_DATA( 0, GLenum, mode );
	WRITE_OPCODE( pc, CR_BEGIN_OPCODE );
}
Esempio n. 11
0
void PACK_APIENTRY crPackGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, char * name, int * writeback)
{
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;
    (void) pc;
    (void) size;
    (void) type;
    (void) name;
    CR_GET_BUFFERED_POINTER(pc, 36);
    WRITE_DATA(0, GLint, 36);
    WRITE_DATA(4, GLenum, CR_GETACTIVEUNIFORM_EXTEND_OPCODE);
    WRITE_DATA(8, GLuint, program);
    WRITE_DATA(12, GLuint, index);
    WRITE_DATA(16, GLsizei, bufSize);
    WRITE_NETWORK_POINTER(20, (void *) length);
    WRITE_NETWORK_POINTER(28, (void *) writeback);
    WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 12
0
void PACK_APIENTRY crPackProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;
    int packet_length = 48 + len;

    CR_GET_BUFFERED_POINTER(pc, packet_length);
    WRITE_DATA(0, GLint, packet_length);
    WRITE_DATA(4, GLenum, CR_PROGRAMNAMEDPARAMETER4DNV_EXTEND_OPCODE);
    WRITE_DATA(8, GLenum, id);
    WRITE_DATA(12, GLuint, len);
    WRITE_DOUBLE(16, x);
    WRITE_DOUBLE(24, y);
    WRITE_DOUBLE(32, z);
    WRITE_DOUBLE(40, w);
    crMemcpy((void *) (data_ptr + 48), name, len);

    WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 13
0
void PACK_APIENTRY crPackVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer )
{
	/* Packing this command is only useful if we have server-side vertex
	 * arrays - GL_ARB_vertex_buffer_object.  Note that pointer will really
	 * be an offset into a server-side buffer.
     * @todo Because of that we'd only transfer lowest 32bit as there're no 4gb+VBOs (yet?).
     * Look at glgets regarding max vertices in arrays.
	 */
	CR_GET_PACKER_CONTEXT(pc);
	unsigned char *data_ptr;
	int packet_length = 24;
	CR_GET_BUFFERED_POINTER( pc, packet_length );
	WRITE_DATA( 0, GLint, packet_length );
	WRITE_DATA( 4, GLenum, CR_VERTEXPOINTER_EXTEND_OPCODE );
	WRITE_DATA( 8, GLint, size );
	WRITE_DATA( 12, GLenum, type );
	WRITE_DATA( 16, GLsizei, stride );
	WRITE_DATA( 20, GLuint, (GLuint) ((uintptr_t) pointer) );
	WRITE_OPCODE( pc, CR_EXTEND_OPCODE );
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 14
0
void PACK_APIENTRY
crPackGetTexImage( GLenum target, GLint level, GLenum format, GLenum type,
                                     GLvoid * pixels, const CRPixelPackState * packstate,
                                     int * writeback )
{
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;
    (void) pc;
    CR_GET_BUFFERED_POINTER( pc, 40 );
    WRITE_DATA( 0, GLint, 40 );
    WRITE_DATA( 4, GLenum, CR_GETTEXIMAGE_EXTEND_OPCODE );
    WRITE_DATA( 8, GLenum, target );
    WRITE_DATA( 12, GLint, level );
    WRITE_DATA( 16, GLenum, format );
    WRITE_DATA( 20, GLenum, type );
    WRITE_NETWORK_POINTER( 24, (void *) pixels );
    WRITE_NETWORK_POINTER( 32, (void *) writeback );
    WRITE_OPCODE( pc, CR_EXTEND_OPCODE );
    CR_CMDBLOCK_CHECK_FLUSH(pc);
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 15
0
void PACK_APIENTRY crPackBoundsInfoCR( const CRrecti *bounds, const GLbyte *payload, GLint len, GLint num_opcodes )
{
    CR_GET_PACKER_CONTEXT(pc);
    /* Don't get the buffered_ptr here because we've already 
     * verified that there's enough space for everything. */

    unsigned char *data_ptr;
    int len_aligned, total_len;

    CR_LOCK_PACKER_CONTEXT(pc);

    data_ptr = pc->buffer.data_current;
    len_aligned     = ( len + 0x3 ) & ~0x3;
    total_len = 24 + len_aligned;

    WRITE_DATA( 0, int, total_len );
    WRITE_DATA( 4, int, bounds->x1 );
    WRITE_DATA( 8, int, bounds->y1 );
    WRITE_DATA( 12, int, bounds->x2 );
    WRITE_DATA( 16, int, bounds->y2 );
    WRITE_DATA( 20, int, num_opcodes );

    /* skip the BOUNDSINFO */
    data_ptr += 24;

    /* put in padding opcodes (deliberately bogus) */
    switch ( len_aligned - len )
    {
      case 3: *data_ptr++ = 0xff; /* FALLTHROUGH */
      case 2: *data_ptr++ = 0xff; /* FALLTHROUGH */
      case 1: *data_ptr++ = 0xff; /* FALLTHROUGH */
      default: break;
    }

    crMemcpy( data_ptr, payload, len );

    WRITE_OPCODE( pc, CR_BOUNDSINFOCR_OPCODE );
    pc->buffer.data_current += 24 + len_aligned;
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 16
0
void PACK_APIENTRY crPackBeginSWAP( GLenum mode )
{
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;
    (void) pc;
    if (pc->buffer.canBarf)
    {
        if (!pc->buffer.holds_BeginEnd)
            pc->Flush( pc->flush_arg );
        pc->buffer.in_BeginEnd = 1;
        pc->buffer.holds_BeginEnd = 1;
    }
    CR_GET_BUFFERED_POINTER( pc, 4 );
    CRASSERT(pc->enmBeginEndState == CRPackBeginEndStateNone);
    pc->enmBeginEndState = CRPackBeginEndStateStarted;
    pc->current.begin_data = data_ptr;
    pc->current.begin_op = pc->buffer.opcode_current;
    pc->current.attribsUsedMask = 0;
    WRITE_DATA( 0, GLenum, SWAP32(mode) );
    WRITE_OPCODE( pc, CR_BEGIN_OPCODE );
    CR_UNLOCK_PACKER_CONTEXT(pc);
}
Esempio n. 17
0
void PACK_APIENTRY crPackFogfv(GLenum pname, const GLfloat *params)
{
	GET_PACKER_CONTEXT(pc);
	if (__handleFogData( pname, params ))
		WRITE_OPCODE( pc, CR_FOGFV_OPCODE );
}
Esempio n. 18
0
void PACK_APIENTRY crPackShaderSource(GLuint shader, GLsizei count, const char **string, const GLint *length)
{
    CR_GET_PACKER_CONTEXT(pc);
    unsigned char *data_ptr;
    GLint *pLocalLength;
    int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(shader)+sizeof(count)+sizeof(GLint)+count*sizeof(*pLocalLength);
    GLsizei i;

    if ((0==count) || (!string)) return;

    pLocalLength = crAlloc(count*sizeof(*length));
    if (!pLocalLength) return;

    for (i=0; i<count; ++i)
    {
        pLocalLength[i] = ((length && (length[i]>=0)) ? length[i] : crStrlen(string[i]))+1;
        packet_length += pLocalLength[i];
    }
    
    if (length)
    {
        packet_length += count*sizeof(*length);
    }

    CR_GET_BUFFERED_POINTER(pc, packet_length);
    WRITE_DATA_AI(int, packet_length);
    WRITE_DATA_AI(GLenum, CR_SHADERSOURCE_EXTEND_OPCODE);
    WRITE_DATA_AI(GLuint, shader);
    WRITE_DATA_AI(GLsizei, count);
    WRITE_DATA_AI(GLint, (GLint)(length ? 1:0));
    crMemcpy(data_ptr, pLocalLength, count*sizeof(*pLocalLength));
    data_ptr += count*sizeof(*pLocalLength);

    if (length)
    {
        crMemcpy(data_ptr, length, count*sizeof(*length));
        data_ptr += count*sizeof(*length);
    }

    for (i=0; i<count; ++i)
    {
        if (string[i])
        {
            if (length && (length[i]>=0))
            {
                /* include \0 in the string to make intel drivers happy */
                crMemcpy(data_ptr, string[i], pLocalLength[i] - 1);
                data_ptr[pLocalLength[i] - 1] = '\0';
            }
            else
            {
                /* the \0 s already in the string */
                crMemcpy(data_ptr, string[i], pLocalLength[i]);
            }
        }
        else
        {
            CRASSERT(pLocalLength[i]==1);
            *data_ptr = 0;
        }
        data_ptr += pLocalLength[i];
    }
    WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
    CR_UNLOCK_PACKER_CONTEXT(pc);

    crFree(pLocalLength);
}