Initial. Don't... just don't ask.
This commit is contained in:
commit
00bae13bba
586 changed files with 129057 additions and 0 deletions
152
utils/gtf/gtf.h
Normal file
152
utils/gtf/gtf.h
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
/****************************************************************************
|
||||
*
|
||||
* VESA Generalized Timing Formula (GTF)
|
||||
* Version 1.0
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* The contents of this file are subject to the SciTech MGL Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.scitechsoft.com/mgl-license.txt
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc.
|
||||
*
|
||||
* The Initial Developer of the Original Code is SciTech Software, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Developed by: SciTech Software, Inc.
|
||||
*
|
||||
* Language: ANSI C
|
||||
* Environment: Any
|
||||
*
|
||||
* Description: Header file for generating GTF compatible timings given a
|
||||
* set of input requirements. Translated from the original GTF
|
||||
* 1.14 spreadsheet definition.
|
||||
*
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __GTF_H
|
||||
#define __GTF_H
|
||||
|
||||
#ifndef __SCITECH_H
|
||||
#include "scitech.h"
|
||||
#endif
|
||||
|
||||
/*---------------------- Macros and type definitions ----------------------*/
|
||||
|
||||
/* Define the structures for holding the horizontal and vertical
|
||||
* CRTC parameters for a mode.
|
||||
*
|
||||
* Note: The sync timings are defined in both VGA compatible timings
|
||||
* (sync start and sync end positions) and also in GTF compatible
|
||||
* modes with the front porch, sync width and back porch defined.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
int hTotal; /* Horizontal total */
|
||||
int hDisp; /* Horizontal displayed */
|
||||
int hSyncStart; /* Horizontal sync start */
|
||||
int hSyncEnd; /* Horizontal sync end */
|
||||
int hFrontPorch; /* Horizontal front porch */
|
||||
int hSyncWidth; /* Horizontal sync width */
|
||||
int hBackPorch; /* Horizontal back porch */
|
||||
} GTF_hCRTC;
|
||||
|
||||
typedef struct {
|
||||
int vTotal; /* Vertical total */
|
||||
int vDisp; /* Vertical displayed */
|
||||
int vSyncStart; /* Vertical sync start */
|
||||
int vSyncEnd; /* Vertical sync end */
|
||||
int vFrontPorch; /* Vertical front porch */
|
||||
int vSyncWidth; /* Vertical sync width */
|
||||
int vBackPorch; /* Vertical back porch */
|
||||
} GTF_vCRTC;
|
||||
|
||||
/* Define the main structure for holding generated GTF timings */
|
||||
|
||||
typedef struct {
|
||||
GTF_hCRTC h; /* Horizontal CRTC paremeters */
|
||||
GTF_vCRTC v; /* Vertical CRTC parameters */
|
||||
char hSyncPol; /* Horizontal sync polarity */
|
||||
char vSyncPol; /* Vertical sync polarity */
|
||||
char interlace; /* 'I' for Interlace, 'N' for Non */
|
||||
double vFreq; /* Vertical frequency (Hz) */
|
||||
double hFreq; /* Horizontal frequency (KHz) */
|
||||
double dotClock; /* Pixel clock (Mhz) */
|
||||
} GTF_timings;
|
||||
|
||||
/* Define the structure for holding standard GTF formula constants */
|
||||
|
||||
typedef struct {
|
||||
double margin; /* Margin size as percentage of display */
|
||||
double cellGran; /* Character cell granularity */
|
||||
double minPorch; /* Minimum front porch in lines/chars */
|
||||
double vSyncRqd; /* Width of V sync in lines */
|
||||
double hSync; /* Width of H sync as percent of total */
|
||||
double minVSyncBP; /* Minimum vertical sync + back porch (us) */
|
||||
double m; /* Blanking formula gradient */
|
||||
double c; /* Blanking formula offset */
|
||||
double k; /* Blanking formula scaling factor */
|
||||
double j; /* Blanking formula scaling factor weight */
|
||||
} GTF_constants;
|
||||
|
||||
#define GTF_lockVF 1 /* Lock to vertical frequency */
|
||||
#define GTF_lockHF 2 /* Lock to horizontal frequency */
|
||||
#define GTF_lockPF 3 /* Lock to pixel clock frequency */
|
||||
|
||||
/*-------------------------- Function Prototypes --------------------------*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" { /* Use "C" linkage when in C++ mode */
|
||||
#endif
|
||||
|
||||
/* Generate a set of timings for a mode from the GTF formulas. This will
|
||||
* allow you to generate a set of timings by specifying the type as:
|
||||
*
|
||||
* 1. Vertical frequency
|
||||
* 2. Horizontal frequency
|
||||
* 3. Pixel clock
|
||||
*
|
||||
* Generally if you want to find the timings for a specific vertical
|
||||
* frequency, you may want to generate a first set of timings given the
|
||||
* desired vertical frequency, which will give you a specific horizontal
|
||||
* frequency and dot clock. You can then adjust the dot clock to a value
|
||||
* that is known to be available on the underlying hardware, and then
|
||||
* regenerate the timings for that particular dot clock to determine what
|
||||
* the exact final timings will be.
|
||||
*
|
||||
* Alternatively if you only have a fixed set of dot clocks available such
|
||||
* as on older controllers, you can simply run through the set of available
|
||||
* dot clocks, and generate a complete set of all available timings that
|
||||
* can be generated with the set of available dot clocks (and filter out
|
||||
* unuseable values say < 60Hz and > 120Hz).
|
||||
*/
|
||||
|
||||
void GTF_calcTimings(double hPixels,double vLines,double freq,int type,
|
||||
ibool wantMargins,ibool wantInterlace,GTF_timings *timings);
|
||||
|
||||
/* Functions to read and write the current set of GTF formula constants.
|
||||
* These constants should be left in the default state that is defined
|
||||
* by the current version of the GTF specification. However newer DDC
|
||||
* monitos that support the GTF specification may be able to pass back a
|
||||
* table of GTF constants to fine tune the GTF timings for their particular
|
||||
* requirements.
|
||||
*/
|
||||
|
||||
void GTF_getConstants(GTF_constants *constants);
|
||||
void GTF_setConstants(GTF_constants *constants);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* End of "C" linkage for C++ */
|
||||
#endif
|
||||
|
||||
#endif /* __GTF_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue